一、简述
LVM是 Logical Volume Manager(逻辑卷管理)的简写,可以理解为我们在不停机的状态下对各个分区大小进行动态调整,且调整过程中不会影响我们的数据。
LVM: Logical Volume Manager,Version:2,也是我们使用时的LVM2工具。
二、使用
1.基础
1.1)图示模型
1.2)基本术语
物理存储介质(PhysicalStorageMedia):指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
物理卷(Physical Volume,PV):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
物理块(Physical Extent,PE):每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
逻辑块(Logical Extent,LE):逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
简述即如下:
PV:物理磁盘分区
VG:所有PV组成一个大的VG才能被分区为LV
LV:VG中划分的逻辑单元
1.3)LVM工具
[root@wybaron_host1015 ~]# yum install -y lvm2*
[root@wybaron_host1015 ~]# rpm -qa | grep lvm2
lvm2-2.02.177-4.el7.x86_64
lvm2-devel-2.02.177-4.el7.x86_64
lvm2-sysvinit-2.02.177-4.el7.x86_64
lvm2-libs-2.02.177-4.el7.x86_64
lvm2-cluster-2.02.177-4.el7.x86_64
lvm2-lockd-2.02.177-4.el7.x86_64
lvm2-python-libs-2.02.177-4.el7.x86_64
lvm2-python-boom-0.8.5-4.el7.noarch
# PV创建前需要设置分区类型为8e ,分区类型8e表示为LVM分区
[root@wybaron_host1015 ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x3c3d1878 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+4G
分区 1 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+4G
分区 2 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (16779264-41943039,默认为 16779264):
将使用默认值 16779264
Last 扇区, +扇区 or +size{K,M,G} (16779264-41943039,默认为 41943039):+5G
分区 3 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已选择分区 4
起始 扇区 (27265024-41943039,默认为 27265024):
将使用默认值 27265024
Last 扇区, +扇区 or +size{K,M,G} (27265024-41943039,默认为 41943039):+5G
分区 4 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3c3d1878
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 8390655 4194304 8e Linux LVM
/dev/sdc2 8390656 16779263 4194304 8e Linux LVM
/dev/sdc3 16779264 27265023 5242880 8e Linux LVM
/dev/sdc4 27265024 37750783 5242880 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
# 通知内核识别分区
[root@wybaron_host1015 ~]# partx -a /dev/sdc
partx: /dev/sdc: error adding partitions 1-4
[root@wybaron_host1015 ~]# partx -a /dev/sdc
partx: /dev/sdc: error adding partitions 1-4
2.PV管理工具
2.1)命令
pvs 显示pv的简要信息
pvdisplay 显示pv的详细信息
pvcreate /dev/DEVICE 创建pv
pvmove /dev/DEVICE1 /dev/DEVICE2 移动/dev/DEVICE1上的数据至/dev/DEVICE2上
2.2)案例
# 查看系统已有pv信息
[root@wybaron_host1015 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
[root@wybaron_host1015 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID f4PO9R-OTuL-2Biq-4sSJ-Ua6S-eCoR-xeFygM
# 创建一些新的pv并查看其信息
[root@wybaron_host1015 ~]# ls /dev/sdc[0-9]
/dev/sdc1 /dev/sdc2 /dev/sdc3 /dev/sdc4
[root@wybaron_host1015 ~]# pvcreate /dev/sdc[1-3]
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdc2" successfully created.
Physical volume "/dev/sdc3" successfully created.
[root@wybaron_host1015 ~]# pvs /dev/sdc[1-3]
PV VG Fmt Attr PSize PFree
/dev/sdc1 lvm2 --- 4.00g 4.00g
/dev/sdc2 lvm2 --- 4.00g 4.00g
/dev/sdc3 lvm2 --- 5.00g 5.00g
[root@wybaron_host1015 ~]# pvdisplay /dev/sdc[1-3]
"/dev/sdc2" is a new physical volume of "4.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc2
VG Name
PV Size 4.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID yMBIbO-CpCo-XZ5t-nJlT-ATUD-VaVl-X4PFSV
"/dev/sdc3" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc3
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Z340dn-Jsbz-Fb6O-bKex-teRn-eO4X-wbyO19
"/dev/sdc1" is a new physical volume of "4.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 4.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID JfuURa-lECT-6vWJ-b2CY-41un-JDN9-YahCf4
3.VG管理工具
3.1)命令
vgs 显示vg简要信息
vgdisplay 显示vg的详细信息
vgcreate [-s #[kKmMgGtTpPeE]] VG_name PV_names 创建一个新的vg
vgextend VG_name PV_name[s] 添加一个或多个新的pv至已有vg中
vgremove VG_name 彻底删除一个VG,但是需要注意其中的数据
vgreduce VG_name PV_name[s] 从已有vg中移除一个或多个pv
注意:要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息,如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其它地方。
## 即从已有vg中移除一个或多个pv前首先要做 pvmove
3.2)案例
# 查看系统已有vg信息
[root@wybaron_host1015 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
[root@wybaron_host1015 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.00 GiB
PE Size 4.00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 0 / 0
VG UUID 3HBCQo-w7ct-PQw9-tasA-dkCZ-MBSg-UMqiPR
# 创建一些新的vg并查看其信息
[root@wybaron_host1015 ~]# vgcreate -s 16m VG_data /dev/sdc[1-3]
Volume group "VG_data" successfully created
[root@wybaron_host1015 ~]# vgs VG_data
VG #PV #LV #SN Attr VSize VFree
VG_data 3 0 0 wz--n- 12.95g 12.95g
[root@wybaron_host1015 ~]# vgdisplay VG_data
--- Volume group ---
VG Name VG_data
System ID
Format lvm2
Metadata Areas 3
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 3
Act PV 3
VG Size 12.95 GiB
PE Size 16.00 MiB
Total PE 829
Alloc PE / Size 0 / 0
Free PE / Size 829 / 12.95 GiB
VG UUID N2x9N0-E8bo-aJND-hVic-yFRJ-DezU-1ec31j
4.LV管理工具
4.1)命令
lvs 显示lv的简要信息
lvdisplay 显示lv的详细信息
lvcreate -L #[mMgGtT] -n LV_name VG_name 在已有的VG上创建一个名为LV_name的lv
lvremove /dev/VG_name/LV_name 删除VG_name上的LV_name
4.2)案例
# 查看系统已有lv信息
[root@wybaron_host1015 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
[root@wybaron_host1015 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID DCXYpR-iqGL-9jfh-gd8W-AC6t-hbVy-O0A2vL
LV Write Access read/write
LV Creation host, time node1.localdomain, 2018-07-27 17:30:21 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID zXwvOU-zhfB-jTc3-gbBM-mgZR-mckN-B3kA9r
LV Write Access read/write
LV Creation host, time node1.localdomain, 2018-07-27 17:30:21 +0800
LV Status available
# open 1
LV Size <17.00 GiB
Current LE 4351
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
# 创建一些新的lv并查看其信息
[root@wybaron_host1015 ~]# lvcreate -L 7g -n web1 VG_data
Logical volume "web1" created.
[root@wybaron_host1015 ~]# lvcreate -L 3g -n web2 VG_data
Logical volume "web2" created.
[root@wybaron_host1015 ~]# lvs VG_data
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
web1 VG_data -wi-a----- 7.00g
web2 VG_data -wi-a----- 3.00g
[root@wybaron_host1015 ~]# lvdisplay VG_data
--- Logical volume ---
LV Path /dev/VG_data/web1
LV Name web1
VG Name VG_data
LV UUID z22ARK-VpMU-oU2S-naPa-MfQ9-PWhP-gMS99x
LV Write Access read/write
LV Creation host, time wybaron_host1015, 2018-10-11 13:19:56 +0800
LV Status available
# open 0
LV Size 7.00 GiB
Current LE 448
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/VG_data/web2
LV Name web2
VG Name VG_data
LV UUID CLcfCe-6gJb-WhPv-FGKN-ujL3-4YSy-9Psghs
LV Write Access read/write
LV Creation host, time wybaron_host1015, 2018-10-11 13:20:06 +0800
LV Status available
# open 0
LV Size 3.00 GiB
Current LE 192
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
5.LVM挂载和使用
案例
# 建立文件系统
[root@wybaron_host1015 data]# mkfs.ext4 /dev/VG_data/web1 web
web1root/ web2root/
[root@wybaron_host1015 data]# mkfs.ext4 /dev/VG_data/web
web1 web2
[root@wybaron_host1015 data]# mkfs.ext4 /dev/VG_data/web1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
458752 inodes, 1835008 blocks
91750 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1879048192
56 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@wybaron_host1015 data]# mkfs.ext3 /dev/VG_data/web2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
# 建立挂载点
[root@wybaron_host1015 data]# mkdir /data/web1root
[root@wybaron_host1015 data]# mkdir /data/web2root
# 挂载并使用
[root@wybaron_host1015 data]# mount /dev/VG_data/web1 /data/web1root/
[root@wybaron_host1015 data]# mount /dev/VG_data/web2 /data/web2root/
## 需要开机自启动需要将挂载信息写入文件"/etc/fstab"中
# 查看空间大小
[root@wybaron_host1015 data]# df -h /data/web1root/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VG_data-web1 6.8G 32M 6.4G 1% /data/web1root
[root@wybaron_host1015 data]# df -h /data/web2root/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VG_data-web2 2.9G 4.6M 2.8G 1% /data/web2root
6.LVM扩展
6.1)命令
lvextend -L [+]#[mMgGtT] /dev/VG_name/LV_name 扩展逻辑卷的物理边界
resize2fs /dev/VG_name/LV_name 扩展逻辑边界(文件系统)
# 使用时应先扩展个物理边界,再扩展逻辑边界
6.2)案例
## 将上述中的"web1root"文件夹空间扩展至5G
[root@wybaron_host1015 data]# lvextend -L +2g /dev/VG_data/web2
Size of logical volume VG_data/web2 changed from 3.00 GiB (192 extents) to 5.00 GiB (320 extents).
Logical volume VG_data/web2 successfully resized.
[root@wybaron_host1015 data]# resize2fs /dev/VG_data/web2
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/VG_data/web2 is mounted on /data/web2root; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/VG_data/web2 is now 1310720 blocks long.
[root@wybaron_host1015 data]# lvs /dev/VG_data/web2
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
web2 VG_data -wi-ao---- 5.00g
[root@wybaron_host1015 data]# lvdisplay /dev/VG_data/web2
--- Logical volume ---
LV Path /dev/VG_data/web2
LV Name web2
VG Name VG_data
LV UUID CLcfCe-6gJb-WhPv-FGKN-ujL3-4YSy-9Psghs
LV Write Access read/write
LV Creation host, time wybaron_host1015, 2018-10-11 13:20:06 +0800
LV Status available
# open 1
LV Size 5.00 GiB
Current LE 320
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
[root@wybaron_host1015 data]# df -h /data/web2root/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VG_data-web2 4.9G 6.1M 4.7G 1% /data/web2root
7.逻辑卷缩减
7.1)命令
umount /dev/VG_name/LV_name 卸载需要缩减的逻辑卷
e2fsck -f /dev/VG_name/LV_name 文件系统的强制检测和修复
resize2fs /dev/VG_name/LV_name #[mMgGtT] 缩减逻辑边界(文件系统)
lvreduce -L [-]#[mMgGtT] /dev/VG_name/LV_name 缩减物理边界
mount 再次挂载
7.2)案例
# 缩减上述文件夹"/data/web1root"总空间为4G大小
[root@wybaron_host1015 ~]# umount /data/web1root/
###或者#############
#### [root@wybaron_host1015 ~]# umount /dev/VG_data/web1
####################
[root@wybaron_host1015 ~]# e2fsck -f /dev/VG_data/web1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/VG_data/web1: 11/458752 files (0.0% non-contiguous), 69631/1835008 blocks
[root@wybaron_host1015 ~]# resize2fs /dev/VG_data/web1 4g
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/VG_data/web1 to 1048576 (4k) blocks.
The filesystem on /dev/VG_data/web1 is now 1048576 blocks long.
[root@wybaron_host1015 ~]# lvreduce -L -3g /dev/VG_data/web1
WARNING: Reducing active logical volume to 4.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce VG_data/web1? [y/n]: y
Size of logical volume VG_data/web1 changed from 7.00 GiB (448 extents) to 4.00 GiB (256 extents).
Logical volume VG_data/web1 successfully resized.
[root@wybaron_host1015 ~]# mount /dev/VG_data/web1 /data/web1root/
[root@wybaron_host1015 ~]# df -h /data/web1root/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VG_data-web1 3.9G 28M 3.6G 1% /data/web1root
8.逻辑卷删除
8.1)命令
umount /dev/VG_name/LV_name[s] 卸载挂载的lv
lvremove /dev/VG_name/LV_name[s] 删除VG_name下的lv
vgremove VG_name 删除vg
pvremove /dev/DEVICE[S] 删除pv
8.2)案例
# 彻底删除上述建立的VG_data
[root@wybaron_host1015 ~]# umount /dev/VG_data/web{1,2}
[root@wybaron_host1015 ~]# lvremove /dev/VG_data/web{1,2}
Do you really want to remove active logical volume VG_data/web1? [y/n]: y
Logical volume "web1" successfully removed
Do you really want to remove active logical volume VG_data/web2? [y/n]: y
Logical volume "web2" successfully removed
[root@wybaron_host1015 ~]# vgremove VG_data
Volume group "VG_data" successfully removed
[root@wybaron_host1015 ~]# pvremove /dev/sdb[1-3]
Device /dev/sdb1 excluded by a filter.
Device /dev/sdb2 excluded by a filter.
Device /dev/sdb3 excluded by a filter.
[root@wybaron_host1015 ~]# pvremove /dev/sdc[1-3]
Labels on physical volume "/dev/sdc1" successfully wiped.
Labels on physical volume "/dev/sdc2" successfully wiped.
Labels on physical volume "/dev/sdc3" successfully wiped.
[root@wybaron_host1015 ~]# pvs /dev/sdc[1-3]
Failed to find physical volume "/dev/sdc1".
Failed to find physical volume "/dev/sdc2".
Failed to find physical volume "/dev/sdc3".
[root@wybaron_host1015 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
[root@wybaron_host1015 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
三、补充
文件系统的挂载使用
光盘设备一般挂载的方式为只读方式进行挂载。
光盘设备文件:
IDE:/dev/hdc
SATA:/dev/sr0
符号链接文件:
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw
挂载方式(只读挂载)
mount -r /dev/cdrom /media/cdrom
卸载方式
umount /dev/cdrom