一、问题描述:服务器因意外断电,重新启动后出现以下问题:
1〉 使用root用户在dev/mapper/VolGroup00-LogVol00修改或者创建文件时报Linux Error: 30: Read-only file system.
2〉使用root用户在/boot分区下创建或修改文件可以。
二、问题诊断:
1〉实时查看系统日志信息看是否有报错信息
[root@dept2_151 ~]# tail -f /var/log/messages
2〉使用badblocks检查磁盘是否有坏块
[root@dept2_151 ~]# badblocks -sv /dev/sda
Checking blocks 0 to 209715199
Checking for bad blocks (read-only test): 12632512/ 20971520
12632540
...
...
done
Pass completed, 73 bad blocks found.
初步确定硬盘存在问题。
三、系统环境描述:
[root@dept2_151 ~]# uname -a
Linux dept2_151 2.6.18-194.el5xen #1 SMP Fri Apr 2 14:16:54 EDT 2010 i686 i686 i386 GNU/Linux
[root@dept2_151 ~]# cat /etc/issue
CentOS release 5.5 (Final)
Kernel \r on an \m
四、使用G4l工具克隆出原磁盘数据,最大程度保证系统一致性。备份盘一定要大于或等于源盘,一定不能小于源盘。
Step1:到http://sourceforge.net/projects/g4l/下载G4L镜像文件,最新版本为g4l-v0.38,并刻录成光盘。
Step2:将服务器关机断电,添加新硬盘作为要克隆的目标盘。
step3:开机后,将刻录好的光盘加载到光驱,并从光驱引导后,进入图1。
图1
step4:按图1默认选中项,40s后自动引导进入图2
图2
Step5:图3是G4l使用指导,大致了解后选中EXIT进入到图4。
图3
图4
Step6:在图4光标处键入g4l,回车后进入到图5,选择Yes,回车。
图5
Step7:在图6中,选中RAW Mode ANY filesystem,every bit,local+ftp+cifs(smb)+sshfs+nfs,如图6。
图6
Step8:选中Click'n'Clone Directly clone a drive,即使用克隆方式直接对磁盘进行克隆,如图7。
图7
Step9:选择被克隆的源磁盘,选中A:Select source Select source drive () 如图8,回车。
图8
Step10:选中源磁盘sda,如图9,OK,回车后出现磁盘克隆信息,如图10。
图9
图10
Step11:接下来选中目标盘(新加上的磁盘)Select target Select target drive,如图11。
图11
Step12:选中目标盘sdb,如图12,按空格键选中,OK,回车,同样出现图13目标磁盘信息。
图12
图13
Step13:接下来选择Click'n'Clone Clone the drive now!,即开始克隆磁盘并显示克隆进度,操作步骤如图14、图15、图16。
图14
图15
图16
Step14:克隆完成后,进入到以下状态,选择PowerOff,如图17,拔掉源磁盘,若从目标盘引导能进入系统,则克隆成功。
备注:磁盘克隆时一定要搞清楚源盘和目标盘,避免源盘目标盘搞反,破坏源盘数据。
五、磁盘克隆成功后,进入系统,检查文件系统是否都正常。
step1:查看分区表信息是否与源盘一致。
[root@dept2_151 ~]# df -hT #分区表上的信息与源磁盘一致。
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 18G 13G 3.9G 77% /
/dev/sda1 ext3 99M 32M 63M 34% /boot
tmpfs tmpfs 440M 0 440M 0% /dev/shm
none tmpfs 440M 104K 440M 1% /var/lib/xenstored
step2:以上克隆过程中,源盘为20G,目标盘为30G,即目标盘大于源盘,所以克隆后,可查看到目标盘仍然有未使用的空间。
[root@dept2_151 ~]# fdisk -l #查看到磁盘柱面是从1-3916,而sda2才到2610,即还有空间尚未划分。
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 2610 20860402+ 8e Linux LVM
即可以使用fdisk /dev/sda 对未使用的空间进行分区,在此就不操作了。
六、并不是人人都有这样的“机会”,碰上磁盘坏道了。通常意外断电会导致文件系统受损,按以下操作可以修复的。前提也要是:先做好数据备份!!有备份我们才能放心大胆地往前探索……
重启系统进入单用户模式
step1:卸载要修复的文件系统 umount dev/mapper/VolGroup00-LogVol00 /
step2:使用fsck手动强制修复 fsck -V -y 即可修复/etc/fstab中所有存在问题的文件系统(也可加-t参数指定有问题的文件系统)。
step3:修复完成后,根据提示重启。
step4:进行系统后,由用户检查相关服务及数据是否有丢失等问题。