对于Linux磁盘挂载,本地裸盘挂载的方式虽然简单,但是对于磁盘扩容情况下来说,不够灵活,逻辑卷的方式很好解决了此问题,能够实现磁盘的动态扩容。本节通过实战带你了解和认识LVM。
- 物理存储介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用;
- 物理卷PV(physical volume) :物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;
- 卷组VG(Volume Group) :一个LVM卷组由一个或多个物理卷组成;
- 逻辑卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系统;
- PE(physical extents) :PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB;
- LE(logical extent) :LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应
命令帮助
1、多盘组建LVM实操
下面从开始说起,服务器上共有4块1.1T的磁盘,我们将其挂载为/data目录
物理卷 --> 卷组 --> 逻辑卷
磁盘分区,不分区的情况下mkfs.xfs /dev/sdc直接格式化也是可以的,下列按照分区来演示
[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.34)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 设备不包含可识别的分区表。 创建了一个磁盘标识符为 0xade00547 的新 DOS 磁盘标签。 命令(输入 m 获取帮助):p Disk /dev/sdb:446.64 GiB,479559942144 字节,936640512 个扇区 磁盘型号:MR9361-8i 单元:扇区 / 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):262144 字节 / 262144 字节 磁盘标签类型:dos 磁盘标识符:0xade00547 命令(输入 m 获取帮助):n 分区类型 p 主分区 (0个主分区,0个扩展分区,4空闲) e 扩展分区 (逻辑分区容器) 选择 (默认 p):p 分区号 (1-4, 默认 1): 1 第一个扇区 (2048-936640511, 默认 2048): 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-936640511, 默认 936640511): 创建了一个新分区 1,类型为“Linux”,大小为 446.6 GiB。 命令(输入 m 获取帮助):p Disk /dev/sdb:446.64 GiB,479559942144 字节,936640512 个扇区 磁盘型号:MR9361-8i 单元:扇区 / 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):262144 字节 / 262144 字节 磁盘标签类型:dos 磁盘标识符:0xade00547 设备 启动 起点 末尾 扇区 大小 Id 类型 /dev/sdb1 2048 936640511 936638464 446.6G 83 Linux 命令(输入 m 获取帮助):w 分区表已调整。 将调用 ioctl() 来重新读分区表。 正在同步磁盘。 格式化,所有盘分区完毕
- 创建物理卷PV
创建pv,4块盘依次操作
[root@localhost ~]# pvcreate /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 Physical volume "/dev/sdc1" successfully created. Physical volume "/dev/sdd1" successfully created. Physical volume "/dev/sde1" successfully created. Physical volume "/dev/sdf1" successfully created.
- 创建卷组VG
创建vg 此处的vg_group是vg组的名字,可以自定义,同时将PV加入卷组
[root@localhost ~]# vgcreate vg_kvm /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 Volume group "vg_kvm" successfully created
查看磁盘卷组,可以看到总大小为4.36T
[root@localhost ~]# vgdisplay vg_kvm -v --- Volume group --- VG Name vg_kvm System ID Format lvm2 Metadata Areas 4 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 4 Act PV 4 VG Size 4.36 TiB PE Size 4.00 MiB Total PE 1144124 Alloc PE / Size 0 / 0 Free PE / Size 1144124 / 4.36 TiB VG UUID OdaNAs-ko43-qtky-Ak3r-70Nq-33wX-4KwHXQ --- Physical volumes --- PV Name /dev/sdc1 PV UUID 0vsc28-sOBH-3Wo1-1Pe1-DC5S-MY2w-d55TFA PV Status allocatable Total PE / Free PE 286031 / 286031 PV Name /dev/sdd1 PV UUID Kv4seB-iHFa-yhun-8vNK-cO0o-te2O-NlaF1n PV Status allocatable Total PE / Free PE 286031 / 286031 PV Name /dev/sde1 PV UUID 6qot9d-vJ7X-kUSR-h2Xc-qPiV-Mxxe-VAOiHw PV Status allocatable Total PE / Free PE 286031 / 286031 PV Name /dev/sdf1 PV UUID JAinSf-m1d3-Uc7Z-zN0A-IUzB-ZQ01-z8E90f PV Status allocatable Total PE / Free PE 286031 / 286031
- 创建逻辑卷LV
-L后面是要分给lv的大小
[root@localhost ~]# lvcreate -L 4.36T vg_kvm Rounding up size to full physical extent 4.36 TiB Logical volume "lvol0" created.
创建完毕后可以通过lvdisplay查看卷组状态
[root@localhost ~]# lvdisplay vg_kvm -v --- Logical volume --- LV Path /dev/vg_kvm/lvol0 LV Name lvol0 VG Name vg_kvm LV UUID F0UQ1a-fJtI-9VCE-MpTP-1Qwy-kxG3-7EnFGt LV Write Access read/write LV Creation host, time localhost.localdomain, 2021-10-22 10:32:34 +0800 LV Status available # open 0 LV Size 4.36 TiB Current LE 1142948 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 4096 Block device 252:3
- 挂载使用
最后可以直接挂载使用了
[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 255G 0 255G 0% /dev tmpfs 255G 192K 255G 1% /dev/shm tmpfs 255G 20M 255G 1% /run tmpfs 255G 0 255G 0% /sys/fs/cgroup /dev/mapper/klas-root 392G 27G 365G 7% / tmpfs 255G 0 255G 0% /tmp /dev/sda2 1014M 309M 706M 31% /boot /dev/sda1 200M 5.8M 195M 3% /boot/efi tmpfs 51G 0 51G 0% /run/user/0
格式化逻辑卷(LV)
[root@localhost ~]# mkfs.xfs /dev/vg_kvm/lvol0 meta-data=/dev/vg_kvm/lvol0 isize=512 agcount=32, agsize=36574336 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=0 data = bsize=4096 blocks=1170378752, imaxpct=5 = sunit=64 swidth=64 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=521728, versinotallow=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
设置开机自动挂载
vim /etc/fstab # /etc/fstab # Created by anaconda on Mon Mar 15 19:34:15 2021 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/klas-root / xfs defaults 0 0 /dev/mapper/klas-backup /backup xfs noauto 0 0 UUID=b791f0d4-4d2e-4e7d-a423-163035f757cf /boot xfs defaults 0 0 UUID=631A-9AFB /boot/efi vfat umask=0077,shortname=winnt 0 2 /dev/vg_kvm/lvol0 /data xfs defaults 0 0
然后保存,执行mount -a挂载到/data目录
[root@localhost ~]# mount -a [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 255G 0 255G 0% /dev tmpfs 255G 192K 255G 1% /dev/shm tmpfs 255G 20M 255G 1% /run tmpfs 255G 0 255G 0% /sys/fs/cgroup /dev/mapper/klas-root 392G 27G 365G 7% / tmpfs 255G 0 255G 0% /tmp /dev/sda2 1014M 309M 706M 31% /boot /dev/sda1 200M 5.8M 195M 3% /boot/efi tmpfs 51G 0 51G 0% /run/user/0 /dev/mapper/vg_kvm-lvol0 4.4T 4.5G 4.4T 1% /data
2、LVM在线扩容
如果卷组中有空间可以直接扩到逻辑卷上,如果没有就要加一块磁盘
mkfs.xfs /dev/sdf1 -f #先增加一块磁盘 vgextend vg_kvm /dev/sdf1 #将磁盘加入逻辑卷组 lvextend -L +1.09T /dev/vg_kvm/lvol0 #将新增的空间加到逻辑卷上
在线扩容说明
resize2fs#针对的是ext2、ext3、ext4文件系统
xfs_growfs#针对的是xfs文件系统
[root@localhost ~]# xfs_growfs /data #也可以直接跟/dev/vg_kvm/lvol0 meta-data=/dev/mapper/vg_kvm-lvol0 isize=512 agcount=32, agsize=27430784 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=0 data = bsize=4096 blocks=877784064, imaxpct=5 = sunit=64 swidth=64 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=428608, versinotallow=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 877784064 to 1171582976
总结:在操作系统安装的过程中,尽量将操作系统或者数据盘组成LVM的逻辑卷,这样可以避免后续环境上线后,磁盘空间不足而产生一系列的问题。LVM管理磁盘的情况下,能够很方便的进行磁盘的动态扩容。
原文地址:https://mp.weixin.qq.com/s/o48eBoS_YrsT7icUolJoPw