许多系统的 ext4 直接位于块设备上,而其他系统则位于 lvm 上。我通常会直接在块设备上使用 ext4 创建新系统,并使用une2fs 进行自动文件系统检查。在旧版本的 CentOS(例如 4,5 或 6)中,我可以对 LVM 上的 ext 文件系统执行相同的操作,但不能对新版本执行相同的操作。确保驻留在 LVM 上的文件系统得到检查的最佳实践命令集是什么?
确保 lvm 卷不损坏的最佳方法是什么?如何针对 LVM 文件系统运行 fsck? lvm中有内置的东西可以自动检查fs吗?如果是这样,哪个日志文件条目实际上证明已完成检查?
- 启动到单用户模式,停止磁盘映射服务并运行
mount
以确保所有 lvm 卷都不是安装。fsck /dev/mapper/vg0
用什么参数? /
或者从不会自动挂载 LVM 的LiveCD 启动 并从那里运行 fsck?
有没有办法在 LVM 上对 ext 文件系统使用une2fs?我运行文件系统检查的最常见方法是让操作系统在启动时通过tune2fs定期自动执行这些检查: tunefs -c 5 -i 7days /dev/sda1
但这不适用于lvm。
如果 fsck 是一种方法,那么将什么开关传递给它?如果没有lvm,我fsck -c -c -D -C0 /dev/sda1
可以消除坏块并优化文件夹结构。在运行 fsck 之前应运行哪些 lvm 命令?
我过去引用的大部分文档都不可用。
答案1
如何针对 LVM 文件系统运行 fsck?
最好先对驱动器进行快照或备份。
1. 和 2. 取决于要修复的驱动器。
通过添加systemd.unit=emergency.target
到 grub 行来启动到紧急模式是一个好的开始。/
仍然安装。
如果 fsck 是一种方法,那么将什么开关传递给它?
您可以通过试运行 ( fsck -N
) 检查根分区以查看是否存在错误。您需要从外部设备启动才能真正修复此问题。 (fsck -y
如果有很多需要修复的地方,这很有用,可以跳过针对每个发现的错误的烦人的“修复(y)?”问题。)
lvm中有内置的东西可以自动检查fs吗?
(确保文件系统驻留在 LVM 上时进行检查的最佳实践命令集是什么?)
不,据我所知/etc/fstab
- 第 6 个字段正在设置这个。 (参见 man fstab)
第六个字段 (fs_passno) 由 fsck(8) 程序用来确定重新引导时执行文件系统检查的顺序。根文件系统的 fs_passno 应该指定为 1,其他文件系统的 fs_passno 应该为 2。驱动器内的文件系统将按顺序检查,但不同驱动器上的文件系统将同时检查,以利用硬件中可用的并行性。如果第六个字段不存在或为零,则返回零值,并且 fsck 将假定不需要检查文件系统。
如果是这样,哪个日志文件条目实际上证明已完成检查?
这被存储到文件系统中。对于 ext2/ext3/ext4,它可能看起来像这样(13 中的 fsck,安装计数将设置为 0。tune2fs -C <n>
手动设置安装计数)
sudo tune2fs -l /dev/mapper/vg0-lv0 | grep -i "mount count"
Mount count: 17
Maximum mount count: 30
(其他文件系统,例如 XFS、btrfs 的工作方式有所不同,但您明白了)
在运行 fsck 之前应运行哪些 lvm 命令?
没有任何
答案2
fsck
是一个文件系统检查器。 LVM 是一个存储卷管理器,而不是一个文件系统。您可以fsck
在具有文件系统的 LVM 逻辑卷上使用它,就像在具有文件系统的磁盘分区上运行它一样。
LVM 元数据可能会损坏,但一般来说,LVM 可以很好地从存储在多个位置的备份中自动修复自身,并且在发生重大灾难时也可以使用 中的副本/etc/lvm/backup/
(您在外部备份)。