Ext3和Ext4文件系统

时间:2022-10-25 15:10:07
一.ext3和ext4的区别:
 
1.与Ext3兼容:执行若干条命令,就能将Ext3在线迁移到Ext4,而无须重新格式化磁盘或者重新安装系统。原有Ext3数据结构照样保留,
Ext4作用于新数据,当然,整个文件系统因此也就获得了Ext4所支持的更大容量。
 
2.更大的文件系统和更大的文件:与Ext3目前所支持的最大16TB文件 系统的最大2TB文件相比,Ext4分别支持1EB的文件系统和16TB的文件。
 
3.无限的子目录:Ext3目前只支持32000个子目录,而Ext4支持无限数量的子目录。
 
4.Extents:Ext3采用间接块映射,当操作打文件的时候,效率极其低下。而Ext4引入了现代文件系统流行的Extents概念,每个extent为一组
连续的数据块,提高了不少的效率。
 
5.多块分配:当写入数据到Ext3文件系统的时候,Ext3的数据块分配器每次只能分配一个4KB的块,而Ext4支持一次调用分配多个数据块。
 
6.延迟分配:Ext3的数据块分配策略是尽快分配,而Ext4的策略是延迟分配,直到文件在cache中写完才开始分配数据块并写入磁盘,这样就能
优化整个文件的数据块分配。
 
7.快速fsck:Ext3执行fsck的时候需要去检查所有的inode,而Ext4将每个组的inode表中都添加了 一份未使用的inode列表,Ext4文件系统就可以
跳过它们而去检查那些在用的inode。
 
8.日志校验:Ext4的日志校验功能可以很方便的判断日志数据是否损坏。日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中
恢复数据会导致更多的数据损坏。
 
9.“无日志”模式:Ext4允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。
 
10.在线碎片整理:尽管延迟分配、多块分配和extents能有效减少文件系统的碎片,但碎片还是不可避免会产生。Ext4支持在线碎片整理,
并将提供e4defrag工具进行个别文件或整个文件系统的碎片整理。
 
11.inode相关特性:Ext3默认的inode大小为128字节,Ext4为了在inode中容纳更多的扩展属性,默认的inode大小为256字节,还支持快速扩展
属性和inode保留。
 
12.持久预分配:P2P软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时之内磁盘不足
导致失败。Ext4在文件系统层面实现了持久预分配并提供相应的API,比应用软件自己实现更有效率。
 
13.默认启用barrier:磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写commit记录,
若commit记录在先,而日志有损坏,那么就会影响数据完整性。Ext4默认开启barrier,只有当barrier之前的数据全部写入磁盘,才能写barrier之后的数据。
 
 
二.将文件系统从ext3升级为ext4:
 
1.测试场景:
查看文件系统
# df -T
Filesystem     Type      1K-blocks    Used  Available Use% Mounted on
/dev/vda1      ext4       41151808 5729784   33308592  15% /
devtmpfs       devtmpfs    1933380       0    1933380   0% /dev
tmpfs          tmpfs       1941700       0    1941700   0% /dev/shm
tmpfs          tmpfs       1941700   25000    1916700   2% /run
tmpfs          tmpfs       1941700       0    1941700   0% /sys/fs/cgroup
/dev/vdb       ext3     1056763060  278452 1002781136   1% /data
tmpfs          tmpfs        388340       0     388340   0% /run/user/0
现在需要将/dev/vdb升级为ext4
 
2.查看ext4特征是否激活:
#tune2fs -l /dev/vdb | grep extent
执行上述命令若没有返回值,说明/dev/vdb的ext4特征没有被激活,解决办法就是将文件系统升级为ext4
 
3.安装所需软件:
#yum -y install e2fsprogs
 
4.文件系统升级转换:
a.取消当前需要升级的磁盘的挂载:
#umount /dev/vdb
b.升级磁盘到ext4:
#tune2fs -O has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize /dev/vdb
c.修改转换文件系统错误:
#e2fsck -fDC0 /dev/vdb -y
d.修改/etc/fstab中的开机检测
#vi /etc/fstab
添加:
/dev/vdb /data ext4 defaults 0 0 
e.重新对磁盘进行挂载:
#mount -t ext4 /dev/vdb /data
f.检测是否升级成功:
#df -T
Filesystem     Type      1K-blocks    Used  Available Use% Mounted on
/dev/vda1      ext4       41151808 5729784   33308592  15% /
devtmpfs       devtmpfs    1933380       0    1933380   0% /dev
tmpfs          tmpfs       1941700       0    1941700   0% /dev/shm
tmpfs          tmpfs       1941700   25000    1916700   2% /run
tmpfs          tmpfs       1941700       0    1941700   0% /sys/fs/cgroup
/dev/vdb       ext4     1056763060  278464 1002781124   1% /data
tmpfs          tmpfs        388340       0     388340   0% /run/user/0