系统篇: ext4 文件系统

一、ext4文件系统

ext4:第四代扩展文件系统,是目前Linux发行版比较常用的文件系统。

特点:

在这里插入图片描述

上图简单介绍了ext4文件系统的布局:磁盘划分为分区,每个分区又划分为N个块组,在每个块组中,又根据块组的编号有不同的内部结构,Ext4文件系统主要使用块组0中的超级块和块组描述符表,在其他一些特定的块组中有超级块和块组描述符表的冗余备份。如果块组中不含冗余备份,那么块组就以数据块位图开始。当格式化磁盘成为ext4 文件系统的时候,mkfs 将在块组描述符表后面分配预留GDT表数据块(“Reverse GDT blocks”)以用来将来扩展文件系统。紧接在预留GDT表数据块后的是数据块位图与inode表位图,这两个位图分别表示本块组内的数据块与inode表的使用,inode表数据块之后就是存储文件的数据块了。

  • 大容量文件系统

在这里插入图片描述

  • 与ext3相比,ext4文件系统可支持最高1EB的分区与最大16TB的文件

  • 拓展了子目录的数量,理论上可以无限个

  • 与ext3相比,引入了块组的概念,提高了存取的效率

  • 预留空间、延迟获取空间,减少了文件的分散

  • 更详细的inodes,提高了系统的性能

  • 可以实现快速的文件系统检查

  • 提供日志校验和,提高了可靠性

参考链接:https://blog.csdn.net/a912952381/article/details/81050672

二、分割与格式化硬盘

1、添加分区

fdisk dev:

#对sda分区
fdisk /dev/sda
  • p、打印分区表
  • n、新建一个新分区
  • d、删除一个分区
  • q、退出不保存
  • w、把分区写进分区表,保存并退出

2、格式化分区

mkfs [-opt] -fstype dev:

  • -t:制定文件系统的类型 mkfs -t ext4 /dev/sda1 等价于 mkfs.ext4 /dev/sda
  • -F:强制格式化

3、挂载分区

mount [-opt] dev mountdir:

  • -t:指定档案系统的类型,通常不必指定。mount 会自动选择正确的类型
#将/dev/sda1以ext4类型挂载到/mnt/disk/disk1
mount -t ext4 /dev/sda1 /mnt/disk/disk1**

参考链接:

https://www.cnblogs.com/rosepotato/p/8177988.html

https://blog.csdn.net/tsz0000/article/details/85719204

https://www.runoob.com/linux/linux-comm-mount.html

三、查看硬盘或目录的容量

df:查看已挂载磁盘的总容量、使用容量与 inode 等等

du:查看档案使用掉的容量有多少

df [-opt]:

  • -i: 使用 i-nodes 显示结果
  • -k: 使用 KBytes 显示结果
  • -m: 使用 MBytes 显示结果

du [-opt] [dirname]:

  • -a :全部的档案与目录都列出来!默认值是只列出当前目录的值!
  • -b :列出的值以 bytes 输出
  • -c :最后加总 total
  • -k :列出的值以 KB 输出
  • -m :列出的值以 MB 输出
  • -s :只列出最后加总的值
四、检查与修复文件系统

fsck [-opt] dev:

  • -t : 给定档案系统的类型
  • -a : 如果检查有错则自动修复
  • -r : 如果检查有错则由使用者回答是否修复
  • -A : 对/etc/fstab 中所有列出来的 partition 做检查

参考链接:https://www.runoob.com/linux/linux-comm-fsck.html

五、自动挂载文件系统

当系统启动的时候,系统会自动地从/etc/fstab这个文件读取文件系统配置信息,并且会自动将此文件中指定的文件系统挂载到指定的目录:

在这里插入图片描述

  • : 要挂载的分区或存储设备(设备名称、UUID、label)

  • : 的挂载位置

  • : 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto,设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的

  • :挂载时使用的参数,注意有些mount 参数是特定文件系统才有的

  • :dump 会检查分区内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 ,0 表示忽略, 1 则进行备份

  • : fsck 读取 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1,其它所有需要被检查的设备从2开始向后顺序排列,可以同时并列,则同时检查

参考链接:https://blog.csdn.net/richerg85/article/details/17917129

六、同步内存和磁盘的文件

sync:强制将内存中的数据回写到硬盘中

七、坏块检测与修复

badblocks [-svw] [-b <区块大小>] [-o <输出文件>] [磁盘装置] [磁盘区块数] [结束区块数] [开始区块数]

#将坏块检测结果写入badblocks.txt文件中
badblocks -s -v /dev/sda1 > badblocks.txt

参数说明:

  • -b<区块大小> 指定磁盘的区块大小,单位为字节
  • -o<输出文件> 将检查的结果写入指定的输出文件
  • -s 在检查时显示进度
  • -v 执行时显示详细的信息
  • -w 在检查时,执行写入测试
  • [磁盘装置] 指定要检查的磁盘装置
  • [磁盘区块数] 指定磁盘装置的区块总数
  • [启始区块] 指定要从哪个区块开始检查

坏块的修复:

硬盘在使用时不能修复,否则可能存在写并发的问题,所以修复前需要umount对应分区(若为系统所在分区就没办法在线修复了,因为无法umount):

经过上面的扫描,我們得到了一个文件badblocks.txt:

16435904

sda1有1个坏块16435904,先用dd备份坏块:

dd if=/dev/sda1 bs=4096 skip=16435904 of=/tmp/15435904.dat count=1

用badblocks的写测试功能,对这些坏块进行重写(注意:-w写测试会覆盖数据,所以一定要备份):

badblocks -s -w /dev/sda1 16435904 16435904

对修复后的坏块重新检查:

badblocks -s -v /dev/sda1 16435904 16435904

如果前面的操作有成功的备份/tmp/15435904.dat,就把它写回(可选):

dd if=/tmp/15435904.dat of=/dev/sda1 seek=15435904 bs=4096 count=1

对分区重新检查:

badblocks -s -v /dev/sda1 > badblock.txt

若没有坏道说明修复已完成,若有坏道可以尝试重复以上方法

完成后重新mount分区:

mount -t ext4 /dev/sda1 xxx

参考链接:https://www.runoob.com/linux/linux-comm-badblocks.html

八、磁盘检测与分析(smartctl)

SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及,每一块硬盘(包括IDE、SCSI)在运行的时候,都会将自身的若干参数记录下来。这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等。硬盘运行了几千小时后,很多内在的物理参数都会发生变化,某一参数超过报警阈值,则说明硬盘接近损坏,此时硬盘依然在工作,如果用户不理睬这个报警继续使用,那么硬盘将变得非常不可靠,随时可能故障。

smartctl [option] device:

  • -i 指定设备
  • -d 指定设备类型,例如:ata, scsi, marvell, sat, 3ware,N
  • -a 或A 显示所有信息
  • -l 指定日志的类型,例如:TYPE: error, selftest, selective, directory,background, scttemp[sts,hist]
  • -H 查看硬盘健康状态
  • -t short 后台检测硬盘,消耗时间短
  • -t long 后台检测硬盘,消耗时间长
  • -C -t short 前台检测硬盘,消耗时间短
  • -C -t long 前台检测硬盘,消耗时间长
  • -X 中断后台检测硬盘
  • -l selftest 显示硬盘检测日志

参考链接:https://blog.csdn.net/u011065164/article/details/77099225

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值