今天又用到相同操作,可见日常note以下果然是有好处的。
http://hi.baidu.com/rain_at_dna/blog/item/45224c392c4085f73b87ce53.html
环境:
还是同一台机器,不过此次pv2的名字由/dev/hdb变成了/dev/hdb1。
pv1:/dev/hda3
pv2:/dev/hdb1
vg:rootvg
lv1:rootlv(占用了所有可用的剩余LE/PE)
lv2:swaplv
boot:/dev/hda1
/dev/hda2:原系统的Windows扩展分区
/dev/hda5,/dev/hda6:Windows逻辑分区D、E (NTFS)
在linux下通过dd 想把D、E备份到iSCSI上去,结果报I/O错误,不知是物理还是逻辑错误,在linux下将此两个分区以iSCSI target 方式 export出去,用其他的Windows通过iSCSI连接做chkdsk,好像解决不了问题。怀疑是硬件问题了,但smartctl全部pass,感觉对linux下的硬件检测工具还是不那么相信,遂再安装一个Windows吧,做一下硬件检测,顺便安装一Windows版的Grid Control。
打算把/dev/hda3做C盘,于是需要migratepv,于是想起此文语法,
pvmove -v /dev/hda3 /dev/hdb1
报/dev/hdb1没有可用的LE,可不是吗,使用Windows的坏习惯让我总是一次性把所有的空间全部分给了rootlv(即/分区,沿袭了AIX的叫法习惯)
接下来怎么办?resize2fs?lvreduce?
resize2fs只能缩小umount的非在线文件系统,AIX是可以在线缩小的!
那么应该缩小rootlv所占的LE,让pv腾出可用的LE来,然后再做pvmove,应该不会报错,直接用了lvreduce,后面没有跟pv,操作后,两个pv的free pe都有增大,(这里有两个问题,还需验证,是否可以在lvreduce操作里指定pv;lvreduce的是否是空块,即未用的PE,因为正规流程应当是先缩小文件系统,再缩小lv的,而此处无法在线缩小fs,所以只能先缩小lv了,不知会不会造成数据丢失?)
果然,操作后pvmove顺利完成,vgreduce、pvremove,ok,重启安装Windows吧!