最近發現Centos登陸後容易出現Read-only
read-only
也查了一下造成的原因有一下幾種。
檔案系統錯誤
核心相關硬體驅動bug
FW固件類問題
磁盤壞道
硬碟背闆故障
硬碟線纜故障
HBA卡故障
RAID卡故障
非正常關機
1.檔案系統錯誤。
如 ext3 檔案系統錯誤,比較少見,ext3 檔案系統是linux下非常穩定的檔案系統,目前檔案系統自身bug 造成的 ext3 檔案系統錯誤,非常罕見。
當檔案系統自身的校驗機制發現檔案系統存在問題時,為避免檔案系統受到進一步的損壞,一般把檔案系統設定為隻讀。
tune2fs 指令可以設定當作業系統核心發現有檔案系統錯誤時,作業系統對該檔案系統如何處理:
-e error-behavior
Change the behavior of the kernel code when errors are detected. In all cases, a filesystem error will cause
e2fsck(8) to check the filesystem on the next boot. error-behavior can be one of the following:
continue Continue normal execution.
remount-ro Remount filesystem read-only.
panic Cause a kernel panic.
此類隻讀,一般可以通過自身的檢查工具,如 fsck ,進行修複。2.磁盤壞道
A.對于單個硬碟的情況,當硬碟出現壞道,且不能夠被硬碟自身的糾錯機制恢複時,就會報IO錯誤,進而進一步影響上層檔案系統導緻隻讀現象出現。
B.對于有備援raid 的情況,多個硬碟出現壞道導緻 raid 卡檢驗機制無法恢複時,也會對外報該raid IO 錯誤。
badblocks 指令可以對磁盤壞道情況進行檢查,該指令位于 e2fsprogs 程式包内。3.FW固件類問題
硬碟 fw bug
硬碟背闆、擴充卡 fw bug
HBA卡 fw bug
raid 卡 fw bug
以及各部件 fw bug 不相容
此類問題,隻能夠回報給相應廠家,由廠家協助處理。
4.核心相關硬體驅動bug
HBA卡、raid卡硬體的核心驅動,如果有bug ,也可能導緻硬碟隻讀。如硬碟出現錯誤時,驅動的錯誤處理機制 Error Handler 異常;或者對 SATA 協定的實作,不完全遵循标準。用sysctl 指令調整 dev.scsi.logging_level = 64 可以讓核心更多的顯示 scsi 層面的資訊,有利于排錯。
5.硬碟背闆、硬碟線纜、HBA卡故障、RAID卡故障
這些部件出現故障,都可以造成硬碟隻讀。這些部件,如果故障現象嚴重,還是比較容易判斷和發現,但對于偶爾不穩定,排查有時候會比較困難,一般是替換法處理。Raid 卡廠家一般有提供 linux 作業系統下的指令行工具,如:megacli hpacucli arrconf等
評論補充:
inode資源耗盡,也會導緻分區隻讀
某個分區出現寫滿問題後,會出現隻讀故障。和OS有關系,和硬體關系不大
6. 使用LVM的linux,還可能由于作業系統更新時的bug導緻檔案系統變成隻讀。需在/etc/init.d/rc.local(REDHAT),或 /etc/init.d/after.local (suse)加入如下内容
pvscan
vgscan
lvscan
mount -a
7.非正常關機 這種情況盡量避免直接電源關機。