Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57842
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 199
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-07 22:11
文章分类

全部博文(13)

文章存档

2014年(13)

我的朋友

分类: LINUX

2014-04-26 20:52:50

1.搭建实验环境
在虚拟机里添加一块10G的磁盘
2.分区和格式化
a. [root@localhost /]# fdisk /dev/sdd------划分一个分区出来,进行实验
       Device Boot      Start         End      Blocks   Id  System
       /dev/sdd1               1           1        8001   83  Linux

      Command (m for help): w
     The partition table has been altered!
b.[root@localhost /]# mkfs.ext4 /dev/sdd1-----格式化成ext4的文件系统
c.[root@localhost /]# mkdir /test
    root@localhost /]# mount /dev/sdd1 /test-----创建挂载点,把块设备挂载到目录下
d.[root@localhost test]# dumpe2fs /dev/sdd1-----查看inode的数量
    Default mount options:    (none)
    Filesystem state:         clean
    Errors behavior:          Continue
    Filesystem OS type:       Linux
    Inode count:              2000
    Block count:              8000
    Reserved block count:     400
    Free blocks:              6676
    Free inodes:              1989-----此项
e.进入test目录,写一个简单的shell脚本来耗尽所有inode
  vi test.sh
       

点击(此处)折叠或打开

  1. #!/bin/bash
  2. for i in {1..1989}
  3. do
  4.     touch linux$i &
  5. done
  chmod +x test.sh;./test.sh
    现象为:
     [root@localhost test]# touch: cannot touch `linux1986': No space left on device
        ^C
     [root@localhost test]# touch e
     touch: cannot touch `e': No space left on device
     已经无法写入文件!
     [root@localhost test]# df -Th------查看分区使用情况,sdd1剩余空间却无法写入文件
Filesystem     Type     Size  Used Avail Use% Mounted on
/dev/sda5      ext4      17G  867M   15G   6% /
tmpfs          tmpfs    495M     0  495M   0% /dev/shm
/dev/sda1      ext4     485M   31M  429M   7% /boot
/dev/sda3      ext4    1008M   34M  924M   4% /home
/dev/sr0       iso9660  4.2G  4.2G     0 100% /iso
/dev/sdd1      ext4     7.6M  1.1M  6.1M  16% /test
3.superblock的破坏与恢复
a.[root@localhost /]# mkfs.ext4 /dev/sdd1-----重新格式化sdd1块设备
     [root@localhost /]# mkfs.ext4 /dev/sdd1----查看超级块
     [root@localhost /]# df -Th
    ilesystem     Type     Size  Used Avail Use% Mounted on
    /dev/sda5      ext4      17G  867M   15G   6% /
    tmpfs          tmpfs    495M     0  495M   0% /dev/shm
    /dev/sda1      ext4     485M   31M  429M   7% /boot
    /dev/sda3      ext4    1008M   34M  924M   4% /home
    /dev/sr0       iso9660  4.2G  4.2G     0 100% /iso
    /dev/sdd1      ext4     7.6M  1.1M  6.2M  15% /test
b. [root@localhost /]# dd if=/dev/zero of=/dev/sdd1 bs=512 count=8
    8+0 records in
    8+0 records out
    4096 bytes (4.1 kB) copied, 0.0015765 s, 2.6 MB/s
    [root@localhost /]# df -Th
    Filesystem     Type     Size  Used Avail Use% Mounted on
    /dev/sda5      ext4      17G  867M   15G   6% /
    tmpfs          tmpfs    495M     0  495M   0% /dev/shm
    /dev/sda1      ext4     485M   31M  429M   7% /boot
    /dev/sda3      ext4    1008M   34M  924M   4% /home
    /dev/sr0       iso9660  4.2G  4.2G     0 100% /iso
    /dev/sdd1      ext4      16Z   16Z  6.6M 100% /test
    [root@localhost /]# ----用dd命令填入第一个块4K的0后,分区使用率达到了100%,超级块在data block 的第一块。
c.恢复
     [root@localhost /]# umount /test----先卸载
    [root@localhost /]# mount /dev/sdd1 /test
    mount: you must specify the filesystem type---再挂载时,文件系统出了问题
    [root@localhost /]# dumpe2fs /dev/sdd1|more
    dumpe2fs 1.41.12 (17-May-2010)
    dumpe2fs: Bad magic number in super-block while trying to open /dev/sdd1
    Couldn't find valid filesystem superblock.
    [root@localhost /]# fsck /dev/sdd1----修复超级块,当文件系统,块足够多时,超级块不止存在在第一个块,他会备份到一些block group 的块中,所以用
    这个命令即可将其他block group 中的超级块数据还原出来。mount 重新挂载即可。
d.superblock(超级块):记录此 file system 的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式
4.破坏/boot分区对应的磁盘分区(超级块)
a.[root@localhost /]# dd if=/dev/zero of=/dev/sda1 bs=512 count=8
b.重启进入营救模式
    挂载光盘iso镜像,进入营救模式
    fsck -y /dev/sda1恢复超级块,重启,恢复正常。
5.破坏/boot分区对应磁盘分区(inode)
a. 进入boot目录,编写测试脚本参上,修改free inodes即可
b.营救模式下,创建一个目录,挂载/dev/sda1到此目录,进入此目录,进入/boot,编写删除脚本
#!/bin/bash
for i in {1..127978}
do
    rm -rf linux$i &
done
或者进入挂载后的boot目录:rm -rf linux*也可。
-----即可修复
6.破坏/分区对应的磁盘分区(超级块)
   方法同上
注:
问题:破坏lvm类型分区的/文件系统的时候,修复不了
解决:首先破坏/dev/sda2不正确,牵涉到pv的问题,pv创建vg,然后创建lv ,破坏了sda2对应的pv就等于破坏了swap分区和/分区对应的lv,应该去破坏   lv,不是直接破坏磁盘的sda2分区。然后去修复lv就可以了           


     
    
   
    







   








   
阅读(4397) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~