zoukankan      html  css  js  c++  java
  • 如何修复被破坏的分区文件系统

    · 准备阶段

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

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

  • 相关阅读:
    android使用广播退出应用程序
    Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW _TASK flag.
    Android获取屏幕尺寸大小
    onActivityResult不被执行的问题。
    ADB操作多台设备
    在Eclipse的DDMS中查看手机data文件夹中的内容
    JDK版本过高,导致Eclipse报错
    Android colors.xml
    Eclipse智能提示
    在配置IIS负载均衡时,引起的一系列问题
  • 原文地址:https://www.cnblogs.com/quail2333/p/11174238.html
Copyright © 2011-2022 走看看