Linux系统的磁盘管理-LVM实战讲解
文章目录
- Linux系统的磁盘管理-LVM实战讲解
- 1.LVM简介
- 2.LVM的原理
- 3.LVM的基本组成
- 3.1物理卷(PV,Physical Volume)
- 3.2卷组 (VG,Volume Group)
- 3.3逻辑卷 (LV,Logical Volume)
- 3.4物理块 (PE,Physical Extends)
- 4.LVM的组成关系
- 5.LVM的优缺点
- 5.1优点
- 5.2缺点
- 6.常用操作命令介绍
- 6.1指定磁盘块PE大小
- 6.2扩容文件系统
- 6.3LVM的删除
- 7.LVM扩容实战
- 7.1实验思路
- 7.2实战演示
1.LVM简介
LVM主要用于解决 服务器磁盘存储数据、分区磁盘空间不足时实现磁盘动态扩容。
2.LVM的原理
磁盘和文件系统之间增加一个逻辑层,来动态的调整文件系统的大小,从而实现对磁盘的管理
3.LVM的基本组成
3.1物理卷(PV,Physical Volume)
- 逻辑上的一个 物理卷 ,不能存储文件,基础逻辑存储块
3.2卷组 (VG,Volume Group)
- 逻辑上的一个 卷组,不能存储文件,由多个PV组成
3.3逻辑卷 (LV,Logical Volume)
- 最终的 逻辑卷,可以存储文件
3.4物理块 (PE,Physical Extends)
- 物理拓展,LVM的最小单元,一般默认4M,是4M的倍数 ,(类似于硬盘的一个扇区:一般默认512字节 )
4.LVM的组成关系
组成关系:
多个磁盘/分区/raid–>多个物理卷PV–>合成卷组VG–>从VG划出逻辑卷LV–>格式化LV挂载使用
5.LVM的优缺点
5.1优点
- 使用卷组: 使用多个硬盘空间,看起来像一块大的硬盘
- 使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf
- 在使用逻辑卷时,它可以在空间不足时动态调整它的大小
- 可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。
5.2缺点
- 系统设置时步骤较为复杂
- 无法在Windows系统上进行访问,因为LVM不支持Windows。
6.常用操作命令介绍
常用命令:
6.1指定磁盘块PE大小
-s 存储文件比较大文件, PE 调大一下,读取快
[root@localhost lv01]# vgcreate -s 16M vg03 /dev/sdb4
Volume group "vg03" successfully created
[root@localhost lv01]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_anonymous 1 2 0 wz--n- <19.00g 0
vg01 1 2 0 wz--n- <4.00g 3.96g
vg02 2 0 0 wz--n- 7.99g 7.99g
vg03 1 0 0 wz--n- 3.98g 3.98g
[root@localhost lv01]# vgdisplay vg03
--- Volume group ---
VG Name vg03
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 3.98 GiB
PE Size 16.00 MiB
Total PE 255
Alloc PE / Size 0 / 0
Free PE / Size 255 / 3.98 GiB
VG UUID MU9NLn-IIJG-Immq-h2DK-s1B9-BESR-OAA40w
6.2扩容文件系统
常用参数:
-L +30M 20M --50M
-L 30M 30M
实操:
- 方法一
ext4 resize2fs
XFS xfs_growfs
[root@localhost lv01]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_anonymous -wi-ao---- <17.00g
swap centos_anonymous -wi-ao---- 2.00g
lv01 vg01 -wi-ao---- 16.00m
lv02 vg01 -wi-a----- 16.00m
[root@localhost lv01]# lvextend -L +30M /dev/vg01/lv01
Rounding size to boundary between physical extents: 32.00 MiB. ##PE必须是4M的倍数
Size of logical volume vg01/lv01 changed from 16.00 MiB (4 extents) to 48.00 MiB (12 extents).
Logical volume vg01/lv01 successfully resized.
[root@localhost lv01]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_anonymous -wi-ao---- <17.00g
swap centos_anonymous -wi-ao---- 2.00g
lv01 vg01 -wi-ao---- 48.00m
lv02 vg01 -wi-a----- 16.00m
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 13M 896K 12M 7% /lv01
[root@localhost lv01]# xfs_
xfs_admin xfs_db xfs_fsr xfs_io xfs_metadump xfs_quota
xfs_bmap xfs_estimate xfs_growfs xfs_logprint xfs_mkfile xfs_repair
xfs_copy xfs_freeze xfs_info xfs_mdrestore xfs_ncheck xfs_rtcp
[root@localhost lv01]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=1, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4096, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4096 to 12288
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]#
- 方法二
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]# lvextend -L 80M -r /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 48.00 MiB (12 extents) to 80.00 MiB (20 extents).
Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=3, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=12288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12288 to 20480
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 77M 1.0M 76M 2% /lv01
6.3LVM的删除
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_anonymous-root 253:0 0 17G 0 lvm /
└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
│ ├─vg01-lv01 253:2 0 80M 0 lvm /lv01
│ └─vg01-lv02 253:3 0 16M 0 lvm
├─sdb2 8:18 0 4G 0 part
│ └─vg02-lv03 253:4 0 100M 0 lvm /lv03
├─sdb3 8:19 0 4G 0 part
└─sdb4 8:20 0 4G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# umount /dev/vg01/lv01
[root@localhost ~]# df -h !$
df -h /dev/vg01/lv01
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
[root@localhost ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@localhost ~]# lvremove /dev/vg01/lv02
Do you really want to remove active logical volume vg01/lv02? [y/n]: y
Logical volume "lv02" successfully removed
[root@localhost ~]# vgremove vg01
Volume group "vg01" successfully removed
[root@localhost ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_anonymous-root 253:0 0 17G 0 lvm /
└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
├─sdb2 8:18 0 4G 0 part
│ └─vg02-lv03 253:4 0 100M 0 lvm /lv03
├─sdb3 8:19 0 4G 0 part
└─sdb4 8:20 0 4G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]#
7.LVM扩容实战
7.1实验思路
- 创建磁盘、分区
- 创建PV
- 创建VG
- 创建LV
- 格式化挂载LV
7.2实战演示
- 创建磁盘,分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos_anonymous-root 253:0 0 17G 0 lvm /
└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x1287997e 创建新的 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):+4G
分区 3 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已选择分区 4
起始 扇区 (25167872-41943039,默认为 25167872):
将使用默认值 25167872
Last 扇区, +扇区 or +size{K,M,G} (25167872-41943039,默认为 41943039):+4G
分区 4 已设置为 Linux 类型,大小设为 4 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1287997e
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 8390655 4194304 83 Linux
/dev/sdb2 8390656 16779263 4194304 83 Linux
/dev/sdb3 16779264 25167871 4194304 83 Linux
/dev/sdb4 25167872 33556479 4194304 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 11月 14 14:08 /dev/sdb
brw-rw----. 1 root disk 8, 17 11月 14 14:08 /dev/sdb1
brw-rw----. 1 root disk 8, 18 11月 14 14:08 /dev/sdb2
brw-rw----. 1 root disk 8, 19 11月 14 14:08 /dev/sdb3
brw-rw----. 1 root disk 8, 20 11月 14 14:08 /dev/sdb4
2.创建PV
[root@localhost ~]# pvcreate /dev/sdb{1..4}
Device /dev/sdb4 not found (or ignored by filtering).
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos_anonymous lvm2 a-- <19.00g 0
/dev/sdb1 lvm2 --- 4.00g 4.00g
/dev/sdb2 lvm2 --- 4.00g 4.00g
/dev/sdb3 lvm2 --- 4.00g 4.00g
/dev/sdb4 lvm2 --- 4.00g 4.00g
[root@localhost ~]#
3.创建VG
[root@localhost ~]# vgcreate vg01 /dev/sdb1
Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay vg01
--- Volume group ---
VG Name vg01
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 <4.00 GiB
PE Size 4.00 MiB
Total PE 1023
Alloc PE / Size 0 / 0
Free PE / Size 1023 / <4.00 GiB
VG UUID lb05QT-DCip-Lcbx-sahb-dKA1-KAnc-nHXnYD
[root@localhost ~]#
4.创建LV
[root@localhost ~]# lvcreate -n lv01 -L 16M vg01
Logical volume "lv01" created.
[root@localhost ~]# lvcreate -n lv02 -l 4 vg01
Logical volume "lv02" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_anonymous -wi-ao---- <17.00g
swap centos_anonymous -wi-ao---- 2.00g
lv01 vg01 -wi-a----- 16.00m
lv02 vg01 -wi-a----- 16.00m
[root@localhost ~]# lvdisplay /dev/vg01/lv01
--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID DjHCEk-m7Ng-oCE2-sQjH-UoiK-fDif-KIRtMM
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-11-14 14:40:38 +0800
LV Status available
# open 0
LV Size 16.00 MiB
Current LE 4
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
5.格式化挂载LV
[root@localhost ~]# mkdir /lv01
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=1, agsize=4096 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=4096, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount !$ /lv01/
mount /dev/vg01/lv01 /lv01/
[root@localhost ~]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 13M 896K 12M 7% /lv01
[root@localhost ~]#