一.常用的文件系统
1.1扩展文件系统
ext文件系统,它为Linux提供了一个基本的类Unix文件系统:使用虚拟目录来操作硬件设备,在物理设备上按定长的块(block)来存储数据。采用名为索引节点(inode)的系统来存放虚拟目录中所存储文件的信息。索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表inodetable)来存储这些文件的信息。
Linux通过唯一的数值(称作索引节点号)来引用索引节点表中的每个索引节点,这个值是创建文件时由文件系统分配的。文件系统通过索引节点号而不是文件全名及路径来标识文件。
ext2文件系统在ext基础上,扩展了索引节点表的格式来保存系统上每个文件的更多信息;。ext文件系统常见的问题是在文件写入到物理设备时,存储数据用的块很容易分散在整个设备中(称作碎片化),ext2通过按组分配磁盘块,减轻了碎片化。
但ext2存在的问题是,当文件写入物理设备后,若停电崩溃,索引表未更新,无法找到文件,因此引入日志文件系统。
1.2日志文件系统
它不再使用之前先将数据直接写入存储设备再更新索引节点表的做法,而是先将文件的更改写入到临时文件(称作日志)中。在数据成功写到存储设备和索引节点表之后,再删除对应的日志条目。
Linux中有3种广泛使用的日志方法,每种的保护等级都不相同。
常见的日志文件系统还有ext3,ext4,Reiser,JFS,XFS等。
1.3写时复制文件系统
采用了日志式技术,你就必须在安全性和性能之间做出选择。COW(copy-on-write)利用快照兼顾了安全性和性能。如果要修改数据,会使用克隆或可写快照。修改过的数据并不会直接覆盖当前数据,而是被放入文件系统中的另一个位置上。即便是数据修改已经完成,之前的旧数据也不会被重写。
当前常用的两种COW文件系统:ZFS,Btrf文件系统。
二.文件系统操作
2.1创建分区
要创建分区才能容纳文件系统,分区可以是整个硬盘,也可以是一部分,fdisk命令可以管理分区,这是一个交互式的工具,启动前要指定要分区的存储设备的设备名,另外要有root权限。
如何找到linux中的物理磁盘?
Linux采用了一种标准格式来为硬盘分配设备名称,老式的IDE驱动器,路径为/dev/hdx,x表示一个字母(第一个驱动器为hda,第二个为hdb等等);另一种新式的路径是/dev/sdx(x代表的含义同上)。
sudo可以暂时切换到超级用户权限:
sudo fdisk /dev/sdx
进入fdisk的交互式命令后,输入字母执行操作,常见的操作如下:
输入 | 功能 |
---|---|
p | 显示存储设备的详细信息 |
n | 创建新分区 |
w | 将更改保存到存储设备上 |
分区可以按主分区(primary partition)或扩展分区(extended partition)创建。主分区(C盘)可以被文件系统直接格式化,而扩展分区(D,E…)则只能容纳其他主分区①。扩展分区出现的原因是每个存储设备上只能有4个分区。可以通过创建多个扩展分区,然后在扩展分区内创建主分区进行扩展。
2.2创建文件系统
在将数据存储到分区之前,你必须用某种文件系统对其进行格式化,这样Linux才能使用它。
可以使用文件系统工具,但不是所有工具都安装了,要查看是否安装,可以用type命令。
为分区创建了文件系统之后,下一步是将它挂载到虚拟目录下的某个挂载点。
sudo mkdir /mnt/my_partition
sudo mount -t ext4 /dev/sdb1 /mnt/my_partition
mkdir命令在虚拟目录中创建了挂载点,mount命令将新的硬盘分区添加到挂载点。mount命令的-t选项指明了要挂载的文件系统类型(ext4)。
2.3文件系统的检查与修复
每个文件系统都有各自可以和文件系统交互的恢复命令,fsck命令能够检查和修复大部分类型的Linux文件系统。
格式:fsck options filesystem
**只能在未挂载的文件系统上运行fsck命令。对大多数文件系统来说,你只需卸载文件系统来进行检查,检查完成之后重新挂载。**但因为根文件系统含有所有核心的Linux
命令和日志文件,所以你无法在处于运行状态的系统上卸载它。在存储设备分区上直接创建文件系统的一个限制因素是,如果硬盘空间用完了,无法轻易地改变文件系统的大小。但Linux支持逻辑卷管理。这是一种跨多个存储设备创建虚拟分区的方法。这种方法可以轻松地扩展一个已有文件系统,而不用完全重建。
三.逻辑卷管理
3.1逻辑卷管理布局
硬盘称作物理卷(PV)。每个物理卷都会映射到硬盘上特定的物理分区。多个物理卷集中在一起可以形成一个卷组(VG)。逻辑卷管理系统将卷组视为一个物理硬盘。
逻辑结构如下图:
Linux系统将每个逻辑卷视为一个物理分区。每个逻辑卷可以被格式化成ext4文件系统,然后挂载到虚拟目录中某个特定位置。
3.2Linux LVM简介
LVM可以在Linux上用简单的命令行命令管理一个完整的逻辑卷管理环境。
除了标准的逻辑卷管理功能之外,还有一些特殊的功能。
1.快照
最初的Linux LVM允许你在逻辑卷在线的状态下将其复制到另一个设备。LVM2允许你创建在线逻辑卷的可读写快照。有了可读写的快照,就可以删除原先的逻辑卷,然后将快照作为替代挂载上。
2.条带化
条带化可跨多个物理硬盘创建逻辑卷,当Linux LVM将文件写入逻辑卷时,文件中的数据块会被分散到多个硬盘上。每个后继数据块会被写到下一个硬盘上。可以提高读取效率,但是,单个硬盘故障,文件无法读取,G。
3.镜像
镜像是一个实时更新的逻辑卷的完整副本。当你创
建镜像逻辑卷时,LVM会将原始逻辑卷同步到镜像副本中,需要较长时间,之后的每次读写,都会写入两次。
3.3Linux LVM的使用
1.定义物理卷
第一步就是利用fdisk将硬盘上的物理分区转换成Linux LVM使用的物理卷区段,需要t命令来改变分区类型为8e。与之前ID83类似,8e指的是LVM系统的一部分,最后输入m命令保存设置。
下一步用分区来创建实际的物理卷
** sudo pvcreate /dev/sdb1**
pvcreate命令定义了用于物理卷的物理分区,它将分区标记成Linux LVM系统中的分区。
pvdisplay命令来显示已创建的物理卷列表,用来获取进度。
2.创建卷组
使用vgcreate命令从命令行创建卷组。
**sudo vgcreate Vol1 /dev/sdb1 **
这条命令使用了sdb1分区上的物理卷,创建了一个名为Vol1的卷组。
3.创建逻辑卷
Linux系统会像处理物理分区一样处理逻辑卷,允许你定义逻辑卷中的文件系统,然后将文件系统挂载到虚拟目录上。
lvcreate命令用于创建逻辑卷。
sudo lvcreate -l 100%FREE -n lvtest Vol1
l参数指定了逻辑卷的大小,n参数指定了逻辑卷的新名字。
常用的即为大小和名称两种参数。
lvdisplay可以查看逻辑卷的详细情况。
4.创建文件系统
sudo mkfs.ext4 /dev/Vol1/lvtest
创建文件系统后,将其挂载到虚拟目录中。
sudo mount /dev/Vol1/lvtest /mnt/my_partition
5.控制LVM环境
在手动增加或减小逻辑卷的大小时,要注意逻辑卷中的文件系统需要手动修整来处理大小上的改变。