问题
我想修复损坏的逻辑卷和分区。SSD 最初由 Proxmox OS 使用。但是,我尝试通过 Ubuntu(安全图形)从 Live USB 恢复它。
起初,我尝试fsck
直接运行损坏的逻辑卷。但是,我发现修复超级块会导致分区级别出现另一个错误。
$ sudo fsck -b 32768 /dev/dm-11
...
fsck.ext2: Bad magic number in super-block while trying to open /dev/mapper/pve-data_meta1
...
$ journalctl | grep error
...
Apr 03 05:43:30 ubuntu kernel: blk_update_request: critical medium error, dev nvme0n1, sector 1902965000 op 0x0:(READ) flags 0x80700
Apr 03 05:43:30 ubuntu kernel: Buffer I/O error on dev dm-11, logical block 42, async page read
看到这个错误日志后,我开始尝试修复 nvme0n1。但是警告说它正在使用中。
$ sudo fsck -n /dev/nvme0n1
...
Warning! /dev/nvme0n1 is in use.
ext2fs_open2: Superblock invalid, trying backup blocks...
ext2fs_open2: Bad magi number in super-block while trying to open /dev/nvme0n1
...
$ sudo fsck -b 32768 /dev/nvme0n1
...
/dev/nvme0n1 is in use.
e2fsck: Cannot continue, aborting.
我尝试过
- 运行
umount /dev/nvme0n1
但它返回umount: /dev/nvem0n1: not mounted.
- 润
mount /dev/nvme0n1 /mnt
说道mount: /mnt: /dev/nvme0n1 already mounted or mount point busy
。 - 运行
sudo systemctl stop systemd-udevd
但不起作用。 - 运行
sudo swapoff -a
但不起作用。 - 运行
lsof /dev/nvme0
,lsof /dev/nvme0n1
并且lsof /dev/dm-11
不返回任何内容。 - 运行
sudo e2fsck -f -b 32768 /dev/nvme0n1
但不起作用。
欢迎提出任何想法或意见。请给我一些提示来解决这个问题。
版本
- ubuntu-20.04.4
- 桌面
- amd64
答案1
在我的情况下,该设备由正在运行的 Docker 使用。在我停止它之后,一切都正常了
sudo systemctl stop docker
答案2
我在 Rockylinux 8 上遇到了非常类似的问题。本质上,问题的根源是 Linux 挂载命名空间(https://man7.org/linux/man-pages/man7/mount_namespaces.7.html)。
解释:假设您已将 /dev/sda5 挂载到 /mnt/1。如果某个进程将 /dev/sda5 挂载到其命名空间内,mount
则实用程序fuser -vm
将看不到它。因此,如果您卸载 /mnt/1,它将从 /mnt/1 卸载,但 /dev/sda5 仍将挂载到某个命名空间内。在我的情况下,它是 flatpak 应用程序,在主题启动器的情况下,它是 docker。
因此,如果您退出上述应用程序,命名空间将被清除(fs 卸载?)并且 /dev/sda5 将不再被挂载。因此 fsck(或 resize2fs)将起作用。
PS /me 仍在寻找可以扫描所有命名空间以查找隐藏坐骑的实用程序。