zoukankan      html  css  js  c++  java
  • 从CentOS7默认安装的/home中转移空间到根目录/

    一、基础概念

    Cent0S 7默认启用LVM2(Logical Volume Manager),把机器的一块硬盘分为两个区sda1和sda2,其中分区sda1作为系统盘/boot挂载,少量空间;sda2作为一个物理卷并且完全作为逻辑卷组VG(Volume Group)centos,在这个逻辑卷组centos中建立三个逻辑卷LV(Logical Volume)root和home还有swap,分别挂载到根目录/和/home以及swap。而两个分区sda1和sda2上都建立了文件系统XFS,文件系统XFS作为RedHat的默认文件系统也有它的考虑,成为继ext3,ext4之后的主流文件系统。

    几个概念的关系:M个物理硬盘HD或者物理硬盘中的分区一起组建为一个逻辑卷组VG及存储池,在卷组VG中创建N个逻辑卷LV,在一个逻辑卷LV中创建文件系统比如xfs。物理硬盘/分区、逻辑卷有最小基本寻址单元,CentOS7默认的大小为4MB,二者一一对应,类似于链接或者变量引用,但是一个二者关系并非一直不变,因为物理硬盘可能发生变化而逻辑卷自动调整。创建卷组和逻辑卷,会类似于创建分区一样在磁盘开始位置写入卷的信息VGDA(卷组描述符区域,Volume Group Descriptor Area)用于识别。逻辑卷的好处在于屏蔽物理底层支撑,可自由扩展变更,而不用担心硬盘或者分区的物理空间局限,也就不会存在为了扩展分区大小而去备份/扩展分区重新格式化硬盘等问题。

    HD/分区--通过pvcreate->PV--通过vgcreate(vgchange)/vgextend-->VG--通过lvcreate/lvextend-->LV--通过mkfs-->FS--通过xfs_growfs等-->df磁盘生效

    但是关键点在于,CentOS 7默认安装时/home占用太多空间,根目录相较而言就小得多(只有50G),而OpenStack安装以及存储的东西都在根目录下。上传几个镜像说不定就把你的根目录空间耗尽。不像其他文件系统ext3,ext4或者reiserfs等,有命令(resize2fs,resize_reiserfs)直接支持缩小文件系统的大小,默认安装的xfs支持扩展增大但是不支持缩小空间

    二、步骤概览

    所以下面要做的步骤大概为:(直接root用户登录系统,本机或者ssh root过去,如果使用当前普通用户会遇到点不必要的麻烦

    1. 备份/home/用户文件,要是没啥内容则忽略这步(为什么非要这个/home,删掉直接用root?还是保留它,它存在也有道理的,再说生产环境还是不要只用root)

    2. umount /home 卸载并lvremove删除这个home逻辑卷,释放它的空间,vgdisplay查看卷组可用空间大小

    3. lvcreate新建一个新的home卷,并在其上mkfs建立xfs文件系统,(分配挂载到/home - 不用更改/etc/fstab,重启即可,) 拷贝回来之前的内容

    (这个时候空余的空间随便你分配,可以再建立别的逻辑卷,或者直接空闲下来以后使用,也可以直奔主题的走下面的第四步)

    4. 把之前的home逻辑卷释放并分配新卷home之后剩下的空间,lvextend分配给root卷,并用命令xfs_growfs扩展它的文件系统空间

    三、相关命令

    看看大概的命令有哪些

    # pv

      

    # vb

    # lv

    四、默认安装情况

    # df -h //查看磁盘使用情况,逻辑卷的挂载格式为/dev/mapper/VolumeGroupName-LogicalVolumeName

    # cat /etc/fstab

    # vgdisplay //查看逻辑卷组情况


    # lvdisplay //查看逻辑卷情况,默认三个,root、home和交换空间swap

     

    五、操作步骤

    1. 备份/home中的用户数据

    [root@localhost /]# mkdir /backup && mv /home/* /backup
    [root@localhost /]# ls /home/

    2. 卸载这个/home并删除逻辑卷home

    # umount /home

    # df -h //查看磁盘情况

    # lvremove /dev/centos/home //删除逻辑卷home

    这里注意,Free PE / Size 中显示的空间为卷组的空闲空间873G,之前为64M,也就是刚才删除的逻辑卷home所占用的空间,我们就从这个当中拿出一部分比如50G作为home

    3. 新建一个卷home,fdisk格式化为8e格式,文件系统还是搞为xfs(同样挂载到/home)

    # lvcreate -L 50G -n home centos //L表示大小,默认单位为M;n表示卷名;这里的centos是CentOS7安装系统的时候就默认建立好的卷组名

    # lvdisplay //查看逻辑卷home

    # vgdisplay //再次查看卷组空间大小

    [# vgchange -ay centos  //可选步骤:激活卷组centos,使得这个新建的home逻辑卷生效(用vgchange而不用lvchange)]

    # mkfs -t xfs /dev/centos/home //在新建的逻辑卷home上建立xfs文件系统

    # mount /dev/centos/home /home/ //把这个新逻辑卷home挂到之前的文件夹/home中去,直接重启用fstab来挂载也行

    # df -h //现在来查看磁盘使用情况

    # mv /backup/* /home/ //再把之前拷出来的东西拷回新建的/home中,拷贝完成就可以直接用这个普通用户来桌面登录系统了,不用重启

    4. 最后再把释放出来多余的空间分配给root卷并xfs_growfs扩展文件系统
    # lvextend -L +823G /dev/centos/root //把剩下的823G现在分配给root卷,剩下那点渣渣空间让它闲着;+号表示在原来的基础上额外增加,不要加号则设定为具体额度

    # lvdisplay //查看逻辑卷和卷组情况,这下root的空间就多达到873G,之前的是50G

    [# vgchange -ay centos //可选步骤:再次激活下卷组centos]

    # df -h //不使用xfs_growfs扩展文件系统,磁盘是不认得多的空间的

    # xfs_growfs /dev/centos/root //扩展root卷

    # df -h //再看root大小已经生效,800多G了

    六、命令汇总

    简单总结下,就是下面几条命令:

      
      1. # mkdir /backup  
      2. # mv /home/* /backup/  
      3. # umount /home  
      4. # lvremove /dev/centos/home  
      5. # lvcreate -L 50G -n home centos  
      6. # mkfs.xfs /dev/centos/home  
      7. # mv /backup/* /home/  
      8. # lvextend -L +xxxG /dev/centos/root  
      9. # xfs_growfs /dev/centos/root  
      10. # rm -rf /backup 
  • 相关阅读:
    hdu 1042 N!
    hdu 1002 A + B Problem II
    c++大数模板
    hdu 1004 Let the Balloon Rise
    hdu 4027 Can you answer these queries?
    poj 2823 Sliding Window
    hdu 3074 Multiply game
    hdu 1394 Minimum Inversion Number
    hdu 5199 Gunner
    九度oj 1521 二叉树的镜像
  • 原文地址:https://www.cnblogs.com/xingfuxiaokong/p/13476823.html
Copyright © 2011-2022 走看看