一、问题描述:服务器因意外断电,重新启动后出现以下问题:

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。

CentOs5.5使用G4L克隆磁盘更换坏盘_第1张图片

                                                                图1

step4:按图1默认选中项,40s后自动引导进入图2

CentOs5.5使用G4L克隆磁盘更换坏盘_第2张图片

                                                                       图2

Step5:图3是G4l使用指导,大致了解后选中EXIT进入到图4。

CentOs5.5使用G4L克隆磁盘更换坏盘_第3张图片

                                                                         图3

CentOs5.5使用G4L克隆磁盘更换坏盘_第4张图片

                                                                     图4

Step6:在图4光标处键入g4l,回车后进入到图5,选择Yes,回车。

CentOs5.5使用G4L克隆磁盘更换坏盘_第5张图片

                                                                图5

 

Step7:在图6中,选中RAW Mode ANY filesystem,every bit,local+ftp+cifs(smb)+sshfs+nfs,如图6。

CentOs5.5使用G4L克隆磁盘更换坏盘_第6张图片

                                                                  图6

 

Step8:选中Click'n'Clone Directly clone a drive,即使用克隆方式直接对磁盘进行克隆,如图7。

CentOs5.5使用G4L克隆磁盘更换坏盘_第7张图片

                                                               图7

Step9:选择被克隆的源磁盘,选中A:Select source          Select source drive () 如图8,回车。

CentOs5.5使用G4L克隆磁盘更换坏盘_第8张图片

                                                             图8

 

Step10:选中源磁盘sda,如图9,OK,回车后出现磁盘克隆信息,如图10。

CentOs5.5使用G4L克隆磁盘更换坏盘_第9张图片

                                                                    图9

CentOs5.5使用G4L克隆磁盘更换坏盘_第10张图片

                                                                  图10

 

Step11:接下来选中目标盘(新加上的磁盘)Select target  Select target drive,如图11。

CentOs5.5使用G4L克隆磁盘更换坏盘_第11张图片

                                                                   图11

Step12:选中目标盘sdb,如图12,按空格键选中,OK,回车,同样出现图13目标磁盘信息。 

CentOs5.5使用G4L克隆磁盘更换坏盘_第12张图片

                                                                      图12

CentOs5.5使用G4L克隆磁盘更换坏盘_第13张图片

                                                                       图13

Step13:接下来选择Click'n'Clone   Clone the drive now!,即开始克隆磁盘并显示克隆进度,操作步骤如图14、图15、图16。

CentOs5.5使用G4L克隆磁盘更换坏盘_第14张图片

                                                                     图14

CentOs5.5使用G4L克隆磁盘更换坏盘_第15张图片

                                                                            图15

CentOs5.5使用G4L克隆磁盘更换坏盘_第16张图片

                                                                             图16

 

Step14:克隆完成后,进入到以下状态,选择PowerOff,如图17,拔掉源磁盘,若从目标盘引导能进入系统,则克隆成功。

CentOs5.5使用G4L克隆磁盘更换坏盘_第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:进行系统后,由用户检查相关服务及数据是否有丢失等问题。