说明:此操作在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