linux下文件read only file system

本文探讨了在遇到只读文件系统错误时如何通过mount命令重新挂载来解决问题,并介绍了不同挂载选项的影响。

最近修改init进程,在创建文件的时候,提示read only file system.

就使用了mount命令重新挂载了一下,mount("/","/",NULL,MS_REMOUNT,0);

这样我就能够进行文件操作了,创建、读写、删除文件。

为了不影响别的功能,我想在执行mount("/","/",NULL,MS_RDONLY,0);给改回去。

但是这个情况下,会不会把已经修改了权限全给改掉呢?疑问中。

在代码里面remount之后,在串口执行mount -o remount ro / 之后,目录居然还能够写,这样貌似不大对吧。

命令没有用对,mount -o remount,ro /  这样文件就无法读写了。

mount 命令关于remount介绍

remount

Attempt to remount an already-mounted filesystem.  This is commonly used to change the mount flags for a  filesys‐
              tem, especially to make a readonly filesystem writeable. It does not change device or mount point.

              尝试重新挂载一个已经挂载的文件系统。

              这个命令通常用于改变已经挂载的文件系统的挂载标志,特别是让一个只读的文件系统可写。

              它不会改变设备或者挂载点。

              The  remount  functionality follows the standard way how the mount command works with options from fstab. It means
              the mount command doesn't read fstab (or mtab) only when a device and dir are fully specified.


     
              mount -o remount,rw /dev/foo /dir


              After this call all old mount options are replaced and arbitrary stuff from fstab is  ignored,  except  the  loop=
              option which is internally generated and maintained by the mount command.


              mount -o remount,rw  /dir


              After this call mount reads fstab (or mtab) and merges these options with options from command line ( -o ).

<think>嗯,用户需要解决Linux系统中遇到的"Read-onlyfilesystem"错误。根据提供的引用内容,这个问题通常由文件系统损坏或磁盘故障触发,系统会以只读模式挂载分区来防止进一步损坏。用户可能是在进行文件操作时突然遇到这个错误,比如尝试修改文件或保存数据时系统拒绝写入。ta应该比较着急,因为这会中断当前工作。从引用看,用户已经查阅过相关资料,但需要更系统化的解决方案。准备从这几个层面展开回答:首先解释错误本质是系统自我保护机制,然后分步骤给出解决方案。引用[2][3]提到的fsck工具是核心修复手段,需要强调操作前必须卸载分区。对于常见场景如根分区只读,要提供特殊处理方案(单用户模式)。最后补充预防措施,因为用户可能更关心如何避免再次发生。特别注意要提醒用户备份重要数据,因为fsck操作存在风险。另外需要明确设备名的获取方法(df命令),避免用户操作错误分区。对于硬件故障的可能性也要适当提及,防止用户反复尝试修复而耽误时间。用户可能还会想知道为什么会出现这个问题,所以准备在原因分析部分归纳引用中提到的几种可能性:异常关机、磁盘坏道、fstab配置错误等。这样能帮助用户定位根源问题。</think>要解决Linux系统中的"Read-only file system"错误,请按以下步骤操作: ### 一、错误原因分析 该错误通常由以下情况触发: 1. **文件系统损坏**:异常关机/断电导致写入中断 2. **磁盘故障**:坏道或硬件故障(系统自动启用只读保护) 3. **配置错误**:`/etc/fstab`配置错误(如错误的分区格式或选项) 4. **NFS问题**:网络文件系统挂载异常(参考引用[4]) ### 二、修复步骤 #### 1. 定位问题分区 ```bash # 查看分区挂载状态 df -Th | grep ro, ``` 输出示例: ```bash /dev/sda1 ext4 50G 38G 12G 76% / ro,relatime ``` #### 2. 卸载并修复文件系统 ```bash # 卸载分区(重要!) sudo umount /dev/sdXY # 替换为实际分区名 # 执行文件系统检查 sudo fsck -y /dev/sdXY ``` * **关键参数说明**: - `-y`:自动修复所有错误 - `-f`:强制检查(即使文件系统标记为clean) - `-C`:显示进度条(ext4文件系统支持) #### 3. 重新挂载为读写模式 ```bash sudo mount -o remount,rw /dev/sdXY ``` #### 4. 特殊场景处理 **当根分区(/)只读时:** 1. 重启进入单用户模式: - GRUB菜单选择`recovery mode` - 或启动时按`e`编辑内核参数,在`linux`行尾添加`single` 2. 执行修复: ```bash fsck -y /dev/root_partition mount -o remount,rw / ``` ### 三、后续检查 1. **检查硬件状态**: ```bash sudo smartctl -a /dev/sda | grep -i errors ``` 2. **验证fstab配置**: ```bash cat /etc/fstab # 确认分区格式正确(如ext4/xfs等) ``` ### 四、预防措施 1. **避免强制断电**:使用`sync && sudo shutdown -h now`关机 2. **定期文件系统检查**: ```bash # 每30次启动检查一次 sudo tune2fs -c 30 /dev/sdXY # ext2/3/4适用 ``` 3. **监控磁盘健康**: ```bash sudo apt install smartmontools sudo smartd -i 1800 # 每30分钟检测一次 ``` > **重要提示**:若频繁出现此错误,可能是磁盘硬件故障的前兆,建议立即备份数据并使用`badblocks`检测坏道: > ```bash > sudo badblocks -sv /dev/sdXY > ``` ### 五、NFS特殊处理 若涉及网络文件系统(参考引用[4]): ```bash # 强制卸载NFS sudo umount -f /nfs/mountpoint # 重启服务 sudo systemctl restart nfs-server ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值