我打算在 Ubuntu 服务器虚拟机上安装 VMWare 工具,但遇到了无法在 /mnt 目录中创建 cdrom 目录的问题。然后我测试了一下这是否只是权限问题,但我甚至无法在主目录中创建文件夹。它继续指出它是一个只读文件系统。我对 Linux 了解一点,但还不太熟悉。任何建议都将不胜感激。
从评论中请求的信息:
用户名@服务器名:~$ 在 / 上挂载
/dev/sda1 类型 ext4(rw,errors=remount-ro)
在 /proc 上挂载 proc 类型 proc(rw)
在 /sys 上无 类型 sysfs(rw,noexec,nosuid,nodev)
在 /sys/fs/fuse/connections 上无 类型 fusectl(rw)
在 /sys/kernel/debug 上无 类型 debugfs(rw)
在 /sys/kernel/security 上无 类型 securityfs(rw)
在 /dev 上挂载 udev 类型 tmpfs(rw,mode=0755)
在 /dev/pts 上无 类型 devpts(rw,noexec,nosuid,gid=5,mode=0620)
在 /dev/shm 上无 类型 tmpfs(rw,nosuid,nodev)
在 /var/run 上无 类型 tmpfs(rw,nosuid,mode=0755)
在 /var/lock 上无 类型 tmpfs (rw,noexec,nosuid,nodev)
/lib/init/rw 上无类型 tmpfs (rw,nosuid,mode=0755) /proc/sys/fs/binfmt_misc 上 binfmt_misc 类型 binfmt_misc (rw,noexec,nosuid,nodev)
确保根输出。
root@server01:~#
在 / 上挂载 /dev/sda1 类型 ext4(rw,errors=remount-ro)
在 /proc 上 proc 类型 proc(rw)
在 /sys 上无 类型 sysfs(rw,noexec,nosuid,nodev)
在 /sys/fs/fuse/connections 上无 类型 fusectl(rw)
在 /sys/kernel/debug 上无 类型 debugfs(rw)
在 /sys/kernel/security 上无 类型 securityfs(rw)
在 /dev 上 udev 类型 tmpfs(rw,mode=0755)
在 /dev/pts 上无 类型 devpts(rw,noexec,nosuid,gid=5,mode=0620)
在 /dev/shm 上无 类型 tmpfs(rw,nosuid,nodev)
在 /var/run 上无 类型 tmpfs(rw,nosuid,mode=0755)
在 /var/lock 上无 类型 tmpfs (rw,noexec,nosuid,nodev)
/lib/init/rw 上无类型 tmpfs (rw,nosuid,mode=0755) /proc/sys/fs/binfmt_misc 上 binfmt_misc 类型 binfmt_misc (rw,noexec,nosuid,nodev)
答案1
虽然这是一个比较老的问题,但答案仍然是一样的。您有一台虚拟机(在物理主机上运行)和某种存储(共享存储 - FC SAN、iSCSI 存储、NFS 共享 - 或本地存储)。
在虚拟化中,许多虚拟机会尝试同时访问相同的物理资源。由于物理限制(读/写操作数量 - IOPS;吞吐量;延迟),可能无法同时满足所有物理机的所有存储请求。通常发生的情况是:您将能够在虚拟机的操作系统中看到“SCSI 重试”和失败的 SCSI 操作。如果在一定时间内出现太多错误/重试,内核会将挂载的文件系统设置为只读,以防止损坏文件系统。
长话短说:您的物理存储不够“强大”。有太多进程(虚拟机)同时访问存储系统,您的虚拟机无法足够快地从存储获得响应,并且文件系统变为只读。
您能做的事情并不多。显而易见的解决方案是更好/额外的存储。您还可以修改 Linux 内核中的 SCSI 超时参数。详细信息如下所述:
http://www.cyberciti.biz/tips/vmware-esx-server-scsi-timeout-for-linux-guest.html
但是,这只能“推迟”您的问题,因为内核在将文件系统设置为只读之前只能获得更多的时间。(即,您无法解决问题的根源。)
我的经验(使用 VMware 多年)是,这个问题只存在于 Linux 内核(我们使用 RHEL 和 SLES)中,而不会出现在 Windows 服务器上。此外,这个问题还出现在各种存储上 - FC、iSCSI、本地存储。对我们来说,虚拟基础设施中最关键(也是最昂贵)的组件是存储。(我们现在使用 HP LeftHand 和 1 Gbps iSCSI 连接,从那以后再也没有遇到过任何存储问题。我们选择 LeftHand(而不是传统的 FC 解决方案)是因为它的可扩展性。
答案2
一种可能的解释是存在硬件问题(部分磁盘故障),并且内核在检测到问题后立即将根文件系统重新挂载为只读,以尽量减少问题。检查当前挂载选项的更可靠¹ 方法是cat /proc/mounts
(grep ' / ' /proc/mounts
对于根文件系统,忽略rootfs / …
引导过程的产物行)。您可能会发现rw,errors=remount-ro
已更改为ro
(可能还会显示其他选项)。
内核日志可能包含消息Remounting filesystem read-only
,前面是磁盘访问错误。日志通常位于 中/var/log/kern.log
,但是如果这是现在只读的文件系统,则消息将不会显示在那里,但前面的错误应该会显示。您还可以使用命令查看最新的几个内核错误dmesg
。
顺便说一句,在 Ubuntu 下,挂载点(由桌面界面使用)的通常位置是在/media
(例如/media/cdrom0
),但如果您愿意也可以使用/mnt
或。/mnt/cdrom
¹来自 的报告。如果根文件系统是只读的,则无法保持最新状态。
mount
/etc/mtab
/etc/mtab
答案3
事情是这样的,数据中心最近断电了。从那以后,我就没碰过我的服务器。一旦我们的数据中心断电,VSphere 就会让 Ubuntu 的文件系统处于只读状态,直到重新启动。我本来想尝试重新启动,但我不想让所有的监控都崩溃。我已经关闭了 Nagios(监控服务),现在我重新启动了系统,一切都运行正常。感谢大家的意见。非常感谢。
答案4
当我查看运行 vagrant up 的输出时,它似乎是 /dev/sda1 上的问题:
卸载/dev/sda1:
sudo umount /dev/sda1
检查损坏的分区:
fsck /dev/sda1
您会看到一些问题,您应该对所有问题都回答是。
谢谢杰斐逊·阿博达对于此解决方案