Linux文件系统管理-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

Linux文件系统管理

简介:

Linux支持的文件系统类型: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap(交换分区)

扩展:

Windows支持文件系统:Fat32、NTF

Unix: FFS, UFS, JFS2    
网络文件系统:NFS, CIFS     
集群文件系统:GFS2, OCFS2     
分布式文件系统:ceph, moosefs, mogilefs, GlusterFS, Lustre

Ext4

由于Ext4是Ext2、Ext3的改进版,所以这里直接介绍Ext4。Linux Kernel自2.6.28开始正式支持新的文件系统Ext4,它修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,主要有如下几点:

1、与Ext3兼容。支持无须重新格式化磁盘或重新安装系统就能直接从Ext3在线迁移至Ext4,原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。

2、支持更大的文件系统和更大的文件,Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB,EB=http://www.aliyun.com/zixun/aggregation/12560.html">1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

3、无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。

4. Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。

5. 多块分配。 当写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。

6. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。

8. 日志校验。 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

XFS

XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,是一种健壮的、优秀的以及功能丰富的文件系统,并且这种文件系统所具有的可伸缩性能够满足最苛刻的存储需求,它主要包含以下几点特性:

数据完全性

传输特性

可扩展性

传输带宽

它跟Ext3、Ext4一样属于日志型文件系统。日志文件系统是一种即使在断电或者是操作系统崩溃的情况下保证文件系统一致性的途径。

XFS的日志保存的是在更高层次上描述已进行的操作的“逻辑”实体。相比之下,“物理”日志存储每次事务中被修改的块。为了保证性能,日志的更新是异步进行的。当系统崩溃时,崩溃的一瞬间之前所进行的所有操作可以利用日志中的数据重做,这使得XFS能保持文件系统的一致性。XFS在挂载文件系统的同时进行恢复,恢复速度与文件系统的大小无关。对于最近被修改但未完全写入磁盘的数据,XFS保证在重启时清零所有未被写入的数据块,以防止任何有可能的、由剩余数据导致的安全隐患(因为虽然从文件系统接口无法访问这些数据,但不排除裸设备或裸硬件被直接读取的可能性)

BTRFS

由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshots of snapshots),内建磁盘阵列(RAID)支持,支持子卷(Subvolumes)的概念,允许在线调整文件系统大小

平台支持:OpenSUSE、Ubuntu、Red Hat Enterprise Linux 6、Debian、Arch Linux、

 

文件系统的组成部分:

           内核中的模块:ext4, xfs, vfat    
           用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat     

创建文件系统命令

1
2
3
4
5
6
7
8
9
10
11
mkfs命令
语法格式:mkfs [options] [-t type] [fs-options] device [size]
使用语法一:mkfs.FS_TYPE /dev/DEVICE
#mkfs.ext4 /dev/DEVICE #创建设备为ext4文件系统
#mkfs.xfs /dev/DEVICE   #创建设备为xfs文件系统
#mkfs.btrfs /dev/DEVICE  #创建设备为btrfs文件系统
#mkfs.vfat /dev/DEVICE  #创建设备为vfat文件系统
使用语法二:mkfs –t FS_TYPE /dev/DEVICE
#mkfs –t ext4 /dev/DEVICE  #创建设备为ext4文件系统
选项“-L” Label 设定文件系统标签
#mkfs –t ext4 –L “Mydata”/dev/DEVICE  #创建设备为ext4文件系统,标签为Mydata

mke2fs: Ext系统文件系统专用管理工具

常用选项:

1
2
3
4
5
6
7
8
9
 -t {ext2|ext3|ext4}    
 -b {1024|2048|4096}     
 -L 'LABEL'     
 -j: 相当于 -t ext3;mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3     
 -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;     
 -N #:为数据空间创建个多少个inode;     
 -m #: 为管理人员预留的空间占据的百分比;     
 -O FEATURE[,...]:启用指定特性     
 -O ^FEATURE:关闭指定特性

mkswap:创建交换分区

语法格式:mkswap [options] device [size]

blkid:块设备属性信息查看;  

1
2
3
4
5
6
语法格式:  blkid [OPTION]... [DEVICE]                    
-U UUID: 根据指定的UUID来查找对应的设备                     
-L LABEL:根据指定的LABEL来查找对应的设备
[root@localhost ~]# blkid /dev/sdb1  #以设备名查找    
/dev/sdb1: LABEL="testd" UUID="b097348b-0d0e-42d2-b687-ffcd32ef7554" TYPE="ext4"     
[root@localhost ~]# blkid -U b097348b-0d0e-42d2-b687-ffcd32ef7554  #以UUID查找/dev/sdb1  [root@localhost ~]# blkid -L testd   #以标签查找     /dev/sdb1

e2label:管理ext系列文件系统的LABEL

例如我们知道/dev/sdb1的标签为”testd“,我们把它修改为”mylable“

1
2
3
[root@localhost ~]# e2label /dev/sdb1 mylable    
[root@localhost ~]# blkid /dev/sdb1     
/dev/sdb1: LABEL="mylable" UUID="b097348b-0d0e-42d2-b687-ffcd32ef7554" TYPE="ext4"

tune2fs:重新设定ext系列文件系统可调整参数的值

常用选项:

1
2
3
4
5
6
7
8
-i interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]
-l:查看指定文件系统超级块信息;super block    
-L 'LABEL':修改卷标,功能类型于e2label     
-m #:修预留给管理员的空间百分比     
-j: 将ext2升级为ext3     
-O: 文件系统属性启用或禁用     
-o: 调整文件系统的默认挂载选项     
-U UUID: 修改UUID号;

例如我们将设备/dev/sdb1从ext2升级为ext3,命令如下:

1
2
3
4
5
[root@localhost ~]# tune2fs -j /dev/sdb1    
tune2fs 1.42.9 (28-Dec-2013)     
Creating journal inode: done     
[root@localhost ~]# blkid /dev/sdb1     
/dev/sdb1: UUID="17a6e508-5b46-45d8-9734-4fa180a9b7ea" SEC_TYPE="ext2" TYPE="ext3"

例如开机取消自检:     

1
2
tune2fs -l /dev/sdb1 grep -E ‘Maximum mount count:|Check interval’     
tune2fs -i 0 -c 0 /dev/sdb1

 Fsck 文件系统检测

语法格式:fsck.FS_TYPE 或者 fsck -t FS_TYPE

1
2
3
4
5
6
7
8
9
例如:加一个参数-f,让fsck对于没有错的档案也强行检测,它可以修复一些分区的轻微的错误
[root@localhost ~]# fsck.ext3 -f /dev/sdb1    
e2fsck 1.42.9 (28-Dec-2013)     
Pass 1: Checking inodes, blocks, and sizes     
Pass 2: Checking directory structure     
Pass 3: Checking directory connectivity     
Pass 4: Checking reference counts     
Pass 5: Checking group summary information     
/dev/sdb1: 11/327680 files (0.0% non-contiguous), 55935/1310720 blocks
1
2
3
4
加一个参数-r,交互式修复错误,在检测到硬件有错误,可以先进行判断后再执行操作,以免损坏数据
[root@localhost ~]# fsck.ext3 -r /dev/sdb1    
e2fsck 1.42.9 (28-Dec-2013)    
/dev/sdb1: clean, 11/327680 files, 55935/1310720 blocks









本文转自 Nico_Lv 51CTO博客,原文链接:http://blog.51cto.com/nearlv/1737609,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: