LVM 正确扩容方法及 扩容失败后超级块的恢复

来源:互联网 发布:linux 卸载cuda 编辑:程序博客网 时间:2024/05/22 04:24

超级块恢复
LVM 扩容时,若不先UMOUNT 分区,直接扩容,有可能导致扩容不成功,再次重启时,无法正常重启。需要进行超级块恢复。
超级块:
从磁盘上读出来的第一块信息就是超级块(superblock),它记录了磁盘的几何尺寸,可用空间容量
最重要的是记录了第一个inode位置,就是"/ "的拉,ext2/3文件存取都是通过inode定位的,
比如使用/home/blue/test这个文件,首先先找到/的inode,然后找到/home的inode,再找到blue的inode
最后找到test的inode,可见没有超级块,文件系统就没有使用意义。
来看看ext2/3文件系统的结构图:


可以看出,ext2/3文件系统是由许多的块组组成,在其他的块组中保存了超级块的复本
通常只有块组0的超级块会被程序读取,比如mount,e2fsck默认就只读取块组0的。
如果超级块被写上其他的数据,比如被mkswap后,超级块保存的信息就丢失了
mount,fsck就会报告超级块损坏,无法正常挂载系统了 :(
鉴于超级块如此重要,文件系统的设计者将这些超级块拷贝了许多份
分散在整个文件系统的块组中。以对付第一个超级块损坏,真是想的周到阿 ^_^
我们要做的就是用分散在其他块组中超级块替换已经损坏的,就万事大吉啦。

首先找出超级块都被藏到哪去了 :P
 注意: -n 参数表示只列出文件系统的信息,并不真的格式化分区,使用mke2fs时一定要加倍小心
不然真给格了,可就无回天之术了阿!一定要小心。。。。呼。。。。
 
[root@NEWLFS ~]#mke2fs -n /dev/hda10
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=40Array6 (log=2)
Fragment size=40Array6 (log=2)
883008 inodes, 1763125 blocks
88156 blocks (5.00%) reserved for the super user
First data block=0
54 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
        32768, Array8304, 163840, 22Array376, 2Array4Array12, 81Array200, 884736, 1605632
[root@NEWLFS ~]#
哈哈,原来藏在32768, Array8304, 163840, 22Array376, 2Array4Array12, 81Array200, 884736, 1605632
下面就使用e2fsck命令修复吧!
[root@NEWLFS ~]#e2fsck -b 32768 /dev/hda10
-b参数指定超级块位置,不使用默认的超级块,必须的啦,默认的都坏掉了。
按照提示,一路y后,就OK啦。


LVM正确扩容的方法:
例:将/dev/sda5 添加到已存在的VG0中,并将/dev/VG0/lv1 扩容100G
pvcreate /dev/sda5
vgextent VG0 /dev/sda5
vgs 查看一下, 若发现容量有增长,便 可进行扩容操作
特别注意:扩容 前一定要先UMOUNT分区,否则极易发生系统重启时需要恢复超级块。
 lvextend -L +100G VG0/lv1
 e2fsck /dev/VG0/lv1  [强烈建议先不加-f]
  resize2fs  /dev/VG0/lv1


--------------------------------------------------------------------


lVM缩容

减小容量


[root@kade02 ~]# umount /mnt/

[root@kade02 ~]# resize2fs /dev/vg0/data0 2G   

[root@kade02 ~]# lvreduce -L 2G /dev/vg0/data0     
                               减小到指定的2G大小

[root@kade02 ~]# mount

原创粉丝点击