一:概述
Linux系统把每个硬件都当做是一个文件,这样用户就可以用读写文件的方式实现对硬件的访问了。文件系统基于操作系统,它可以管理和组织保存在磁盘驱动器上的数据。通过文件系统,实现数据的完整性,保证读写数据的一致性,同时也实现了读写数据简单化。
二:Linux中的主要文件系统以及创建方法
使用disk之类的命令创建分区之后,要想使分区可用,还需要在该分区中创建一个文件系统。Linux中有各种文件系统,CentOS中默认的文件系统是xfs,Ubuntu的默认文件系统是xe4。
Linux系统支持多种文件系统如DOS文件类型msdos、Windows中的FAT系列和NTFS、光盘文件系统ISO-9660、单一文件系统ex2和日志文件系统ext3等。Linux系统中可以同时存下不同德文件系统,不同文件系统有不同的特点,根据存储设备的硬件特性、系统需求等有不同的应用场合。下面是常见的几种文件系统:
- FAT:早期的文件系统。随着存储技术的发张,FAT已将不能满足用户的需要,后续还出现了FAT6、FAT32等。尽管FAT已经不是Windows的默认文件系统了,但是在U盘和嵌入式设备还是比较常见的。
- NTFS:由微软开发的专用系统文件系统,相当于FAT,NTFS增加了许多的高级功能,例如增强的安全控制、日志功能等。
- ext2/ext3/ext4:ext是Linux的标准文件系统,支持无限数量的子目录,改进了日志校验,支持更多的扩展属性。
Linux系统中可用的主要文件系统以及它们的最大文件系统值和最大文件值如下表所示:
文件系统 | 最大文件系统值 | 最大文件值 |
xfs | 8EiB | 8EiB |
ext3 | 16TiB | 2TiB |
ext4 | 1EiB | 16TiB |
brtfs | 16EiB | 16EiB |
下面先来说一下CentOS中默认的文件系统xfs,xfs是一种高级文件系统,可以处理大容量文件,并且可以与文件系统并行处理。xfs通过分布处理磁盘请求、定位数据和保存缓存的一致性来提供对文件系统数据的低延迟、高宽带访问。xfs文件系统的主要特征如下:
- 日志记录功能:xfs使用一种高效的磁盘格式记录元数据的变动,它允许将日志文件存储在另一块设备上。xfs优秀的结构算法,极大的缩小了日志记录对文件操作系统的影响,同时保证了性能和安全。
- 可扩展性:xfs支持强大的超大容量的存储空间,支持特大数量的目录,可以快速搜索和分配空间,文件系统的性能不受目录文件中数目的限制。
- 快速写入性能:能以接近裸设备I/O的性能存储数据,具有高吞吐量。xfs中主要元素有分配组、超级快、i节点等,这些元素的含义如下:
- 分配组:可以将分配组看做是独立的独立的文件系统,每个文件系统都有自己的空间和管理文件的信息。xfs文件系统通过将它们分成多个大小相等的分配组来创建,最小的分配组为16MB,最大的分配组为1TB.
- 超级块:管理与整个文件系统有关的信息,例如可用空间和索引节点的总数。第一个分配组的超级快是主要的,第二个以及后续分配的超级块是备用的。
- 块:块是存储元数据的单元,元数据是文件管理信息,也可以作为文件实体的数据。一个块的默认大小为4096字节,空闲块由B+tree管理。
- i节点(索引节点):i节点存储属性信息,例如文件的所有者、权限、创建日期和时间以及存储文件数据的编号。i节点的默认大小为256字节,i节点有B+tree管理,每64个i节点的第一个i节点数是关键,后续创建文件系统是根据需要以64为增量进行添加。
- 扩展:扩展盘区是一个或多个连续文件系统快,可以根据头块的数量和与其相邻的块数连续访问它们,从而提高文件系统的性能。对于使用扩展的文件,信息将写入到i节点。
这些元素的主要关系如下图所示:
使用mkfs.xfs命令可以创建xfs文件系统。
格式:mkfs.xfs [选项] 设备名称
它的常用选项如下表所示:
选项 | 说明 |
-b | 指定块大小,默认值为4096字节,最小值为512字节,最大值为65536字节 |
-d | 指定数据参数。agcount=值:指定要创建的分配组数量;agsize=值:指定要创建的分配组大小;分配组最小值为16MiB,最大值为1TiB |
-f | 允许覆盖。当检测到现有文件系统时,不允许覆盖 |
-i | 指定索引节点参数,例如要创建的索引节点大小为size=value:指定索引节点的大小。默认值为256字节,最小值为256字节,最大值为2048字节 |
-L | 创建后,可以使用xfs_admin命令进行设置文件系统规范,最多12个字符 |
使用mkfs.xfs命令创建xfs文件系统,指定-f之后,即使已经创建了文件系统,也会被覆盖。创建文件系统时,命令行的执行会在短时间内完成,然后在需要i节点的时候i,以64为增量追加i节点。
三:ext文件系统
ext也是Linux标准的文件系统,专门为Linux内核设计的第一个文件系统;接着是ext2,它是Linux系统中的标准文件系统;ext3是在ext2的基础上增加日志形成ext的文件系统;ext4是Linux中第四代扩展日志文件系系统,是ext3文件系统的后继版本。ext4有很多非常先进的功能,在ext4中,性能也得到了极大的提升,包括对大文件操作的优化、快速检查扫描功能等。ext、ext2、ext3、ext4文件系统的具体说明如下表所示:
文件系统 | 最大文件值 | 最大文件系统值 | 说明 |
ext | 2GiB | 2GiB | 带有扩展Minix文件系统的早期Linux文件系统,2.1.21之后的内核不支持 |
ext2 | 2TiB | 32TiB | 从ext扩展的功能:可变块大小、3中时间戳(ctime、mtime、atime)、通过位图进行块和i节点管理、分组介绍 |
ext3 | 2TiB | 32TiB | 向ext2增加了日记功能等,向后兼容ext2 |
ext4 | 16TiB | 1EiB | 从ext2/ext3扩展功能:通过extent改进性能、纳秒级时间戳、碎片整理功能。向后兼容ext2/ext3 |
ext2/ext3文件系统最大支持2TiB的文件大小,有直接映射、间接映射、双重间接映射、三重间接映射作为数据块指针。由于数据结构与ext2相同,ext3与ext2向后兼容。
ext2文件系统一般由超级块、块组、块组描述符组成,ext2使用i节点来记录信息。ext3是一种日志文件系统,在ext2的基础上增加了一个特殊的i节点,即日志记录功能,用于记录文件系统元数据或各种操作变化。
在ext2和ext3中,使用大文件间接映射块会导致性能降低。ext4使用扩展解决了这一问题,并且扩区与第一个块相连。它允许访问有关块的数的信息,而无需引用每个块的间接映射。
完成磁盘分区之后,用户可以在分区中创建文件系统。Linux系统中提供了mkfs或mke2fs命令创建ext2、ext3、ext4文件系统。
格式:mkfs [选项] 设备名称
mkfs命令的常用选项是-t,用于指定文件系统的类型。如果在未指定-t选项的情况下,执行mkfs.ext2命令表示创建ext2文件系统。mkfs命令指定的文件系统的类型如下表所示:
命令行 | 命令执行 | 要创建的文件系统 |
mkfs | mkfs.ext2 | ext2 |
mkfs -j | mkfs.ext2 -j | ext3 |
mkfs -t ext2 | mkfs.ext2 | ext2 |
mkfs -t ext3 | mkfs.ext3 | ext3 |
mkfs -t ext4 | mkfs.ext4 | ext3 |
mkfs.ext2、mkfs.ext3、mkfs.ext4被硬件连接到mke2fs命令,用户可以通过指定-v选项执行mkfs命令检查要执行的命令和选项,如下图所示。执行结果中显示要执行的命令未mkfs.ext2 -j /dev/sdb1。
使用mkefs2命令可以创建ext2、ext3、ext4文件系统,如果用户想要在分区中创建一个ext3文件系统,需要指定-t ext3或-j选项。
格式:mkfe2fs [选项] 设备名称
mke2fs命令的选项以及说明如下表所示:
选项 | 说明 |
-b | 以字节为单位指定块大小,可以指定1024、2048、4096 |
-j | 添加日志并创建ext3文件系统 |
-f | 指定磁盘碎片大小 |
-i | 指定每个索引节点的字节数,默认在/etc/mke2fs.conf中设置 |
-t | 指定要创建的文件系统类型 |
-c | 创建文件系统之前检查环的块 |
-o | 指定其他的功能 |
-m | 指定保留块的百分比,默认值为5% |
-l | 指定索引结点的大小 |
mk22fs命令的配置文件为/etc/mke2fs.conf,mke2fs命令引用该配置文件设置默认值并添加函数创建文件系统。使用more命令查看/etc/mkesfs.conf配置文件如下图所示。该文件主要配置了mke2fs命令默认选项,在执行mke2fs命令时,如果没有指定某个选项,会从该文件中获取。
使用mke2fs命令在sdb1分区中创建ext3文件系统。可以看到一系列的效果。由于没有创建磁盘分区,所以这里就不演示这个了。