1. 相关命令
作用 | pv(物理卷) | vg(卷组) | lv(逻辑卷) |
---|---|---|---|
创建 | pvcreate | vgcreate | lvcreate |
扫描更改 | pvscan | vgscan | lvscan |
基本信息 | pvs | vgs | lvs |
详细信息 | pvdisplay | vgdisplay | lvdisplay |
扩展 | —— | vgextend | lvextend |
删除 | pvremove | vgremove | lvremove |
修改 | —— | vgchange | lvchange |
缩小 | —— | —— | lvreduce |
2. 创建lv
1)创建pv
# pvcreate /dev/vdb
2)创建vg
# vgcreate vg01 /dev/vdb /dev/vdc ……
3)创建lv
# lvcreate -L 1G -n lv01 vg01
- 说明:
-L
指定分配给 lv空间大小。-l
PE数量,默认4M。
vg是多个PE(块)组成的,而且每个vg块的PE最大数量是65534。查看PE可用pvdisplay。-n
, 指定lv名。
4)验证
#lvscan
5)格式化
# mkfs.ext4 /dev/vg01/lv01
等同于
# mkfs.ext4 /dev/mapper/vg01-lv01
6)挂载(见“linux基础-挂载”)
3. 扩展lv
1)扩展vg
# vgextend vg01 /dev/vdd
2)扩展lv
- 给lv添加指定大小空间
# lvextend -L +1G /dev/vg01/lv01
- 将vg的资源都给指定lv
# lvextend -l 100%vg /dev/vg01/lv02
或者
# lvcreate -l 100%vg -n ${lv_name} ${vg_name}
3)刷新
不刷新lvs命令可见扩容结果,但是df -Th 看不见。
# resize2shfs /dev/vg01/lv01
或者
# resize2fs /dev/vg01/lv01
- 如果格式化的时候是xfs格式(比如centos的根目录),使用如下命令:
xfs_growfs /dev/centos/root
4. lv 快照
1)创建快照
# lvcreate -L 100M -s -n lv01_snap /dev/vg01/lv01
2)快照自动增长
# vim /etc/lvm/lvm.conf
snapshot_autoextend_threshold=70
snapshot_autoextend_percent=50
# service lvm2-monitor start
5. 改名
- 语法
# lvrename /dev/vg名/旧lv名 新lv名
- 示例
# lvrename /dev/storage/pv_storage lv_storage
示例:见【备份服务器添加lv】第三步
6. FAQ
6.1 lv为xfs的格式时刷新
如系统盘的跟目录挂载为/,格式化方式为 xfs。
【报错】
不能用resize2shfs 刷新分区,因为它使用的是ext4,报错结果如下:
[root@vc-dev02 overlay2]# resize2fs /dev/centos/root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/centos/root 时
###【解决】
需要用xfs_growfs命令刷新
# xfs_growfs /dev/mapper/centos-root
6.2 虚拟磁盘扩容后pv和vg扩容
- 磁盘扩容后,pvs命令查看pv大小不变,使用以下命令刷新pv
# pvresize /dev/sdd1
- vg大小随pv刷新而刷新
- lv 还是要刷新的
7. 挂载脚本
用指定磁盘创建lv并挂载到目录
#!/bin/bash
############# 定义变量 ##########################
time_stamp=`date +%s`
echo "已有磁盘信息如下:"
fdisk -l |grep -e "/dev/sd" -e "/dev/vd"
read -p "请输入要挂载的磁盘(如:/dev/sdb) " sd_name
if [ -z "${sd_name}" ]
then
sd_name="/dev/sdb"
fi
read -p "请输入磁盘要挂载位置的全路径(默认/data)" dir_name
if [ -z "${dir_name}" ]
then
dir_name=/data
fi
echo " ###### [ create pv ] ########### "
pvs
pvcreate ${sd_name}
pvs
echo " ############### create vg #################"
echo "目前vg信息如下:"
vgs
read -p "请输入新vg名 (如:vg01) 1)不能和已有vg名重复 2) 直接回车默认 vg+时间戳 : " vg_name
if [ -z "${vg_name}" ]
then
vg_name=vg${time_stamp}
fi
vgcreate ${vg_name} ${sd_name}
echo "############# create lv #########################"
echo "目前lv信息如下:"
lvs
read -p "请输入新lv名 (如:lv01) 1)不能和已有lv名重复 2) 直接回车默认 lv+时间戳 : " lv_name
if [ -z "${lv_name}" ]
then
lv_name=lv${time_stamp}
fi
lvcreate -l 100%vg -n ${lv_name} ${vg_name}
echo "############# 格式化 pv #########################"
mkfs.ext4 /dev/${vg_name}/${lv_name}
echo "############# 挂载磁盘 #########################"
mkdir ${dir_name} -p
mount /dev/${vg_name}/${lv_name} ${dir_name}
uuid=`blkid|grep ${vg_name}-${lv_name} |awk -F \" '{print $2}'`
echo "UUID=${uuid} ${dir_name} ext4 defaults 0 0" >> /etc/fstab
df -Th|grep ${dir_name}