一、文件系统类型
文件根据其是否支持“日志(journal)”功能可分为两类:
有日志:ext3, ext4, xfs
无日志:ext2
小贴士:日志文件系统:
一种文件系统,指在文件系统发生变化时,先把相关的信息写入一个被称为日志的区域,然后再把变化写入主文件系统的文件系统。在文件系统发生故障(如内核崩溃或突然停电)时,日志文件系统更容易保持一致性,并且可以较快恢复。
二、虚拟文件系统虚拟文件系统也成为VFS。
VFS存在的意义:
1.向上,对应用层提供一个标准的文件操作接口;
2.对下,对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便的移植到Linux上;
3.VFS内部则通过一系列高效的管理机制,比如inode cache, dentry cache 以及文件系统的预读等技术,使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;
4.此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单。
VFS架构图:
三、文件系统的组成文件系统管理分两部分组成:
文件系统内核模块:如 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: done2.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:关闭关闭