一、基础概念

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

# 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

从CentOS7默认安装的/home中转移空间到根目录/ - LVM操作简明教程的更多相关文章

  1. python中global的用法——再读python简明教程

    今天看了知乎@萧井陌的编程入门指南,想重温一下 <python简明教程>,对global的用法一直不太熟练,在此熟练一下,并实践一下python中list.tuple.set作为参数的区别 ...

  2. centos7默认安装没有连接到网络

    1.显示所有连接 # nmcli con show 2.连接到网络 # nmcli con up enp0s3 这个ens33是通过显示所有连接查到的

  3. centos7默认安装没有连接网络

    1.显示所有连接 #nmcli con show 2.连接网络 #nmcli con up ens33 这个ens33是通过第一步查到的 /etc/sysconfig/network-scripts目 ...

  4. Linux Centos7下安装Python

    1.查看是否已经安装Python Centos7默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. 使用python -V命令查看一下是否安装Pytho ...

  5. CentOS7本地安装MySQL5.7

    操作系统:3.10.0-514.el7.x86_64 安装包:mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz 1:检查是否安装了 libaio(centos7默认 ...

  6. (转)LINUX CENTOS7下安装PYTHON

    LINUX CENTOS7下安装PYTHON 原文:http://www.cnblogs.com/lclq/p/5620196.html Posted on 2016-06-27 14:58 南宫羽香 ...

  7. 在CentOS7上安装MySQL5.7-源码包方式

    缺点:后期升级不方便,生产中建议RPM包方式安装 CentOS7默认安装了和MySQL有兼容性的MariaDB数据库,在我们安装MySQL5.7之前为了避免发生冲突首先删除MariaDB. # rpm ...

  8. CentOS7 默认防火墙firewalld

    firewalld基础 firewalld是CentOS7源生支持的防火墙,firewalld最大的好处有两个:支持动态更新,不用重启服务:第二个就是加入了防火墙的“zone”概念. firewall ...

  9. 阿里云 Centos7.3安装mysql5.7.18 rpm安装

    卸载MariaDB CentOS7默认安装MariaDB而不是MySQL,而且yum服务器上也移除了MySQL相关的软件包.因为MariaDB和MySQL可能会冲突,故先卸载MariaDB. 1.安装 ...

随机推荐

  1. [Fundamental of Power Electronics]-PART II-9. 控制器设计-9.1 引言

    9.1 引言 在所有的开关变换器中,输出电压\(v(t)\)都是输入电压\(v_{g}(t)\),占空比\(d(t)\),负载电流\(i_{load}(t)\)和电路元件值的函数.在DC-DC变换器应 ...

  2. html页面自定义文字水印效果案例

    在系统开发过程中,一些数据或页面比较敏感的地方,客户会要求实现水印效果,防止内部人员截图或拍照泄露信息. 自定义文字水印顾名思义就是利用js在完成页面渲染的同时,往页面的最底层动态生成多个带水印信息的 ...

  3. JavaWeb 补充(JSP&EL&JSTL)

    1. JSP:     1. 指令     2. 注释     3. 内置对象 2. MVC开发模式 3. EL表达式 4. JSTL标签 5. 三层架构 JSP: 1. 指令     * 作用:用于 ...

  4. Java(114-132)【Scanner类、Random类、ArrayList类】

    1.API概述和使用步骤 应用程序编程接口.Java的API是一本程序员的字典,学会查询 2.Scanner 概述及其API文档 键盘输入 类都是大写的Scanner,关键字是小写的public 3. ...

  5. Kubernetes部署metrics-server提示健康检测报错500,简单解决方式

    为什么写? 最近有项目要用到HPA(Horizontal Pod Autoscaler)依赖了k8s的 metrics 指标才能做出自动缩扩容的动作,我这边用官方GitHub v0.4.2版本启动不起 ...

  6. Day07_34_集合概述

    集合概述 * 主要集合概述 - 集合相当于现实世界中的容器,主要包含两种存放模式,一个一个的存(Collection), 一对一对存(Map[key,value]) - 集合中只能存储引用数据类型,不 ...

  7. (数据科学学习手札118)Python+Dash快速web应用开发——特殊部件篇

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  8. 3- MySQL数据类型

    MySQL表字段类型 MySQL数据表的表示一个二维表,由一个或多个数据列构成. 每个数据列都有它的特定类型,该类型决定了MySQL如何看待该列数据,并且约束列存放相应类型的数据. MySQL中的列表 ...

  9. 各种数据类型是否可进入if判断

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. hdu3768 spfa+全排列

    题意:       给你一个无向图,和一些必须经过的点,问你从起点出发,到达所有必须经过的点再回来的最小总路径. 思路:       因为必须经过的点的数量很小,小于等于10,全排列是 10! = 3 ...