ext3文件系统和ext2文件系统的区别?
在某些时候,某个用户在linux系统上写入数据,这时系统正好断电或者系统核心出现错误,写入的数据仅有inode table和datablock而已,可能会导致之前写过的数据没有保存在磁盘上。而当系统重启后,系统可能会对没有保存的数据进行数据恢复。但是,由于系统并不知道是哪个文件不完整,因此会遍历整个文件系统中inode,来查看block是否完整。不过,当某个文件的数据太大时,数据的恢复时间可能会比较长,而这对于服务器来说是不利的。所以在这种情况下,也就诞生了日志文件系统。
日志文件系统的工作原理:在文件系统中,专门存在一块区域叫做日志记录区域,当某个文件的数据正在写入时,会将这个文件的inode写入到日志记录区中,然后在将实际数据写入到block中;如果此时断电导致数据没有保存,那么当系统重启后,系统就只会去日志记录区中查找那些不完整的文件的inode号,然后在专门对这些不完整的文件来进行数据恢复或者删除掉。如果是正常写入,那么就会将日志记录区域中的inode重新写入到元数据区中。
而在ext3文件系统中就含有日志文件系统,ext2文件系统中没有,这也就是ext3和ext2文件系统的根本区别所在。
在之前的文章中我们介绍了许多中文件系统,那么如何创建一个文件系统呢?
在创建一个文件系统前,首先磁盘要进行分区,得到多个分区后,在对每一个分区进行高级格式化,就得到了一个文件系统。所以说高级格式化分区的结果就是一个文件系统的产生。
创建文件系统使用mkfs命令
语法格式 mkfs [-t FSTYPE] 装置名
-t FSTYPE:指定文件系统类型
不过,mkfs是一个综合命令,可以来创建各种各样的文件系统,不过我们最常见的文件系统还是ext2/ext3文件系统,而linux系统中有一个专门的命令是用来创建ext2/ext3文件系统的,那就是
mke2fs命令。所以我们有必要掌握这个命令。
语法格式为:mke2fs [option] 装置名
-j:指定文件系统类型为ext3,默认文件系统类型为ext2
-b size:指定block大小,默认为4096Bytes,可以取值为1024Bytes,2048Bytes,4096Bytes
-L:指定分区卷标(也就是文件系统的名字)
-m #:指定预留给超级用户的块数百分比
-i #:指定多少个字节的空间创建一个inode号,默认为8192
-N #:指定inode的数量
-F:强制创建文件系统
-E:用户指定额外的文件系统属性
创建好了文件系统之后,可以使用blkid来查看指定分区的相关属性。
语法格式:
blkid 装置名 :用来查看指定分区的LABLE、UUID以及文件系统类型
当然还有另一个命令也可以开查看某个分区的卷标,那就是e2lable
语法格式:e2lable 装置名(必须写) : 用来查看或重新设定某个分区的卷标
当然创建了文件系统之后,如果想修改某个分区的属性,可以使用tune2fs来修改
tune2fs用来修改文件系统的属性
语法格式 tune2fs [option] 装置名(必须写)
-j:在不破坏原有数据的情况下,将ext2升级为ext3
-L LABLE:设定或修改分区卷标
-m #:调整预留超级用户的块数百分比
-r #:指定留给超级用户的块数
-o :设定默认挂载选项
-c #:指定文件系统挂载多少次以后进行自检,0或-1表示关闭此功能
-i #:指定每次挂载多少天之后进行自检,0或-1表示关闭此功能
-l :显示Superblock中的信息
要显示一个完整的文件系统的信息,使用dumpe2fs来查看
语法格式:
dumpe2fs 装置名:不加任何选项,表示显示文件系统的所有信息
dumpe2fs -h 装置名:只显示文件系统中Superblock的信息
在此之前提过,当linux系统在运作时,如果突然断电或者系统核心出现故障,都会导致我们的数据在硬盘和内存中不一致,有可能会导致文件系统的错乱。当文件系统错乱时,我们可以使用fsck命令来修复
语法格式:fsck [option] 装置名 用来检查并修复linux文件系统
-t FSTYPE:指定修复的文件系统的类型
-a:自动修复
另外e2fsck用来专门检查并修复ext2/ext3文件系统的
语法格式:e2fsck [option] 装置名
-p:自动修复
-f:强制检查
linux学习之路之磁盘管理和文件系统三,布布扣,bubuko.com