说明:此操作在centos7下进行,如果是centos6发行版,需要注意格式化LV的文件系统类型(centos7.0开始默认文件系统是xfs,centos6是ext4)、最后一步写入系统的类型
查看当前磁盘
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# df -lh
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 464K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 50G 2.5G 45G 6% /
tmpfs 379M 0 379M 0% /run/user/0
查看块分区
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
vdb 253:16 0 100G 0 disk
可以看到 /dev/vdb 为新增的磁盘
创建PV
基本PV命令:
- pvcreate 将物理分区新建为pv
- pvs/pvscan 查看系统里有pv的磁盘
- pvdisplay 显示系统上面的pv状态
- pvremove 删除pv
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# pvcreate -v /dev/vdb
Wiping signatures on new PV /dev/vdb.
Set up physical volume for "/dev/vdb" with 209715200 available sectors.
Zeroing start of device /dev/vdb.
Writing physical volume data to disk "/dev/vdb".
Physical volume "/dev/vdb" successfully created.
注意:
PV创建好之后,到这一步可以选择扩展或者新建挂载点,扩容的前提条件是扩容挂载点的磁盘格式是LVM格式,这里先演示新建挂载点然后删除挂载点并扩容
新增LVM挂载
查看PV
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# pvdisplay
"/dev/vdb" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdb
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Z0y1TE-H5D7-N2p6-u7Zl-u4d4-2DOL-w3j1eP
注意看 VG Name,前面的是系统安装时选择LVM格式的,后面的还没有创建,所以 VG Name 为空
新建VG
有关vg的命令:
- vgcreate [-s xM] vgName /dev/sd …… 新建vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv
- vgextend 扩展vg,就是增加pv
- vgs/vgscan 查看系统里有vg的磁盘
- vgdisplay 显示系统上面的vg状态
- vgremove 删除vg
- vgreduce 在vg里删除pv
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# vgcreate vg01_data /dev/vdb
Volume group "vg01_data" successfully created
查看VG
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# vgdisplay
--- Volume group ---
VG Name vg01_data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <100.00 GiB
PE Size 4.00 MiB
Total PE 25599
Alloc PE / Size 0 / 0
Free PE / Size 25599 / <100.00 GiB
VG UUID bEr3ZM-R5wv-nm0j-FAWm-xAwQ-I3im-TLKxHe
可以看到 vg01_data 为新建的VG
新建LV
有关lv的命令:
- lvcreate -l pe num /-L size -n lvname vgName 新建lv,-l指定pe的个数,-L指定容量,M,G
- lvextend 增加容量
- lvs/lvscan 查看系统里有lv的磁盘
- lvdisplay 显示系统上面的lv状态
- lvremove 删除lv
- lvreduce 在lv里减少容量
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# lvcreate -l 100%FREE -n lv_data vg01_data
Logical volume "lv_data" created.
格式化LV
格式化文件系统类型有xfs,ext4,这里测试使用ext4格式,默认centos7下使用xfs格式,centos6为ext4格式
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# mkfs.ext4 -i 32768 /dev/mapper/vg01_data-lv_data
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3276800 inodes, 26213376 blocks
1310668 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
800 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
新建挂载点并挂载
mkdir /data
echo '/dev/mapper/vg01_data-lv_data /data ext4 defaults 0 0' >>/etc/fstab
mount -a
查看新增挂载后的块分区
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
vdb 253:16 0 100G 0 disk
└─vg01_data-lv_data 252:0 0 100G 0 lvm /data
可以看到新增磁盘以LVM格式挂载在 /app 下
移除PV卷
查看文件系统
df -hT
卸载需要收缩的文件系统
- 以/dev/mapper/vg1-data为例
umount /dev/mapper/vg1-data
检测文件系统
e2fsck -f /dev/mapper/vg1-data
缩小文件系统容量
resize2fs /dev/mapper/vg1-data 100G
缩减逻辑卷的空间
lvreduce -L 100G /dev/mapper/vg1-data
重新挂载文件系统
mount /dev/mapper/vg1-data /data
查看数据使用量是否与收缩之前一样,也可以查看数据是否有变化
移除PV
- 以(PV)/dev/sdf为例(收缩VG前先先pvdisplay 查看需要删除的物理卷是否被某个逻辑卷所使用)
pvmove /dev/sdf
再查看一下/dev/sdf的详细信息:
pvdisplay /dev/sdf
要删除的物理卷/dev/sdf已经没被任何逻辑卷所使用了
从VG移除PV
vgreduce vg1 /dev/sdf
Removed "/dev/sdf" from volume group "v1"
移除完成,可以查看数据是否与原来的一样
删除LVM挂载点
删除挂载点
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# umount -v /dev/mapper/vg01_data-lv_data
umount: /data (/dev/mapper/vg01_data-lv_data) unmounted
删除LV
[ root@iz2zebxuxtu9vt42i6fd7hz:~ ]# lvremove /dev/vg01_data/lv_data
Do you really want to remove active logical volume vg01_data/lv_data? [y/n]: y
Logical volume "lv_data" successfully removed
删除VG(参数为 VG Name)
vgremove vg01_data
Do you really want to remove volume group "vg01_data" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg01_data/lv_data? [y/n]: y
Logical volume "lv_data" successfully removed
Volume group "vg01_data" successfully removed