我有一台昨晚重新启动的 VM 机器,我们无法通过 ssh 连接到它。我使用了控制台,只看到了它,/
并swap
用lsblk
命令安装:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sdb 8:16 0 8G 0 disk
├─sdb1 8:17 0 2G 0 part
└─sdb2 8:18 0 6G 0 part [SWAP]
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
sde 8:64 0 400M 0 disk
└─sde1 8:65 0 399M 0 part
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part /
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
sdf 8:80 0 10G 0 disk
└─sdf1 8:81 0 10G 0 part
但是当我跑的时候df -h
:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 1.2G 18G 7% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
/dev/sde1 20G 1.2G 18G 7% /boot
/dev/sdd1 20G 1.2G 18G 7% /data
/dev/sdc1 20G 1.2G 18G 7% /opt
/dev/sdb1 20G 1.2G 18G 7% /var
/dev/sdf1 20G 1.2G 18G 7% /backup
当我在它们上运行ls -hal
时,它们都是空的,除了./
我试图卸载和挂载分区时出现分区未挂载的错误。我再次安装它们,例如:
mount /dev/sdf1 /backup
和df -h
:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 1.2G 18G 7% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
/dev/sde1 387M 40M 327M 11% /boot
/dev/sdd1 20G 14G 4.9G 75% /data
/dev/sdc1 20G 1.4G 18G 8% /opt
/dev/sdb1 2.0G 155M 1.8G 9% /var
/dev/sdf1 9.9G 2.4G 7.0G 26% /backup
一切都很好。我重新启动以测试它。它又发生了。只有/
和交换已安装。blkid
输出:
/dev/sdb1: UUID="3a11afe1-52d5-4e31-96a0-66da2c8e70eb" TYPE="ext3"
/dev/sdf1: UUID="0e1f69a7-36d9-4af1-a537-afaa211e87d7" TYPE="ext3"
/dev/sdb2: UUID="416970f8-c21b-419b-90d5-eb8eabb685a6" TYPE="swap"
/dev/sdc1: UUID="d380ddf8-3476-46b3-8e80-9dd3b394dd13" TYPE="ext3"
/dev/sde1: UUID="b224fa8a-e909-432e-927e-4a98fe2d74d0" TYPE="ext3"
/dev/sda1: UUID="9407e385-168c-4e37-9651-1de04406b620" SEC_TYPE="ext2"
TYPE="ext3"
/dev/sdd1: UUID="e8439366-d29d-43c3-ad5e-635855f4e42e" TYPE="ext3"
部分cat /etc/fstab
输出:
UUID=9407e385-168c-4e37-9651-1de04406b620 / ext3 defaults 0 0
UUID=b224fa8a-e909-432e-927e-4a98fe2d74d0 /boot ext3 defaults 0 0
UUID=e8439366-d29d-43c3-ad5e-635855f4e42e /data ext3 defaults 0 0
UUID=d380ddf8-3476-46b3-8e80-9dd3b394dd13 /opt ext3 defaults 0 0
UUID=3a11afe1-52d5-4e31-96a0-66da2c8e70eb /var ext3 defaults 0 0
UUID=416970f8-c21b-419b-90d5-eb8eabb685a6 swap swap defaults 0 0
UUID=0e1f69a7-36d9-4af1-a537-afaa211e87d7 /backup ext3 defaults 0 0
为什么会这样?
也许有人或某事导致
/etc/mtab
变得不可写(不可变文件?文件系统错误使根文件系统保持只读状态?),并且它包含重新启动之前的旧数据。结果,mount
anddf
命令认为文件系统已经挂载,即使它们实际上没有挂载。检查处于只读状态的文件系统:
grep ro, /proc/mounts
检查不可变
/etc/mtab
:lsattr /etc/mtab
如有必要,使用该
chattr -i /etc/mtab
命令删除i
可变标志。/etc/mtab
在现代系统中,
/etc/mtab
越来越多地成为指向/proc/mounts
or的符号链接/proc/self/mounts
。如果您的系统/发行版有旧版本的mount
命令,这种链接可能会导致挂载选项user
失败,因为它无法记录将特定文件系统挂载到/etc/mtab
. 如果您不使用user
mount 选项,您也可以在旧系统上创建此符号链接。这种链接的优点是不会发生您遇到的错误,因为
/proc/mounts
(或/proc/self/mounts
在具有命名空间支持的系统上)总是直接从内核本身获得有关已安装文件系统的最新信息。如果链接到.
mount
_/run/mount
/etc/mtab
/proc/self/mounts
如果您发现
/etc/mtab
已设置为不可变,并且找不到其他原因,则您可能已被黑客入侵,因为设置/etc/mtab
不可变可能是入侵者隐藏其工具以防止随意观察的一种方式...您的根文件系统可能在系统关闭之前被设置为只读,并且
umount
用于卸载所有磁盘的命令无法从/etc/mtab
. 在启动时,mount -a
命令(“安装所有尚未安装的内容”)查看/etc/mtab
并确定所有内容都已安装,因此无需执行任何操作。这将解释您的所有症状: - 无法在引导时应用挂载 -
df -h
命令为多个挂载点显示基本相同的磁盘 - 当您尝试卸载明显挂载的文件系统时出现“未挂载”错误 - 在 umount 尝试后挂载工作。正如telcoM所建议的,最好将文件替换为指向. 但请谨慎接受此建议:如果系统未按预期设置,它可能会破坏您的系统。
/etc/mtab
/proc/mounts
我已经阅读了 roaima和telcoM 的答案,发现所有文件系统包括
/
都是只读的。我检查了内核消息dmesg
,发现 SELinux 阻止了 VM 分区的挂载。好吧,一切都是只读的,我无法禁用 SELinux,/etc/selinux/config
所以我使用了 UBUNTUlive,禁用了 SELinux,重新启动了我的系统,一切都很好并恢复正常。