列出 Linux 磁盘分区和类型

首先,我们需要确定 Linux 服务器中的磁盘分区、它们各自的文件系统以及安装它们的路径。

通过使用控制台或者 ssh 客户端,以 root 用户身份连接到 Linux 服务器。

我们可以在 Linux bash 提示符下使用以下开关执行 lsblk 命令以列出所需的信息。

# lsblk -o NAME,FSTYPE,MOUNTPOINT
NAME        FSTYPE      MOUNTPOINT
sda
├─sda1      ext4        /boot
└─sda2      LVM2_member
  ├─cl-root xfs         /
  ├─cl-swap swap        [SWAP]
  └─cl-home xfs         /home
sr0

在 Linux 启动时启用 XFS 磁盘分区扫描

在某些情况下,如果 Linux 操作系统正在使用磁盘分区,则无法卸载磁盘分区。
出于这个原因,我们可能不得不将磁盘检查推迟到下一次系统启动。

要使 xfs_repair 命令能够在 Linux 启动时运行,请在 GRUB 菜单内核命令的末尾添加“fsck.mode=force fsck.repair=yes”。

我们可以参考我们之前关于编辑 GRUB 菜单的帖子。

Linux 启动后,查看系统日志以验证磁盘修复命令的执行情况。

# journalctl | grep  systemd-fsck

要在启动时永久启用磁盘检查,我们必须在 GRUB 配置文件中添加“fsck.mode=force fsck.repair=yes”。

在 vim 文本编辑器中编辑 grub 配置文件。

# vi /etc/default/grub

找到 GRUB_CMDLINE_LINUX 参数并在行尾添加“fsck.mode=force fsck.repair=yes”。

GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet fsck.mode=force fsck.repair=yes"

根据新参数重新生成 GRUB 菜单配置。

# grub2-mkconfig

重新启动 Linux 操作系统以验证新设置。

# reboot
如何扫描和修复 Linux 磁盘错误

在本文中,我们将学习如何使用 fsck 和 xfs_repair 命令修复 Linux 磁盘错误。

获取 Linux 磁盘的上次扫描时间

我们可以在以下命令的帮助下找到 Linux Ext4 类型分区的最后一次扫描时间。

# tune2fs -l /dev/sda1 | grep checked
Last checked:             Sun Sep 29 20:03:14 2019

什么是 FSCK?

系统实用程序 fsck(文件系统一致性检查)是用于检查 Unix 和类 Unix 操作系统(例如 Linux、macOS 和 FreeBSD)中文件系统的一致性的工具。

通常,fsck 或者在引导时自动运行,或者由系统管理员手动运行。
该命令直接作用于存储在磁盘上的数据结构,这些数据结构是内部的并且特定于正在使用的特定文件系统,因此通常需要为文件系统定制的 fsck 命令。
各种 fsck 实现的确切行为各不相同,但它们通常遵循内部操作的通用顺序,并为用户提供通用的命令行界面。

on  it road.com

在 Linux 启动时启用对 Ext4 磁盘分区的扫描

在 Linux 启动时启用磁盘检查。
我们必须修改该磁盘分区的装载计数参数。

# tune2fs -c 1 /dev/sda1
tune2fs 1.45.6 (20-Mar-2020)
Setting maximal mount count to 1

现在重启你的 Linux 服务器。

# reboot

Linux 命令 fsck 现在会在启动时检查 Ext4 磁盘分区。

重新启动后,获取磁盘分区的 Last Checked 值,现在它会显示上次 Linux 启动的时间。

# tune2fs -l /dev/sda1 | grep checked
Last checked:             Sun Aug  1 22:50:46 2021

设置回 Mount Count 参数,否则它会在每次 Linux 启动时继续执行磁盘扫描。

# tune2fs -c -1 /dev/sda1
tune2fs 1.45.6 (20-Mar-2020)
Setting maximal mount count to -1

扫描和修复 XFS 类型的磁盘分区

XFS 类型的磁盘分区有自己的一组命令,与 Ext4 有点不同。

在检查其一致性之前,我们必须卸载 XFS 磁盘分区。

# umount /dev/mapper/cl-home

我们有 xfs_repair 命令用于检查和修复磁盘错误。

在某些 Linux 发行版中,我们可能还会找到 xfs_check 命令。
此命令仅执行 XFS 类型磁盘分区的扫描,不执行任何修复。

但是 xfs_check 命令并非在所有 Linux 发行版中都可用。

或者,我们可以使用带有 -n 开关的 xfs_repair 命令来获得与 xfs_check 相同的功能。

# xfs_repair -n /dev/mapper/cl-home
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan (but don't clear) agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
No modify flag set, skipping phase 5
Phase 6 - check inode connectivity...
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify link counts...
No modify flag set, skipping filesystem flush and exiting.

上述命令只执行磁盘检查,不尝试修复任何错误。

现在,执行不带 -n 开关的 xfs_repair 命令,它将执行 Linux 磁盘分区的扫描和修复。

# xfs_repair /dev/mapper/cl-home
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan and clear agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
Phase 5 - rebuild AG headers and trees...
        - reset superblock...
Phase 6 - check inode connectivity...
        - resetting contents of realtime bitmap and summary inodes
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done

在 /etc/fstab 文件中列出的原始挂载点重新挂载 XFS 分区。

# mount -a

扫描和修复 Ext4 类型的磁盘分区

要扫描 Linux 磁盘分区,我们可以使用 fsck(文件系统一致性检查)命令。
但是在检查和修复它之前,我们需要卸载该分区。

# umount /dev/sda1

卸载成功后,在 Linux bash 提示符下执行 fsck 命令。

# fsck.ext4 /dev/sda1
e2fsck 1.45.6 (20-Mar-2020)
/dev/sda1: clean, 320/65536 files, 61787/262144 blocks

检查并修复 Linux 磁盘后,在其各自的挂载点再次挂载分区。

为此,执行以下 Linux 命令以挂载 /etc/fstab 文件中列出的所有磁盘分区。

# mount -a

什么是 XFS_REPAIR?

XFS 是由 Silicon Graphics, Inc (SGI) 于 1993 年创建的高性能 64 位日志文件系统。
它是 SGI 的 IRIX 操作系统从 5.3 版开始的默认文件系统。
XFS 于 2001 年移植到 Linux 内核;截至 2014 年 6 月,大多数 Linux 发行版都支持 XFS,其中一些将其用作默认文件系统。

xfs_repair 实用程序具有高度可扩展性,旨在有效修复具有许多 inode 的非常大的文件系统。
与其他 Linux 文件系统不同,xfs_repair 不会在启动时运行,即使 XFS 文件系统没有完全卸载。
如果发生不干净的卸载,xfs_repair 只会在挂载时重放日志,确保文件系统一致。

日期:2020-09-17 00:13:50 来源:oir作者:oir