LVM管理
文章目录
1. 基本概念
LVM: Logical Volume Manager(逻辑卷管理),Linux环境下对磁盘分区进行管理的一种机制。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
2. LVM基本组成块
2.1 物理卷Physical Volume(PV):
可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件 (loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)
2.2 卷组Volume Group(VG):
由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)
2.3 逻辑卷Logical Volume(LV):
虚拟分区,由物理区域(physical extents)组成
2.4 物理区域Physical Extent(PE):
硬盘可供指派给逻辑卷的最小单位(通常为4MB)
2.5 逻辑区域Logical Extent(LE):
跟PE一样,只不过站在LV的视角上是叫LE,而在VG的视角上则是叫PE,其本质是一样的
3. 磁盘挂载
使用vcenter给虚拟机增加磁盘,这里以添加200G举例
3.1 查看磁盘信息
# 查看文件系统情况
df -h
fdisk -l
图中Disk /dev/sdb 为从Vcenter中添加的磁盘
3.2 磁盘初始化
# 对指定磁盘进行初始化操作
fdisk /dev/sdb
参数 | 说明 |
---|---|
m | 显示菜单和帮助信息 |
a | 活动分区标记/引导分区 |
d | 删除分区 |
l | 显示分区类型 |
n | 新建分区 |
p | 显示分区信息 |
q | 退出不保存 |
t | 设置分区号 |
v | 进行分区检查 |
w | 保存修改 |
x | 扩展应用,高级功能 |
- n,添加新分区
- p创建为主分区,回车使用默认分区号,回车两次使用默认的起始扇区和最后扇区
- 这里可以看见设置的类型是Linux类型,大小实际上不足1GB。但是我的根分区是Linux LVM类型的,所以还需要一次转换。
继续输入t修改类型,如果不知道类型的16进制码,可以输入L查看,图中可看到Linux LVM的16进制编码为8e
输入16进制编码 8e,将类型修改为LinuxLVM,Linux与LinuxLVM区别在于LVM可以动态调整分区大小
此时输入w保存退出
这个时候再输入fdisk -l,就可以看见创建的分区了。
3.3 创建PV(物理卷):
pvcreate /dev/sdb1
# 查看当前物理卷情况
pvdisplay
pvs
3.4 创建 VG
图中 PV Name /dev/sda2 为系统物理卷并且在VG centos里,现在创建的新物理卷名字为/dev/sdb1但还没有分配VG所以接下来创建VG(卷组)。
创建VG(卷组)
vgcreate vg_data /dev/sdb1
输入vgcreate vg_data /dev/sdb1,意思是vgcreate vg名称 需要加入的PV
vg名称这里使用的是vg_你要挂载的目录,例如,我需要挂载/data目录下则为vg_data
可以输入vgdisplay或者vgs查看卷组情况:
可以看到有两个VG,vg_data是自己创建,并且包含一个PV,说明操作成功,但是如果需要挂在到目录上使用还需要使用LV(逻辑卷)
3.5 创建LV(逻辑卷)
# 先查看已经创建的VG
vgdisplay /dev/vg_data
# 意思是 vgcreate 要显示的VG
# 其中的PE代表物理块,Total PE为所有物理块
lvcreate –n lv_data –l 51199 vg_data
# lvcreate –n lv_名称 –l 表示需要使用的物理块数值为上面的Total PE数值 ,后面加上所在的VG名称,便创建成功了。
3.6 格式化LV
# 接下来对LV进行格式化,格式化成需要的格式 这里以ext4演示
mkfs.ext4 /dev/vg_data/lv_data
# mkfs.需要的格式 需要格式化的LV位置
3.7 挂载
在格式化成功后需要挂载到指定目录,先创建目录 /data并挂载LV到/data目录,语法为 mount 指定的LV 需要挂载的目录
在挂载继续查看文件系统情况输入:df –h 下图显示vg_data中的lv_data已经成功挂载到 /data 目录下
3.7.1 自动挂载
将挂载信息写入系统文件这样可以在系统启动时自动挂载
编辑/etc/fstab文件
vi /etc/fstab
先输入lv的路径 挂载的目录 lv的格式 加载时的特定参数选项默认defaults 0 0
注意事项:
1. 格式化命令写错。
例:dev/mapper/vg_data/lv_data /data etx4(这个单词是错的,应该是ext4)则会在登录时报错,同时xshell无法连接
2. 如路径写错。
例:如果在自动挂载文件 /etc/fstab 中将路径写成 /dev/mapper/vg_data/lv_data 则重启之后就会报错,会无法进入系统。应该将路径格式写为 /dev/mapper/vg_data-lv_data
重启后查看文件系统,已自动挂载
4. 磁盘扩容
4.1 初始化磁盘创建PV
以扩容VG centos下的/opt目录扩容20G为例(详见挂载部分)
初始化,创建PV
4.2 PV加入VG
将创建好的PV加入已有的VG即实现扩容
查看当前已有VG:vgs或vgdisplay
目前centos下有一个PV,使用vgextend命令进行扩容
vgextend centos /dev/sdc1
vgextend 扩容的VG名称 需要加入PV路径
再次使用查看已有VG:vgs
已经成功将PV加入VG centos
4.3 扩容LV
将加入的 PV 在 centos 中创建LV并格式化挂载对应目录即可(详见挂载部分)。
注意在创建 LV 时 –l 的值需要查看 VG 里的 FreePE 的数值,因为 Free PE 才是后来加入进来的 PV。
# 这里是将 FREE 中所有的剩余空间全部使用扩容到 /dev/mapper/centos-root 根目录下
# 可以通过命令 df -h 查看挂载路径,或者在 /etc/fstab 目录下查看
lvextend -l +100%FREE /dev/mapper/centos-root
# 或者可以使用如下命令扩容大小
lvextend -L +1G /dev/mapper/centos-root
4.4 格式化 LV
xfs_growfs /dev/mapper/centos-root
注:
resize2fs命令 针对的是ext2、ext3、ext4文件系统
xfs_growfs命令 针对的是xfs文件系统
查看系统分区
df –T –h