文件系统入门知识

一、文件系统类型

文件根据其是否支持“日志(journal)”功能可分为两类:

有日志:ext3, ext4, xfs

无日志:ext2

小贴士:日志文件系统:

一种文件系统,指在文件系统发生变化时,先把相关的信息写入一个被称为日志的区域,然后再把变化写入主文件系统的文件系统。在文件系统发生故障(如内核崩溃或突然停电)时,日志文件系统更容易保持一致性,并且可以较快恢复。

二、虚拟文件系统

虚拟文件系统也成为VFS。

VFS存在的意义:

1.向上,对应用层提供一个标准的文件操作接口;

2.对下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上;

3.VFS内部则通过一系列高效的管理机制,比如inode cache, dentry cache 以及文件系统的预读等技术,使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;

4.此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单。

VFS架构图

9cdc53c43946406a.png

三、文件系统的组成

文件系统管理分两部分组成:

文件系统内核模块:如 ext4, xfs, vfat...

文件系统管理工具:如 mkfs.ext4, mkfs.xfs,mkfs.vfat...

查看当前系统支持的文件系统类型

[root@CentOS6 ~]# cat /proc/filesystems  nodev   sysfs nodev   rootfs nodev   bdev nodev   proc ... 四、文件系统选择

1、大量小文件(LOSF, Lost of small files)I/O应用(如小图片)

Reiserfs(首选), Ext4文件系统适合这类负载特征,IO调度算法选择deadline,block size = 4096, ext4关闭日志功能。

2、大文件I/O应用(如视频下载、流媒体)

EXT4文件系统适合此类负载特征,IO调度算法选择anticipatory, block size = 4096, 关闭日志功能,启用extent(default)。

3、SSD文件系统选择

EXT4/Reiserfs可以作为SSD文件系统,但未对SSD做优化,不能充分发挥SSD性能,并影响SSD使用时间。 Btrfs对SSD作了优化,mount通过参数启用。但Btrfs仍处于实验阶段,生产环境谨慎使用。

五、创建与管理文件系统

1.mkfs命令

格式:

mkfs -t <ext4|xfs|btrfs|vfat> /dev/DEVICE

常用选项:

-t FS_TYPE:指定文件系统类型 -L LABEL:指定卷标名称

实例:

[root@bash ~]# mkfs -t ext4 -L "YOUNG" /dev/sdb mke2fs 1.42.9 (28-Dec-2013) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label=YOUNG OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242880 blocks 262144 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2153775104 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks:          32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,          4096000 Allocating group tables: done                            Writing inode tables: done                            Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done

2.mkfs.FS_TYPE命令

格式:

mkfs.FS_TYPE /dev/DEVICE

实例:

[root@bash ~]# mkfs.ext4 /dev/sdb mke2fs 1.42.9 (28-Dec-2013) /dev/sdb is entire device, not just one partition! Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) ...

3.mke2fs命令

mke2fs专用于ext系列文件系统的创建于管理。

常用选项:

-t {ext2|ext3|ext4}:指定文件系统 -b {1024|2048|4096}: 指定块大小 -L LABEL:卷标,即分区名称 -j: 相当于“mke2fs -t ext3”     mkfs -t ext3 = mke2fs -t ext3 = mke2fs -j = mke2fs -O has_journal -i #: 为数据空间中的每多少字节创建一个inode;此字节数不应该小于块大小;比例关系; -I: 一个inode记录大小128---4096 -N #:直接指定元数据区有多少个inode; -m #: 指定为管理预留管理空间占据总空间的百分比;默认为5% -O FEATURE[,...]:指定启用分区的某特殊特性 -O ^FEATURE:关闭指定特性     -O has_journal:启用日志     -O ^has_journal:关闭关闭

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14360.html