Linux操作系统报:read-only file system

本文介绍了解决Linux系统中出现的只读文件系统问题的方法,包括使用fsck命令修复文件系统错误、修改fstab文件配置、以及通过调整启动参数来避免文件系统损坏。

这个报错的意思是硬盘属性变成只读,不可写入;                    

VOS本身是不可能更改你的硬盘属性的,只有操作系统有这样的能力;

一般可能原因有三点:

1.硬盘与主板的不兼容性导致;

2.硬盘损坏;

3.人为修改

 

 

 

------------------

[root@localhost ~]# service mysqld start
touch: cannot touch `/var/log/mysqld.log': Read-only file system
chown: changing ownership of `/var/log/mysqld.log': Read-only file system
chmod: changing permissions of `/var/log/mysqld.log': Read-only file system
chown: changing ownership of `/var/lib/mysql': Read-only file system
chmod: changing permissions of `/var/lib/mysql': Read-only file system
Starting MySQL:                                            [  OK  ]
touch: cannot touch `/var/lock/subsys/mysqld': Read-only file system
[root@localhost ~]# fsck
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/VolGroup00/LogVol00: recovering journal
Clearing orphaned inode 302154356 (uid=48, gid=48, mode=0100600, size=0)
Clearing orphaned inode 57245765 (uid=0, gid=0, mode=0100600, size=0)
Clearing orphaned inode 57245703 (uid=27, gid=27, mode=0100600, size=0)
Clearing orphaned inode 57245702 (uid=27, gid=27, mode=0100600, size=0)
Clearing orphaned inode 57245701 (uid=27, gid=27, mode=0100600, size=0)
Clearing orphaned inode 57245700 (uid=27, gid=27, mode=0100600, size=0)
Clearing orphaned inode 57245699 (uid=27, gid=27, mode=0100600, size=0)
/dev/VolGroup00/LogVol00: clean, 7592796/365756416 files, 80372202/365740032 blocks
e2fsck 1.39 (29-May-2006)
/dev/sda1 is mounted.

WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? no

check aborted.

-----------------------------

 

 

尝试执行了一下fsck 直接出现了 修复提示,无任何异常!

如果出现这样的提示,就需要小心:

root@test ~]# fsck
fsck 1.35 (28-Feb-2004)
e2fsck 1.35 (28-Feb-2004)
/dev/sda1 is mounted.

WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? no

check aborted.
[root@test ~]#
一定要选择NO,先拆卸文件系统,否则 对文件系统造成毁灭性的打击。

6.修复完成后,reboot 系统 正常启动

 

--------------------------

 

 

运行正常的一台机器linux服务器,早上发现挂了。满屏幕是 read-only file system的提示.检查/etc/fstab设置没有问题。重启计算机,init初始的过程中,不断的read-only file system提示。进入repair模式,人工干预地/分区进行fsck.
 
fsck /var -y 在不断的yes之后,修复完成.(真想给enter键上压个秤砣)
重启计算机,OK了.进入系统后进行检查,没有发现有价值的信息.系统出问题前没有重启过.排除了掉电的可能.只在dmesg找了一点线索
 
[root@cacti ~]# dmesg |grep error
hdb: packet command error: status=0x51 { DriveReady SeekComplete Error }
hdb: packet command error: error=0x54

 

------------------------

 

利用 mount 指令解决 Read-only file system的问题

刚才在VirtualBox下装起了liveAndroid ,可是在利用wget下载apk包的时候,总是提示Read-only file system,也就是说系统是只读的,什么也写不了。于是在网上到处找了一下,发现解决起来挺容易的。一条命令就可以了

 

mount -o remount rw /

--------------------------

 

 

系统启动的时候报:
Updating /etc/fstab Unable to open /etc/fstab for writing:Read-only file system [FAILED]
touch:createing '/var/lock/subsys/kudzu':Read-only file system [OK]
Bringing up lookback interface: modprobe: modprobe: Can't locate module ...(此处看不到了)

modprobe:modprobe:Can'g locate module net-pf-4
modprobe:modprobe:Can'g locate module net-pf-5
modprobe:modprobe:Can'g locate module net-pf-18
modprobe:modprobe:Can'g locate module net-pf-9

Bringing up interface eth0: Inter(R) PRO/100 Network Driver -version ...(此处看不到了)
Copyright (c) 2003 Inter Corporation

PCI:Fount IRQ 9 for device 00:06.0
e100:eth0: Inter(R) PRO/100 Network Connection
Hardware receive checksums enabled
cpu cycle saver enabled

系统到这一步就不走了,半天没有反应,只能重启(事后发现此处等待n久时间是可以进入系统的,进入系统后也是没有主机名,文件系统只读)。

1,重启后进入单用户模式,打开/etc/fstab文件,查到如下信息:
/dev/sde1 /back ext3 noauto 2 3

有一个阵列柜上的分区加载,虽然只是noauto,不会自动加载,不过当时为了保险起见就像让把这一项去掉。去掉的时候提示文件系统治读。

不过用Mount 命令查看的时候是rw的。

2,这个时候用suse 10 x86的光盘引导进入恢复模式,进去的时候不能够发现本地的硬盘,只能够发现柜子的硬盘。

这个时候想起来了,是suse 10对这个型号的服务器的mageraid卡的驱动不支持,当时公司的这个型号的服务器只能安装radhat 3版本系列的操作系统,redhat 4和suse都不能安装上去。redhat 5出来后也可以安装redhat 5了。

3,想通过redhat 启动过程中的交互模式做点事情。
redhat 启动的时候会有一个按"I"进入的交互模式,可是这个服务器竟然没有这个选项,郁闷了,当时已经很久没有看到redhat 3的启动界面了,当时也不在现场,还以为redhat 3真的没有这个交互界面了。当时记得redhat 3u6是有的。

INIT: version 2.85 booting
Welcome to Red Hat Enterprise Linux AS
Press 'I' to enter interactive startup.

4,没有办法,只好去现在,去现场后用redhat 3u6的光盘引导系统。进入系统后用下面的命令Mount分区
mount -o rw /dev/sda1 /mnt/boot
mount -o rw /dev/sda3 /mnt/sysimage

发现是可以用读写方式加载的.打开系统的/etc/fstab文件,这个时候位置在/mnt/sysimage/etc/fstab。把这个文件的最后一行删除。重新启动还是不行。

5,用光盘引导进入系统后用
fsck.ext3 -f /dev/sda1
fsck.ext3 -f /dev/sda3

强制检查文件系统,没有发现异常。重启后还是不行。

6,系统启动的过程中会发现一些新硬件信息,此时弹出的配置界面都是乱码。应该是系统安装的时候配置的中文环境的缘故。用光盘引导系统,引导的过程中配置网络信息,配置加载本地的linux分区。

进去后修改/etc/sysconfig/i18n文件,这个文件的原信息为:
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

修改为:
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

这个时候启动的时候就为英文了。

7,上面的这些操作一直都不行,然后就继续想系统启动的步骤,就检查系统启动的文件。

发现/etc/inittab文件的下面一行多了一个#号
si::sysinit:/etc/rc.d/rc.sysinit

把这个#号去掉后就一切Ok。

<think>我们正在处理一个Linux系统错误:Error 30,即只读文件系统(Read-only file system)。这意味着文件系统被挂载为只读模式,导致无法写入。可能的原因包括文件系统错误、硬件故障、磁盘空间不足等。我们将按照步骤进行故障排除。 ### 步骤1: 检查系统日志 首先,检查系统日志(如/var/log/messages或使用journalctl)以获取更多错误信息。这有助于确定文件系统变为只读的原因。 ```bash journalctl -b | grep "read-only" # 或 dmesg | grep "read-only" ``` ### 步骤2: 检查文件系统挂载状态 使用`mount`命令查看当前挂载的文件系统及其选项。确认目标文件系统是否被挂载为只读(ro)而非读写(rw)。 ```bash mount | grep " / " ``` 如果发现挂载为只读,可以尝试重新挂载为读写模式: ```bash mount -o remount,rw / ``` 如果重新挂载失败,则需进一步检查。 ### 步骤3: 检查文件系统错误 文件系统错误可能导致自动挂载为只读。使用`fsck`检查并修复文件系统。注意:在运行`fsck`之前,应卸载文件系统,但根文件系统无法卸载,因此需要从救援模式或Live CD运行。 如果无法重启,可以尝试在单用户模式下运行(如果系统允许进入单用户模式): ```bash # 重启进入单用户模式(在启动时编辑内核参数,添加single或s) # 然后运行 fsck -y /dev/sdXN # 请替换为实际的分区设备 ``` 或者,使用Live CD/USB启动系统,然后运行`fsck`。 ### 步骤4: 检查磁盘空间 如果文件系统的inode用尽或磁盘空间不足,也可能导致只读错误。 检查磁盘空间: ```bash df -h ``` 检查inode使用情况: ```bash df -i ``` 如果空间不足,清理不必要的文件。 ### 步骤5: 检查硬件健康状态 硬件问题(如磁盘坏道)可能导致文件系统进入只读模式。使用`smartctl`(需要安装smartmontools)检查磁盘健康状态。 ```bash smartctl -a /dev/sda # 替换为你的磁盘设备 ``` 查看SMART属性中的错误计数和坏道信息。 ### 步骤6: 检查内核是否因错误而将文件系统设为只读 在某些情况下,内核检测到磁盘写入错误后,会将文件系统设为只读以防止进一步损坏。此时需要查看日志确认。 ### 步骤7: 检查文件系统类型特定的问题 某些文件系统(如ext4)有特定的挂载选项或特性。例如,ext4在检测到错误时默认行为是继续挂载为只读。可以通过`tune2fs`查看文件系统参数。 ```bash tune2fs -l /dev/sdXN ``` ### 步骤8: 检查是否有进程锁定文件系统 虽然较少见,但有时文件系统被锁定也可能导致问题。使用`lsof`查看是否有进程正在使用目标文件系统。 ```bash lsof /mountpoint ``` ### 步骤9: 考虑硬件连接问题 对于物理服务器,检查磁盘连接线、电源等是否正常。如果是虚拟机,检查虚拟磁盘是否正常。 ### 步骤10: 恢复操作 如果以上步骤无法解决问题,可能需要考虑备份数据并重新格式化文件系统(作为最后手段)。 ### 示例:重新挂载根文件系统为读写 如果步骤2中重新挂载成功,但问题再次出现,则需排查根本原因(如硬件故障或文件系统损坏)。 §§相关问题§§ 1. 如何从Live CD/USB启动并修复Linux文件系统? 2. 如何检查Linux磁盘健康状态(SMART)? 3. Linux文件系统变成只读的常见原因有哪些? 4. 如何预防文件系统变为只读?</think>### Linux x86_64 Error 30: 只读文件系统故障排除指南 当Linux系统出现 **"Error 30: Read-only file system"** 时,表示文件系统被强制挂载为只读模式,通常是为了防止数据损坏。以下是系统化的排查流程: --- #### 1. **检查挂载状态** 首先确认文件系统的挂载模式: ```bash mount | grep " / " # 输出示例:/dev/sda1 on / type ext4 (ro,relatime) ``` - 若显示 `ro`(read-only)而非 `rw`(read-write),说明文件系统处于只读状态 - 尝试临时重新挂载为读写模式: ```bash mount -o remount,rw / # 对根分区操作 ``` **若失败**,继续下一步排查[^1]。 --- #### 2. **检查文件系统错误** 文件系统错误是常见原因,使用 `fsck` 扫描修复: ```bash # 卸载目标分区(根分区需在救援模式下操作) umount /dev/sdXN # 替换为实际分区 # 强制检查文件系统 fsck -y /dev/sdXN ``` - **重要**:根分区操作需通过 **Live CD/USB 或救援模式**(参考[引用1]的 `chroot` 方法) - 修复后重新挂载: ```bash mount -o remount,rw /dev/sdXN ``` --- #### 3. **检查磁盘健康状态** 硬件故障可能导致只读保护: ```bash # 查看磁盘SMART状态 smartctl -a /dev/sda | grep -i "error" # 检查内核错误日志 dmesg | grep -i "I/O error" ``` - **关键指标**: - `Reallocated_Sector_Ct`(重映射扇区计数) - `Current_Pending_Sector`(待处理扇区) - 数值非零表明磁盘损坏,需备份数据并更换硬盘[^2]。 --- #### 4. **检查存储空间** 空间耗尽可能触发只读模式: ```bash df -h # 检查磁盘使用率 df -i # 检查inode使用率 ``` - **处理方案**: - 删除大文件:`find / -xdev -size +1G` - 清理日志:`journalctl --vacuum-size=200M` - 扩容或迁移数据 --- #### 5. **检查内核级错误** 系统异常可能触发保护机制: ```bash # 查看系统日志 grep -r "remount.*ro" /var/log # 常见触发场景 - 文件系统元数据损坏 - 驱动异常(如RAID卡故障) - 非正常断电导致写入中断 ``` --- #### 6. **修复文件系统超级块** 当主超级块损坏时: ```bash # 查找备份超级块(ext3/4) mkfs.ext4 -n /dev/sdXN # 显示备份位置 # 用备份超级块修复 fsck -b 32768 /dev/sdXN # 32768为示例块号 ``` --- #### 7. **硬件连接检查** 物理连接问题: ```bash # 重新扫描SCSI总线 echo 1 > /sys/class/scsi_device/host0/scan # 检查线缆/接口 lsscsi -v # 确认设备识别状态 ``` --- **最终恢复步骤**: 若以上方法无效,尝试: 1. 从备份恢复关键数据 2. 使用 `ddrescue` 克隆磁盘: ```bash ddrescue /dev/sda /dev/sdb rescue.log ``` 3. 重新格式化分区(数据会丢失)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值