如何修复被破坏的分区文件系统


· 准备阶段

由于条件原因,我只能在VMware虚拟机上进行模拟实验,开机的时候,发现sdb磁盘正常加载

然后通过lsblk命令查看挂载情况

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk 
└─sdb1            8:17   0    5G  0 part /data
sr0              11:0    1 1024M  0 rom 

进入/data目录,查看内容,并新建文件test,写入一句话:“this is test file.”,查看test内容

[root@localhost ~]# cd /data/
[root@localhost data]# ls
lost+found
[root@localhost data]# echo "this is test file." > test
[root@localhost data]# ls
lost+found  test
[root@localhost data]# cat test 
this is test file.

发现可以查看并正常写入文件,现在进入破坏阶段

· 破坏阶段

硬盘进行分区格式化(ext4)会创建硬盘内的文件存取系统表(superblock、block、inode信息),文件新建、文 件写入到分区内,正常存取block块。

使用dd命令给硬盘写入文件,破坏硬盘内的文件存取系统表,给硬盘直接写入空文件。直接将文件写入给磁盘随机的扇 区里面。

[root@localhost /]# dd if=/dev/zero of=/dev/sdb bs=1 count=2048
2048
+0 records in 2048+0 records out 2048 bytes (2.0 kB) copied, 0.00410516 s, 499 kB/s

破坏磁盘后,进入/data目录,写入文件test2

[root@localhost data]# touch test2
touch: cannot touch ‘test2’: Input/output error

发现写入文件报错,reboot重启机器报错,输入密码直接进入单用户系统

 

· 修复阶段

使用fsck修改文件系统

[root@localhiost ~]# fsck -t ext4 -y /dev/sdb
fsck from util-linux 2.23.2
e2fsck 1.42.9(28-DEC-2013)
ext2fs_open2:Bad magic number in super-block
fsck.ext4:Superblock invalid,trying backup blocks...
/dev/sdb was not cleanly unmounted, check forced.
Pass 1 : Checking inodes,blocks,and sizes
Pass 2 : Checking directory structure
Pass 3 : Checking directory connectivity
Pass 4 : Checking reference counts
Pass 5 : Checking group summary information
Free blocks count wrong for group #1 (31740, counted=31739).
Fix? yes

Free blocks count wrong (5116558, counted=5116557).
Fix? yes

Free inodes count wrong for group #0 (8181, counted=8180).
Fix? yes

Free inodes count wrong (1310709, counted=1310708).
Fix? yes

/dev/sdb : ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb : 12/1310720 files (0.0% non-contiguous), 126323/5242880 blocks

修复完成后reboot,重启系统。

重新进入系统,然后重新进行写入文件测试。

[root@localhost ~]# cd /data 
[root@localhost data]# ls 
lost+found test
[root@localhost data]# cat test
this is test file.
[root@localhost deta]# echo "this is test2 file." > test2
[root@localhost data]# ls 
lost+found test test2
[root@localhost data]# cat test2
this is test2 file.

至此,分区文件系统修复完成。


作者:菜鹌鹑,发布于:2019/07/12
原文:https://www.cnblogs.com/quail2333/p/11174238.html