热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【读书笔记】Linux命令行与Shell脚本编程大全管理文件系统

文章目录1.探索Linux文件系统1.2基本的Linux文件系统--extext2(先将数据直接写入存储设备再更新索引节点表的做法)1.3日志文件系统--先将文件的更改写入到临时文

文章目录

  • 1.探索Linux文件系统
    • 1.2 基本的Linux文件系统--ext/ext2(先将数据直接写入存储设备再更新索引节点表的做法)
    • 1.3 日志文件系统--先将文件的更改写入到临时文件
    • 1.4 写时复制(COW)文件系统--解决安全性和性能之间的尴尬
  • 2.操作文件系统
    • 2.1 创建分区--fdisk(交互式程序)
    • 2.2 创建文件系统
    • 2.3 文件系统的检查与修复--fsck
  • 3.逻辑卷管理--LVM
    • 3.1 逻辑卷管理布局
    • 3.2 Linux中的LVM
    • 3.3 使用Linux LVM


1.探索Linux文件系统

Linux的文件系统为我们在硬盘中存储的0和1和应用中使用的文件与目录之间搭建起了一座桥梁


1.2 基本的Linux文件系统–ext/ext2(先将数据直接写入存储设备再更新索引节点表的做法)
























文件系统全名相关概念特点
extextended filesystem
扩展文件系统
1.它为Linux提供了一个基本的类Unix文件系统:使用虚拟目录来操作硬件设备,
在物理设备上按定长的块来存储数据。
2.ext文件系统采用名为索引节点的系统来存放虚拟目录中所存储文件的信息。
3.索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件的信息。
4.存储在虚拟目录中的每一个文件在索引节点表中都有一个条目。
1.文件不能超过2GB。
2.碎片化严重。
3.系统崩溃或断电时损坏。
ext2extended filesystem2/扩展文件系统升级版1.结构同ext。
2.扩展了索引节点表的格式来保存系统上每个文件的更多信息。
3.通过按组分配磁盘块来减轻碎片化。
1.文件大小不超过2TB(后期版本增加到32TB)。
2.系统崩溃或断电时损坏。

ext文件系统名称中的extended部分来自其跟踪的每个文件的额外数据,包括如下:



  1. 文件名

  2. 文件大小

  3. 文件的属主

  4. 文件的属组

  5. 文件的访问权限

  6. 指向存有文件数据的每个硬盘块的指针

ps:
Linux通过唯一的数值(称作索引节点号)来引用索引节点表中的每个索引节点,这个值是创建文件时由文件系统分配的。
文件系统通过索引节点号而不是文件全名及路径来标识文件。

Q:何为碎片化?
A:ext文件系统常见的问题是在文件写入到物理设备时,存储数据用的块很容易分散在整个设备中(称作碎片化,fragmentation)。


1.3 日志文件系统–先将文件的更改写入到临时文件

节点知识点:参考自:日志的三个级别

日志的三个级别(书里写的关于回写和顺序两种模式不同的更细节的解释)
在很多日志文件系统(如:ext3, ReiserFS)中,可以选择三个级别的日志:回写(writeback)、顺序(ordered)和数据(data)。在回写模式中,只有元数据被记录到日志中,数据被直接写入主文件系统。这种模式提供较好的性能,但有较大的风险。例如,在增大文件时,数据还未写入就发生崩溃,那么文件系统恢复后文件后面就可能出现垃圾数据。在顺序模式中,只有元数据被记录到日志中,但在日志被标记为提交前,数据会被写入文件系统。在这种模式下,如果在增大文件时,数据还未写入就发生崩溃,那么在恢复时这个事务会被简单的撤销,文件保持原来的状态。在数据模式中,元数据和文件内容都先被写入日志中,然后在提交到主文件系统。这提高了安全性,但损失性能,因为所有数据要写入两次[1]。在这种模式下,如果在增大文件时,发生崩溃,那么可能有两种情况:日志完整:这时事务会被重新执行,修改会被提交到主文件系统
日志不完整:这时主文件系统还未被修改,只需要简单放弃这个事务

日志文件系统为Linux系统增加了一层安全性
它不再使用之前先将数据直接写入存储设备再更新索引节点表的做法,而是先将文件的更改写入到临时文件(称作日志,journal)中。在数据成功写到存储设备和索引节点表之后,再删除对应的日志条目。
在这里插入图片描述
ps:



  1. 数据模式日志方法是目前为止最安全的数据保护方法,但同时也是最慢的。

  2. 所有写到存储设备上的数据都必须写两次:第一次写入日志,第二次写入真正的存储设备。这样会导致性能很差,尤其是对要做大量数据写入的系统而言。










































文件系统全名相关概念特点
ext3extended filesystem3
扩展文件系统3
1.采用和ext2文件系统相同的索引节点表结构,但给每个存储设备增加了一个日志文件,以将准备写入存储设备的数据先记入日志。
2.无法恢复误删的文件。
3.不支持加密文件。
ext4extended filesystem4
扩展文件系统4
ext4文件系统还支持一个称作区段(extent)的特性。区段在存储设备上按块分配空间,但在索引节点表中只保存起始块的位置。由于无需列出所有用来存储文件中数据的数据块,它可以在索引节点表中节省一些空间
2.ext4还引入了块预分配技术(block preallocation)。如果你想在存储设备上给一个你知道要变大的文件预留空间,ext4文件系统可以为文件分配所有需要用到的块,而不仅仅是那些现在已经用到的块。ext4文件系统用0填满预留的数据块,不会将它们分配给其他文件。
1.受Linux官方内核支持,大多数流行的Linux发行版采用的默认文件系统。
2.支持数据加密和压缩。
ReiserFS1:可以在线调整已有文件系统的大小。
2.尾部压缩(tailpacking)的技术,该技术能将一个文件的数据填进另一个文件的数据块中的空白空间。如果你必须为已有文件系统扩容来容纳更多的数据,在线调整文件系统大小功能非常好用。
1.只支持回写日志模式——只把索引节点表数据写到日志文件。
2.最快的日志文件系统之一。
JFSJournaled File System
日志化文件系统
1:有序日志方法:即只在日志中保存索引节点表数据,直到真正的文件数据被写进存储设备时才删除它。
2:采用基于区段的文件分配,即为每个写入存储设备的文件分配一组块。这样可以减少存储设备上的碎片
1:除了用在IBM Linux上外,JFS文件系统并没有流行起来。
XFS1:在线调整文件系统的大小,只能扩大不能缩小
2:采用回写模式的日志,因为实际数据并未存进日志文件,具有一定风险。

1.4 写时复制(COW)文件系统–解决安全性和性能之间的尴尬

采用了日志式技术,就必须在安全性和性能之间做出选择
就文件系统而言,日志式的另一种选择是一种叫作写时复制(copy-on-write,COW)的技术。COW利用快照兼顾了安全性和性能。
关于COW的概念可参考Linux写时拷贝技术(copy-on-write)

如下介绍两种最流行的COW文件系统:


















文件系统特点
ZFS文件系统1.ZFS是一个稳定的文件系统,与Resier4、Btrfs和ext4势均力敌。
2.没有使用GPL许可,可能终无法成为Linux默认的文件系统。
Btrfs文件系统
B树文件系统
稳定性、易用性以及能够动态调整已挂载文件系统的大小。

2.操作文件系统


2.1 创建分区–fdisk(交互式程序)

fdisk工具用来帮助管理安装在系统上的任何存储设备上的分区。
要启动fdisk命令,你必须指定要分区的存储设备的设备名,另外还得有超级用户权限。
eg:sudo fdisk /dev/sdb

Q:如何找出安装在Linux系统中的物理磁盘
A:对于老式的IDE驱动器,Linux使用的是/dev/hdx。其中x表示一个字母,具体是什么要根据驱动器的检测顺序(第一个驱动器是a,第二个驱动器是b,以此类推)。对于较新的SATA驱动器和SCSI驱动器,Linux使用/dev/sdx。其中的x具体是什么也要根据驱动器的检测顺序(和之前一样,第一个驱动器是a,第二个驱动器是b,以此类推)。

ps:如果这是你第一次给该存储设备分区,fdisk会警告你设备上没有分区表。

fdisk命令参数详解如下:










































































命令描述
a设置活动分区标志
b编辑BSD Unix系统用的磁盘标签
c设置DOS兼容标志
d删除分区
l显示可用的分区类型
m显示命令选项
n添加一个新分区
o创建DOS分区表
p显示当前分区表
q退出,不保存更改
s为Sun Unix系统创建一个新磁盘标签
t修改分区的系统ID
u改变使用的存储单位
v验证分区表
w将分区表写入磁盘
x高级功能

2.2 创建文件系统

在Linux系统中,要将数据存储到分区,必须在这之前使用某种文件系统对其进行格式化
每种文件系统类型都用自己的命令行程序来格式化分区。如下表所示:
在这里插入图片描述
ps:
Q:如何知道本系统中是否安装了需要的文件系统工具?
A:可使用type命令。如:type mkfs.ext4


2.3 文件系统的检查与修复–fsck

fsck命令能够检查和修复大部分类型的Linux文件系统,包括ext、ext2、ext3、ext4、ReiserFS、JFS和XFS。该命令的格式是:fsck options filesystem
文件系统可以通过设备名、在虚拟目录中的挂载点以及分配给文件系统的唯一UUID值来引用。
在这里插入图片描述
notice:只能在未挂载的文件系统上运行fsck命令。


3.逻辑卷管理–LVM

Q:如何将另外一个硬盘上的分区加入已有文件系统,动态地添加存储空间
A:使用Linux逻辑卷管理器(logical volume manager,LVM)软件包。它可以无需重建整个文件系统的情况下,轻松地管理磁盘空间。


3.1 逻辑卷管理布局

逻辑卷管理的核心在于如何处理安装在系统上的硬盘分区。
在逻辑卷管理的世界里,硬盘称作物理卷(physical volume,PV)。
每个物理卷都会映射到硬盘上特定的物理分区。
多个物理卷集中在一起可以形成一个卷组(volume group,VG)。
整个结构中的最后一层是逻辑卷(logical volume,LV)。
Linux系统将逻辑卷视为物理分区
下图展示了典型Linux逻辑卷管理环境的基本布局:
在这里插入图片描述
notice:第三个物理硬盘有一个未使用的分区,通过逻辑卷管理,可以轻松地将这个未使用分区分配到已有卷组:要么用它创建一个新的逻辑卷,要么在需要更多空间时用它来扩展已有的逻辑卷


3.2 Linux中的LVM

LVM允许在Linux上用简单的命令行命令管理一个完整的逻辑卷管理环境。


















版本说明
LVM1只能用于Linux内核2.4版本。仅提供了基本的逻辑卷管理功能
LVM2可用于Linux内核2.6版本。在标准的LVM1功能外提供了额外的功能

LVM2额外的功能如下所示:



  1. 快照:允许在逻辑卷在线的状态下将其复制到另一个设备。

  2. 条带化:可跨多个物理硬盘创建逻辑卷。

  3. 镜像:镜像是一个实时更新的逻辑卷的完整副本。

ps:
LVM条带化不同于RAID条带化。LVM条带化不提供用来创建容错环境的校验信息。事实
上,LVM条带化会增加文件因硬盘故障而丢失的概率。单个硬盘故障可能会造成多个逻
辑卷无法访问。


3.3 使用Linux LVM

下面介绍使用Linux LVM的一般步骤。具体请参考该书8.3.3章节。



  1. 定义物理卷; fdsik->pvcreate pvdisplay

  2. 创建卷组;vgcreate vgdisplay

  3. 创建逻辑卷;lvcreate lvdisplay

  4. 创建文件系统;

  5. 修改LVM。

Linux LVM的好处是在于能够动态修改文件系统,有下表如下操作命令来支持。
在这里插入图片描述
notice:

在手动增加或减小逻辑卷的大小时,要特别小心。逻辑卷中的文件系统需要手动修整来处理大小上的改变。
大多数文件系统都包含了能够重新格式化文件系统的命令行程序,比如用于ext2、ext3和ext4文件系统的resize2fs程序。

申明:文中没特殊注明,图皆来自Linux命令行与shell脚本编程大全<第三版>。


推荐阅读
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 怎么解决oracle提示框显示不全问题
    这篇文章主要介绍“怎么解决oracle提示框显示不全问题”,在日常操作中,相信很多人在怎么解决oracle提示框显示不全问题问题上存在疑惑,小编查阅 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
author-avatar
主宰魔尊_164
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有