博文十八:LVM基础
一、简述
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 ~]# pvsPV VG Fmt Attr PSize PFree/dev/sda2 centos lvm2 a-- <19.00g 0
[root@wybaron_host1015 ~]# pvdisplay--- Physical volume ---PV Name /dev/sda2VG Name centosPV Size <19.00 GiB / not usable 3.00 MiBAllocatable yes (but full)PE Size 4.00 MiBTotal PE 4863Free PE 0Allocated PE 4863PV 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/sdc2VG Name PV Size 4.00 GiBAllocatable NOPE Size 0 Total PE 0Free PE 0Allocated PE 0PV 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/sdc3VG Name PV Size 5.00 GiBAllocatable NOPE Size 0 Total PE 0Free PE 0Allocated PE 0PV 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/sdc1VG Name PV Size 4.00 GiBAllocatable NOPE Size 0 Total PE 0Free PE 0Allocated PE 0PV 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 ~]# vgsVG #PV #LV #SN Attr VSize VFreecentos 1 2 0 wz--n- <19.00g 0
[root@wybaron_host1015 ~]# vgdisplay --- Volume group ---VG Name centosSystem ID Format lvm2Metadata Areas 1Metadata Sequence No 3VG Access read/writeVG Status resizableMAX LV 0Cur LV 2Open LV 2Max PV 0Cur PV 1Act PV 1VG Size <19.00 GiBPE Size 4.00 MiBTotal PE 4863Alloc PE / Size 4863 / <19.00 GiBFree 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_dataSystem ID Format lvm2Metadata Areas 3Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV 0Cur LV 0Open LV 0Max PV 0Cur PV 3Act PV 3VG Size 12.95 GiBPE Size 16.00 MiBTotal PE 829Alloc PE / Size 0 / 0 Free PE / Size 829 / 12.95 GiBVG 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 ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g
[root@wybaron_host1015 ~]# lvdisplay --- Logical volume ---LV Path /dev/centos/swapLV Name swapVG Name centosLV UUID DCXYpR-iqGL-9jfh-gd8W-AC6t-hbVy-O0A2vLLV Write Access read/writeLV Creation host, time node1.localdomain, 2018-07-27 17:30:21 +0800LV Status available# open 2LV Size 2.00 GiBCurrent LE 512Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block device 253:1--- Logical volume ---LV Path /dev/centos/rootLV Name rootVG Name centosLV UUID zXwvOU-zhfB-jTc3-gbBM-mgZR-mckN-B3kA9rLV Write Access read/writeLV Creation host, time node1.localdomain, 2018-07-27 17:30:21 +0800LV Status available# open 1LV Size <17.00 GiBCurrent LE 4351Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block 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_dataLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertweb1 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/web1LV Name web1VG Name VG_dataLV UUID z22ARK-VpMU-oU2S-naPa-MfQ9-PWhP-gMS99xLV Write Access read/writeLV Creation host, time wybaron_host1015, 2018-10-11 13:19:56 +0800LV Status available# open 0LV Size 7.00 GiBCurrent LE 448Segments 2Allocation inheritRead ahead sectors auto- currently set to 8192Block device 253:2--- Logical volume ---LV Path /dev/VG_data/web2LV Name web2VG Name VG_dataLV UUID CLcfCe-6gJb-WhPv-FGKN-ujL3-4YSy-9PsghsLV Write Access read/writeLV Creation host, time wybaron_host1015, 2018-10-11 13:20:06 +0800LV Status available# open 0LV Size 3.00 GiBCurrent LE 192Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block 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, 1605632Allocating 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, 294912Allocating 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/web2Size 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/web2LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertweb2 VG_data -wi-ao---- 5.00g
[root@wybaron_host1015 data]# lvdisplay /dev/VG_data/web2--- Logical volume ---LV Path /dev/VG_data/web2LV Name web2VG Name VG_dataLV UUID CLcfCe-6gJb-WhPv-FGKN-ujL3-4YSy-9PsghsLV Write Access read/writeLV Creation host, time wybaron_host1015, 2018-10-11 13:20:06 +0800LV Status available# open 1LV Size 5.00 GiBCurrent LE 320Segments 2Allocation inheritRead ahead sectors auto- currently set to 8192Block 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/web1WARNING: 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]: ySize 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]: yLogical volume "web1" successfully removed
Do you really want to remove active logical volume VG_data/web2? [y/n]: yLogical 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 ~]# vgsVG #PV #LV #SN Attr VSize VFreecentos 1 2 0 wz--n- <19.00g 0
[root@wybaron_host1015 ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot 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
转载于:https://my.oschina.net/comics/blog/2239930
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
