目的
将两块空硬盘合并为“一块”,挂载到指定目录下,达到在一个目录使用2块硬盘所有空间的效果。
条件
- 硬盘1
/dev/sdb
# 硬盘1 200G - 硬盘2
/dev/sdc
# 硬盘2 300G - 硬盘3
/dev/sdd
# 硬盘2 500G
操作方法
创建逻辑卷
磁盘分区
# 查看新硬盘路径, 如: /dev/sdb
fdisk -l
# 执行对硬盘的分区操作
fdisk /dev/sdb
创建物理卷(pv)
pvcreate /dev/sdb1
pvcreate /dev/sdc1
# 显示有关物理卷的信息
pvs
# 显示物理卷的信息
pvdisplay
创建卷组(vg)
# `vgcreate [自定义LVM名称] [设备]`
# 先使用硬盘1创建vg:LVM
vgcreate ZKER_DATA /dev/sdb1
vgextend ZKER_DATA /dev/sdc1
# 显示有关卷组的信息
vgs
# 显示卷组的信息
vgdisplay
可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s
参数修改大小。
创建逻辑卷(lv)
# `lvcreate -L [自定义分区大小] -n [自定义分区名称] [vg名称]`
lvcreate -L 5.0G -n DB_DATA ZKER_DATA
# 或
lvcreate -l 100%VG -n DB_DATA ZKER_DATA
# 显示有关逻辑卷的信息
lvs
# 显示逻辑卷组的信息
lvdisplay
格式化分区
mkfs.ext4 /dev/ZKER_DATA/DB_DATA
# 或
mkfs -t ext4 /dev/ZKER_DATA/DB_DATA
挂载分区
# `mount [分区位置] [目录地址]`
mount /dev/ZKER_DATA/DB_DATA /data
# 查看挂载情况
df -h
设置开机加载
在/etc/fstab
文件末尾添加如下行。
/dev/ZKER_DATA/DB_DATA /data ext4 defaults 1 2
扩展逻辑卷空间
硬盘分区
# 执行对硬盘的分区操作
fdisk /dev/sdd
创建物理卷(pv)
pvcreate /dev/sdd1
pvs
pvdisplay
扩展vg
# `vgextend [自定义vg名称] [设备]`
# 使用硬盘2扩展vg
vgextend ZKER_DATA /dev/sdd1
创建lv
# `lvcreate -l +[自定义分区大小百分比][FREE|VG] [vg卷组设备路径]`\
lvextend -l +100%FREE /dev/ZKER_DATA/DB_DATA
lvdisplay /dev/ZKER_DATA/DB_DATA
resize2fs /dev/ZKER_DATA/DB_DATA
减少逻辑卷空间
# 卸载逻辑卷
umount /data
# 检测逻辑卷的剩余空间
e2fsck -f /dev/ZKER_DATA/DB_DATA
# 将文件系统减少到20G
resize2fs /dev/ZKER_DATA/DB_DATA 20G
# 重新挂载使用
mount -a
删除逻辑卷
lvdisplay
# 卸载目录
umount /dev/ZKER_DATA/DB_DATA
# 删除开机加载
vi /etc/fstab
# 删除逻辑卷
lvremove /dev/ZKER_DATA/DB_DATA
## 删除卷组
vgs
vgdisplay
vgremove ZKER_DATA
## 将物理卷转换成普通分区
pvs
pvdisplay
pvremove /dev/sdb1
pvremove /dev/sdc1
pvremove /dev/sdd1
## 修改分区id标识为普通分区
# 依次按键 t, 1, 83, w
fdisk /dev/sdc
移动逻辑卷(待测试)
例子:卷组vg2有两个物理卷/dev/sdb1(20G),/dev/sdc1(10G)。
[root@zg1 /]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_zg1 lvm2 a-- 19.51g 0
/dev/sdb1 vg2 lvm2 a-- 19.99g 19.99g
/dev/sdc1 vg2 lvm2 a-- 9.99g 9.99g
[root@zg1 /]# vgs
VG #PV #LV #SN Attr VSize VFree
vg2 2 0 0 wz--n- 29.98g 29.98g
vg_zg1 1 2 0 wz--n- 19.51g 0
## 在卷组下创建一个逻辑卷data占用8G空间。
[root@zg1 /]# lvcreate -L +8G -n data vg2
Logical volume "data" created
[root@zg1 /]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_zg1 lvm2 a-- 19.51g 0
/dev/sdb1 vg2 lvm2 a-- 19.99g 11.99g
/dev/sdc1 vg2 lvm2 a-- 9.99g 9.99g
[root@zg1 /]# mkfs.ext4 /dev/vg2/data
[root@zg1 ~]# blkid
[root@zg1 ~]# vi /etc/fstab
[root@zg1 ~]# mount -a
## 这个时候如果想把sdb1数据转移到sdbc1空间
# 转移空间数据
[root@zg1 /]# pvmove /dev/sdb1 /dev/sdc1
/dev/sdb1: Moved: 0.3%
/dev/sdb1: Moved: 100.0%
# 查看空间剩余,可以看到数据被转移
[root@zg1 /]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_zg1 lvm2 a-- 19.51g 0
/dev/sdb1 vg2 lvm2 a-- 19.99g 19.99g
/dev/sdc1 vg2 lvm2 a-- 9.99g 1.99g
# 从卷组中移除不需要的硬盘
[root@zg1 /]# vgreduce vg2 /dev/sdb1
Removed "/dev/sdb1" from volume group "vg2"
[root@zg1 /]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_zg1 lvm2 a-- 19.51g 0
/dev/sdb1 lvm2 a-- 19.99g 19.99g
/dev/sdc1 vg2 lvm2 a-- 9.99g 1.99g
#
[root@zg1 ~]# pvremove /dev/sdb1
然后就可以将硬盘手工拆除了。