Ext4 是最常用的 Linux 文件系统 Ext3 的进化
创建
如果分区被用于长期存储或对系统运作并非至关重要,可不创建保留块
mkfs.ext4 -m 0 /dev/设备
# mkfs.ext4 -m 0 /dev/sdc
# -m 0 不创建保留块
# /dev/sdc 可不分区直接使用
# -T largefile usage-type
挂载
查看设备UUID
[zjh@Arch-Z ~]$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1 vfat FAT32 1987-286E 424.3M 12% /boot
└─sda2 btrfs 3c5a65af-4acf-4105-8052-08c749581b97 /var/lib/docker/btrfs
/var/cache/pacman/pkg
/var/log
/home
/.snapshots
/
sdb ext4 1.0 caa5b1b5-b886-4126-bd5e-9489048e33f0 11.7T 7% /mnt/diskZ
修改fstab
修改/etc/fstab自动挂载
sudo vi /etc/fstab
UUID=caa5b1b5-b886-4126-bd5e-9489048e33f0 /mnt/diskZ ext4 defaults,noatime,nofail 0 0
# defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async
# noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
# nofail 可以在启动时若设备不存在直接忽略它而不报错
应用自动挂载
mount -a 的意思是将/etc/fstab的所有内容重新加载,会忽略已经完成的挂载。
sudo mount -a
参考资料
- [Arch Wiki] Ext4 (简体中文)
- [Arch Wiki] Ext4
- [Arch Wiki] fstab (简体中文)
- [Arch Wiki] fstab
- [Arch Wiki man] MOUNT(8)
- [Arch Wiki man] EXT4(5)
修复文件系统损害
Super block
超级块保存了⽂件系统设定的⽂件块⼤⼩、操作函数、inode链表等重要信息。
查看备份块
sudo mkfs.ext4 -n /dev/sdb1(查看备份块时需要将分区卸载)
尝试挂载备份块
当⽂件系统出现损坏时,分区是挂载不上去的,这个时候尝试对分区备份块进⾏挂载,如果该备份超级块块可以被挂载上,并且上⾯数据 没有问题,那么就可以使⽤该备份超级块进⾏修复
sudo mount -t ext4 -o sb=131072 /dev/sdb1 /a
#以32768为例,block的⼤⼩是4k,⽽mount的sb参数的块⼤⼩是1k,
#所以挂载时需要进⾏单位转换,转换成1k则是32768*4=131072。
#若挂载成功则可以使⽤该备份块进⾏修
尝试使⽤备份块修复⽂件系统
尝试修复前⼀定要先卸载该设备,否则会导致部分数据丢失。且修复过程中需要确认的信息要⾃⼰观察分析,避免丢失数据
sudo fsck.ext4 -b 32768 /dev/sdb1
参考资料:Ext4文件系统修复
直接修复*
sudo fsck -a /dev/sdc
恢复删除数据
使用Foremost
安装
pacman -S foremost
使用
把文件恢复到被删除文件所在的磁盘中不是一个明智的做法。
如果在恢复过程中,占用了被删除文件之前所在的磁盘分区,就可能无法恢复文件。
另外,进行文件恢复操作前不要做任何其他操作。
foremost -t jpg -i 要恢复的设备 -o 恢复出的数据存放路径
# foremost -t all -i /path/to/image -o outputdir
# foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued
# -t 文件类型