Ubuntu VM“只读文件系统”修复?


9

我本打算在Ubuntu服务器虚拟机上安装VMWare工具,但是遇到了无法在/ mnt目录中创建cdrom目录的问题。然后,我测试了一下是否只是权限问题,但是我什至无法在主目录中创建文件夹。它继续声明它是一个只读文件系统。我对Linux有所了解,但对它还不满意。任何建议将不胜感激。

要求提供的评论信息:

username @ servername:〜$ mount
/ dev / sda1 on / type ext4(rw,errors = remount-ro)
proc on / proc type proc(rw)
无on / sys type sysfs(rw,noexec,nosuid,nodev)
无on / sys / fs / fuse / connections类型fusectl(rw)
在/ sys / kernel / debug类型debugfs(rw)上
没有在/ sys / kernel / security类型securityfs(rw)
上在/ dev type tmpfs上的udev(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:〜#mount
/ dev / sda1 on / type ext4(rw,errors = remount-ro)
proc on / proc type proc(rw)
无on / sys type sysfs(rw,noexec,nosuid,nodev)
无on / sys / fs / fuse / connections类型fusectl(rw)
在/ sys / kernel / debug类型debugfs(rw)上
没有在/ sys / kernel / security类型securityfs(rw)
上在/ dev type tmpfs上的udev(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
您可以打印“ mount”命令的输出吗?(无需任何参数)
pgruetter

添加到答案。感谢您询问有用的信息。
David

只是要确保:“ sudo mkdir / mnt / cdrom”失败,对吗?
Janne Pikkarainen,2010年

让我感到困惑的是,它说这是一个只读文件系统。命令的输出状态为“ rw”,它是读写文件系统。所以文件系统本身应该没问题。您要写入哪个文件夹?您还可以提供“ ls -la <the_folder>”的输出吗?
pgruetter,2010年

我在底部添加了一张图片,该图片是我执行请求的命令时得到的图片。让我知道您是否需要我做其他事情。:)
David

Answers:


16

尽管这是一个相对较旧的问题,但答案仍然相同。您有一个虚拟机(在物理主机上运行)和某种类型的存储(共享存储– FC SAN,iSCSI存储,NFS共享–或本地存储)。

通过虚拟化,许多虚拟机尝试同时访问相同的物理资源。由于物理限制(读/写操作的数量– IOPS,吞吐量,延迟),可能存在一个问题,无法同时满足所有物理机的所有存储请求。通常会发生什么:您将能够在虚拟机的操作系统中看到“ SCSI重试”和失败的SCSI操作。如果在一定时间内收到太多错误/重试,内核将把已挂载的文件系统设置为只读,以防止损坏文件系统。

简而言之:您的物理存储不够“强大”。同时访问存储系统的进程(虚拟机)太多,虚拟机无法从存储中获得足够快的响应,并且文件系统变为只读状态。

您不能做很多事情。显而易见的解决方案是更好的/额外的存储。您还可以在Linux内核中修改SCSI超时的参数。详细信息在例如:

http://kb.vmware.com/selfservice/microsites/search.do?language=zh_CN&cmd=displayKC&externalId=1009465

http://www.cyberciti.biz/tips/vmware-esx-server-scsi-timeout-for-linux-guest.html

但是,这只会“推迟”您的问题,因为在将文件系统设置为只读之前,内核仅获得更多时间。(即,您无法解决问题的原因。)

我的经验(使用VMware已有数年)是,仅Linux内核(我们使用RHEL和SLES)存在此问题,而Windows服务器则不存在。此外,所有类型的存储(FC,iSCSI,本地存储)都会发生此问题。对于我们来说,虚拟基础架构中最关键(也是最昂贵)的组件是存储。(我们现在使用具有1 Gbps iSCSI连接的HP LeftHand,从那以后就没有任何存储问题。我们选择LeftHand(相对于传统的FC解决方案)具有可扩展性。


哇!好答案。我完全忘记了这个问题。我已将您的答案标记为已接受。我目前使用的数据中心(这是VMWare的重要合作伙伴)最近将其存储升级到了Hitachi Pod。实际上,我们正在向环境中添加另一个Pod以帮助IOP加载,因为我们开始遇到IOP的其他问题(强调我们需要升级或扩展SAN资源)。因此,过去,我们再次增加了SAN资源。
大卫

4

可能的解释是存在硬件问题(部分磁盘故障),并且内核在检测到问题后立即将根文件系统重新安装为只读状态,以最大程度地减少问题。检查当前安装选项的一种更可靠的方法是cat /proc/mountsgrep ' / ' /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


关于不良硬件的唯一一件事是这是一台虚拟机,因此这不是硬件问题,因为物理主机上有数百个虚拟机,而我的是唯一一个有问题的虚拟机。我将检查内核日志,并尝试将其屏幕截图放入问题中。
大卫2010年

如果您的虚拟硬盘有大小限制,并且已满,Ubuntu将无法写入,如上所述。您可以检查一下。
Carf

@David:日志确实显示Linux遇到了硬件问题,只有硬件是虚拟的。我发现CarlF的假设很合理。
吉尔斯(Gillles)“所以-别再邪恶了”

3

发生的事情是,最近数​​据中心发生了电源故障。从那时起,我再也没有碰过我的服务器。一旦我们的数据中心断电,VSphere就会使Ubuntu的文件系统成为只读文件,直到重新启动为止。我本来想尝试重新启动,但我不希望所有监视都变得疯狂。我已经使Nagios(监视服务)处于静默状态,并且现在重新启动系统后一切正常。感谢您的所有投入。非常感谢。


1

可能很明显,但是尝试执行此操作时您是“ root”用户吗?/ mnt由root拥有,并且只能由root写入。您可能还会检查启动时是否有错误。上面的输出显示/(因此/ mnt)应该仅在引导过程中看到错误时才重新安装。您可以使用mount命令更改此设置(即重新安装为r / w),但是除非您确定引起错误的原因并不严重,否则我不会这样做。


当我这样做时,我可能并非偶然生根,但我认为输出结果是相同的。确定的root输出低于第一个输出。
大卫2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.