遇到一个Linux文件系统因bios时间错误变成只读的问题
2015-01-28 22:16
806 查看
正在进行的项目所用的系统是基于ubuntu构建的,前文也有说明。由于某些原因,需要在一块主板上用dd命令拷贝已经做好的系统镜像到硬盘,然后将这个硬盘换到另一块板子上使用。近期发现一个问题,就是将拷贝好系统的硬盘换到新的主板上使用,启动时系统变成只读系统。变成只读系统时,只读系统的提示信息如下:
/etc/rc3.d/S99myscript: 25: /etc/rc3.d/S99myscript: cannot create /etc/udev/rules.d/70-persistent-net.rules: Read-only file system
其实很早就遇到过一次,只是那时又由于某些原因,没有过多的样机进行那种方式的测试,因此没有引起重视。对于出现机率小又无法解释的问题,一般不花心思。比如最近有一台设备的网络状态表现十分诡异,在有的电脑上可以正常连接,有的电脑上连接不了,连接不了的电脑连其它同版本的设备又可以,什么升级同版本、直连、过交换机,改百兆全双工等,都试过。这类问题不知从何下手,即使项目经理催也没用。
当时出问题的信息还保留,如下:
sck from util-linux 2.20.1
swapon: /dev/disk/by-uuid/22f27499-7be5-4b06-8a21-67b135c79fea: swapon failed: Invalid argument
mountall: swapon /dev/disk/by-uuid/22f27499-7be5-4b06-8a21-67b135c79fea [2375] terminated with status 255
mountall: Problem activating swap: /dev/disk/by-uuid/22f27499-7be5-4b06-8a21-67b135c79fea
/dev/sdb2: Superblock last mount time (Mon Dec 15 11:04:01 2014,
now = Sun Feb 16 09:08:04 2014) is in the future.
/dev/sdb2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
mountall: fsck /opt [2339] terminated with status 4
mountall: Filesystem has errors: /opt
mountall: Skipping mounting /opt since Plymouth is not available
当时的解决方法是按提示的做。手动执行fsck。
root@localhost:~# fsck /opt
fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
Superblock last mount time (Mon Dec 15 11:04:01 2014,
now = Sun Feb 16 09:10:26 2014) is in the future.
Fix<y>? yes
/dev/sdb2 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
/lost+found not found. Create<y>? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb2: 27/327680 files (0.0% non-contiguous), 56800/1310720 blocks
最关键的信息就是“Superblock last mount time is in the future”,直译过来,是超级块最后一次的挂载时间在未来。就是说,现在这个系统的时间,比上一次使用硬盘的时间,要早,在make编译时,也会遇到这种类似的问题。
网上有这方面的资料,无一例外都是修复磁盘。修复一次后,再也不出现这个问题了。
因此,上文提到的问题的解决,就是在出现只读时,用脚本去修复。因为系统上有2个分区,一个分区挂到根目录/,真正的程序在另一个分区,挂载到/app,当系统启动后,会运行/app/run.sh脚本。如果出现问题,这个分区是挂载不了的,但根分区还是可以挂载的。所以,在根分区中也创建同样的目录、同样的脚本中执行下面的脚本来修改。fsck -y表示直接修复,不用确认。
#!/bin/sh
echo "run internal script and run fsck...."
fsck / -y
fsck /app -y
sleep 1
reboot
实际上,这个问题的确是系统时间造成的。假如将正常的硬盘换到一块bios时间错误(主要是时间比实际时间要小)的主板上,就是出现这个问题。将同一块主板的bios时间往前改,一样出现问题。因此,只能说被bios时间坑了。这个bios时间可不能由上级程序去自动识别,自动修改。——那个时候,硬盘上还未升级有ntp功能的程序。
对于时间修改带来的问题,CU上有讨论:http://bbs.chinaunix.net/thread-4058093-1-1.html。
李迟,2015.1.28 晚
/etc/rc3.d/S99myscript: 25: /etc/rc3.d/S99myscript: cannot create /etc/udev/rules.d/70-persistent-net.rules: Read-only file system
其实很早就遇到过一次,只是那时又由于某些原因,没有过多的样机进行那种方式的测试,因此没有引起重视。对于出现机率小又无法解释的问题,一般不花心思。比如最近有一台设备的网络状态表现十分诡异,在有的电脑上可以正常连接,有的电脑上连接不了,连接不了的电脑连其它同版本的设备又可以,什么升级同版本、直连、过交换机,改百兆全双工等,都试过。这类问题不知从何下手,即使项目经理催也没用。
当时出问题的信息还保留,如下:
sck from util-linux 2.20.1
swapon: /dev/disk/by-uuid/22f27499-7be5-4b06-8a21-67b135c79fea: swapon failed: Invalid argument
mountall: swapon /dev/disk/by-uuid/22f27499-7be5-4b06-8a21-67b135c79fea [2375] terminated with status 255
mountall: Problem activating swap: /dev/disk/by-uuid/22f27499-7be5-4b06-8a21-67b135c79fea
/dev/sdb2: Superblock last mount time (Mon Dec 15 11:04:01 2014,
now = Sun Feb 16 09:08:04 2014) is in the future.
/dev/sdb2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
mountall: fsck /opt [2339] terminated with status 4
mountall: Filesystem has errors: /opt
mountall: Skipping mounting /opt since Plymouth is not available
当时的解决方法是按提示的做。手动执行fsck。
root@localhost:~# fsck /opt
fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
Superblock last mount time (Mon Dec 15 11:04:01 2014,
now = Sun Feb 16 09:10:26 2014) is in the future.
Fix<y>? yes
/dev/sdb2 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
/lost+found not found. Create<y>? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb2: 27/327680 files (0.0% non-contiguous), 56800/1310720 blocks
最关键的信息就是“Superblock last mount time is in the future”,直译过来,是超级块最后一次的挂载时间在未来。就是说,现在这个系统的时间,比上一次使用硬盘的时间,要早,在make编译时,也会遇到这种类似的问题。
网上有这方面的资料,无一例外都是修复磁盘。修复一次后,再也不出现这个问题了。
因此,上文提到的问题的解决,就是在出现只读时,用脚本去修复。因为系统上有2个分区,一个分区挂到根目录/,真正的程序在另一个分区,挂载到/app,当系统启动后,会运行/app/run.sh脚本。如果出现问题,这个分区是挂载不了的,但根分区还是可以挂载的。所以,在根分区中也创建同样的目录、同样的脚本中执行下面的脚本来修改。fsck -y表示直接修复,不用确认。
#!/bin/sh
echo "run internal script and run fsck...."
fsck / -y
fsck /app -y
sleep 1
reboot
实际上,这个问题的确是系统时间造成的。假如将正常的硬盘换到一块bios时间错误(主要是时间比实际时间要小)的主板上,就是出现这个问题。将同一块主板的bios时间往前改,一样出现问题。因此,只能说被bios时间坑了。这个bios时间可不能由上级程序去自动识别,自动修改。——那个时候,硬盘上还未升级有ntp功能的程序。
对于时间修改带来的问题,CU上有讨论:http://bbs.chinaunix.net/thread-4058093-1-1.html。
李迟,2015.1.28 晚
相关文章推荐
- 遇到一个Linux系统时间突变问题
- 虚拟机中的linux系统文件突然全部变成只读的问题
- Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是
- 解决ntfs格式的移动硬盘mount到Linux下时变成只读文件系统的问题
- 文件系统只读,一个没有解决的问题(续)
- 最近做的一个linux下的聊天系统,遇到的一些问题及解决办法
- Linux系统关于ACM时间的使用和文件目录的权限的问题
- 解决linux中 文件系统 移植,为什么根文件系统是只读的问题!!
- linux系统安装mysql5.7(二) --linux安装mysql遇到的问题 和libaio-dev文件 mysql下载网址
- linux cramfs只读文件系统添加一个写文件夹
- linux系统修改系统时间重启后导致文件系统错误原因以及修复方法
- 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类
- 使用wildfly-10.1.0遇到一个问题:启动时提示“系统找不到指定的文件”
- linux -- 系统所有文件全部变成只读
- fsck 修复ext3文件系统(用于linux系统时间不对,文件系统信息有错引起的die with exit status等的一些问题)
- Linux和win10双系统导致win10时间错误的问题
- linux 服务器忽然变成只读文件系统
- nfs文件系统的一个错误--无法挂载文件系统,只读文件系统
- 又遇到redhat文件系统只读问题
- Ubuntu下U盘变成只读,提示“只读文件系统”或“只读文件系统”的问题