欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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

程序员文章站 2022-07-06 18:34:12
· 准备阶段 由于条件原因,我只能在VMware虚拟机上进行模拟实验,开机的时候,发现sdb磁盘正常加载 然后通过lsblk命令查看挂载情况 进入/data目录,查看内容,并新建文件test,写入一句话:“this is test file.”,查看test内容 发现可以查看并正常写入文件,现在进入 ......

· 准备阶段

由于条件原因,我只能在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.

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