# LVM在线扩容内容
如服务器上没有安装LVM,使用下面命令安装:
```
yum install -y lvm2
```
* pv 物理卷带有逻辑卷元数据的物理设备:分区、硬盘、镜像文件、raid设备等;
* vg 卷组由多个物理卷组成,容量是所有物理卷的累计,提供容量的存储池;
* lv 逻辑卷真正操作的对象,对它进行格式化、挂载;
# 创建逻辑卷
对于裸盘容量小于2T的我们可以使用fdisk对盘进行一系列操作,如容量大于2T,请使用parted工具。
## 创建PV
```
# pvcreate /dev/${disk_name}{number} //可以是多个盘,如:pvcreate /dev/sda7 /dev/sda8
```
使用 pvs(或pvdisplay) 命令查看创建好的pv,如:
```
PV VG Fmt Attr PSize PFree
/dev/sda7 lvm2 -- 1.92G 1.92G
/dev/sda8 lvm2 -- 1.92G 1.92G
```
## 创建VG
```
# vgcreate vg-test /dev/xxx
Volume group "vg-test" successfully created
```
使用 vgs(或vgdisplay) 命令查看创建好的pv,如:
```
VG #PV #LV #SN Attr VSize VFree
vgdata 1 0 0 wz--n- 100.00g 100.00g
```
## 创建LV
创建了一个名为lv-test,容量大小事100M的分区,并且是从vg-test中划分的lv。
```
# lvcreate -L 100M -n lv-test vg-test
Logical volume "lv-test" created
```
如果想把vg-test容量全部给lv-test:
```
# lvcreate -l 100%FREE -n lv-test vg-test
```
使用 lvs(或lvdisplay) 命令查看创建好的lv。
## 创建文件系统(对lv进行格式化)
ext4文件系统:
```
mkfs.ext4 /dev/vg-test/lv-test
```
xfs文件系统:
```
mkfs.xfs /dev/vg-test/lv-test
```
# 挂载
blkid 查看UUID
echo "UUID=xxxx /data(要挂载的目录) 文件系统类型 defaults 0 0">> /etc/fstab
mount -a # 验证添加是否有问题
df -h # 查看结果
# 扩容VG
我们继续使用上面的例子,如我们需要扩容vg-test,增加50G给vg-test。
## 如果是裸盘
如果你拿到的是裸盘(容量小于2T),先对裸盘进行分区操作:
```
##分区
# echo -e "o\nn\np\n1\n\n\nt\n8e\nw" | fdisk /dev/${disk_name}
```
### 创建PV
```
pvcreate /dev/${disk_name}{number}
```
### 扩容VG
```
vgextend vg-test /dev/${disk_name}{number}
```
## 如果是剩余容量的PV
```
vgextend vg-test /dev/${disk_name}{number}
```
# 扩容LV
我们接着使用上面的实例,先进行vgextend操作,然后再扩容LV卷。
```
lvextend -l +100%FREE /dev/vg-test/lv-test //使用free vg的全部容量
或
lvextend -L +300M /dev/vg-test/lv-test //使用free vg的300M容量
```
刷新扩容后的卷的容量:
如果lv卷文件系统是ext3/4格式:
```
resize2fs /dev/vg-test/lv-test
```
如果lv卷文件系统是xfs格式:
```
xfs_growfs /dev/vg-test/lv-test
```
# 扩展学习
如果lv卷的文件系统是xfs,当我们使用“resize2fs /dev/{vgname}/{lvname}”命令进行卷的空间容量刷新时,就会出现如下错误:
```
Linux resize2fs: Bad magic number in super-block 当尝试打开 /dev/{vgname}/{lvname} 时找不到有效的文件系统超级块。
```
这时,我们需要使用xfs的刷新命令:
```
xfs_growfs /dev/{vgname}/{lvname}
```