zoukankan      html  css  js  c++  java
  • 缩小xfs文件系统的CentOS/RedHat虚拟机硬盘的迂回方法

    使用xfs文件系统的CentOS/RedHat虚拟机缩小硬盘的迂回方法

    2019年7月19日  Hwajie

    0.情况是这样的

    客户那边建了一台占5T硬盘的CentOS虚拟机,用了一段时间,要开wmware的自动保护功能,总空间不够用,后悔开太大了。

    好在虚拟机内实际只用了几百G的硬盘空间,于是想把磁盘缩小到2T。

    结果文件系统是xfs,只许增大不许缩小。

          看来只能绕道而行,另外再建一块2T硬盘,把系统复制到2T的盘里了。

    另:vmware-vdiskmanager命令可以转成动态增长的磁盘,非xfs格式的话,或许可以考虑转换后再修改磁盘配置文件的参数。

    为此演习一遍,兹有本文。

    1.试验平台

    自己电脑上有个现成的RedHat虚拟机,硬盘140G。启动后磁盘管理器识别为150G,其中1G是引导分区/dev/sda1,其余是/dev/sda2,用了lvm管理的。第二个分区中128G挂给根目录,另外21G挂给swap用。

    通过df -h查看,实际/根目录下只使用了33G的磁盘。

    2试验dd

    2.1第一阶段,准备用dd命令复制。

    关机增加第二块70G的硬盘,光驱设置为RedHat的安装盘,启动时连接。dd往容量一致或更大的硬盘写,是没问题的。现在120G->70G,估计不靠谱。

    启动虚拟机,快按一下Escape键,在启动菜单,选择 CD-ROM驱动器 ---> 诊断问题 ---> 修复RedHat系统。

    按Enter键,到挂载已安装Linux系统那里,选择3不挂载,直接开始Shell命令行。

    查看确认磁盘

    fdisk -l | grep sd 
    

      

    再使用vgs/vgdisplay和lvs/lvdisplay查看lvm的内容,接着删除swap(复制swap感觉没什么意义),开始dd复制。

    lvremove /dev/rhel/swap
    dd if=/dev/sda of=/dev/sdb

    开始漫长的等待,终于完成。关机。

    shutdown now

    2.2尝试修复

    移除第一张虚拟硬盘,再次从CD-ROM启动系统,尝试修复文件系统,因为磁盘容量减小的缘故。如果是一样的容量或更大的话,至此已经成功,无需修复。

    pvchange -u -x y /dev/sda2
    pvresize /dev/sda2

    貌似已经修复不了,虽然我也不懂,但是以我的知识,绝对修不好:

    只好删除/dev/sda2然后重建。

    fdisk /dev/sda
    m    #查看帮助
    d     #删除
    2
    n     #新建
    p 2 w   #保存退出

    再查看pvdisplay vgdisplay lvdisplay,意外地发现没有被删除,好吧,那就只好一个个删除。

    lvremove root
    vgremove rhel
    pvremove /dev/sda2

    3重新规划

    看来只有通过xfsdump和xfsrestore来倒文件了。要不要再加一个空的35G的磁盘格式化成xfs格式作为中转呢?(后来想想还是加一张盘更好)。

    3.1重新分区

    没有加新盘。目前只挂载了第二张盘,重新分区,数据区的前一半保留起来做还原区,后一半做成xfs格式的分区,用来保存第一个硬盘的root数据。

    fdisk /dev/sda
    d
    2
    n    #新建
    p    #基本分区
    2

    +34G  大小34G
    n    #新建
    p
    3


    w    #保存退出

    mkfs.xfs /dev/sda3

    关机。

    3.2备份root

    重新加上第一个硬盘,重启到诊断恢复模式。开始备份

    lvcreate -L 19G -name swap rhel      #重新为第一个盘上建立swap分区
    mkdir /rot
    vgchange -ay rhel                #激活rhel
    mount /dev/rhel/root /rot          #挂载root到/rot
    mkdir /bkroot
    mount /dev/sdb3 /bkroot           #挂载新盘的第3个分区到/bkroot
    xfsdump -f /bkroot/rot.img /rot      #备份

    这次备份快很多,完毕后再关机。

    3.3还原root

    再次移除第一个硬盘,重启到诊断恢复模式。先创建逻辑卷

    pvcreate /dev/sda2
    vgcreate rhel /dev/sda2
    lvcreate -L 33G -n root rhel
    mkfs.xfs /dev/rhel/root

    开始还原

    mkdir /rot
    mount /dev/rhel/root /rot
    mkdir /bkroot
    mount /dev/sda3 /bkroot
    xfsrestore -f /bkroot/rot.img /rot

    等待命令完成。

    3.4扫尾

    umount /bkroot            #卸载第三分区sda3
    pvcreate /dev/sda3          #转换sda3成lvm
    vgextend rhel /dev/sda3       #加入vg
    lvresize -L 49G /dev/rhel/root    #扩大root逻辑卷
    xfs_growfs /dev/rhel/root      #文件系统跟着扩大
    df -h                 #查看新大小
    lvcreate -L 19G -n swap rhel   #新建swap逻辑卷
    lvdisplay
    

      

    然后正常重启

    reboot
    

    结语:

    新硬盘上跑起来了,感觉就像做梦一样!

    参考了一下链接,非常感谢(实际还有更多,没记下来)

    https://www.vmware.com/support/ws45/doc/disks_vdiskmanager_run_ws.html

    https://www.ibm.com/developerworks/cn/linux/l-cn-pclvm-rstr/index.html

    https://www.runoob.com/linux/linux-comm-dd.html

    https://linux.die.net/man/8/xfs_repair

    http://man.linuxde.net/fdisk

  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/hwajie/p/11212604.html
Copyright © 2011-2022 走看看