LVM用于动态调整磁盘容量,从而提高磁盘管理的灵活性
/boot分区用于存放引导文件,不能基于LVM创建
LVM名词
- PV 物理卷
- VG 卷组
- LV 逻辑卷
- PE 最小存储单元,默认4M
LVM创建步骤
先创建PV,再创建VG,再创建LV,然后格式化,再挂载
先创建物理卷
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc
WARNING: xfs signature detected on /dev/sdb at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb.
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
查看是否创建成功
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm2 --- 20.00g 20.00g
[root@localhost ~]# pvdisplay
"/dev/sdc" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID lsjdkt-cPyE-Ava7-xUpq-vkCd-BX02-AHpsOx
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID hNj3Ws-5Mb7-eMd5-eI5j-2hXz-zPKj-mYY3lc
然后创建卷组
[root@localhost ~]# vgcreate vg01 /dev/sdb /dev/sdc
Volume group "vg01" successfully created
查看是否创建成功
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 2 0 0 wz--n- 39.99g 39.99g
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID UdJX87-Rjfp-qVSo-rgya-KsSo-D2Sq-0kKEsc
然后创建逻辑卷并查看
[root@localhost ~]# lvcreate -n lv01 -L 5G vg01
Logical volume "lv01" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 5.00g
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg01/lv01
LV Name lv01
VG Name vg01
LV UUID ty3qO0-QFBl-w33J-7qeU-aDUR-ZcJ8-XBpgsX
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-05-11 19:11:35 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
当逻辑卷不够用时可以扩容
[root@localhost ~]# lvextend -L +10G /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 5.00 GiB (1280 extents) to 15.00 GiB (3840 extents).
Logical volume vg01/lv01 successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 15.00g
然后格式化挂载
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=983040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=3932160, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkdir zhangsan
[root@localhost ~]# mount /dev/vg01/lv01 /zhangsan
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 297G 4.1G 293G 2% /
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 174M 841M 18% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg01-lv01 15G 33M 15G 1% /zhangsan
如果还是不够用的话可以再扩展
[root@localhost ~]# lvextend -L 20G /dev/vg01/lv01
Size of logical volume vg01/lv01 changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).
Logical volume vg01/lv01 successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-ao---- 20.00g
但是此时看磁盘却还是没变
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 297G 4.1G 293G 2% /
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 174M 841M 18% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg01-lv01 15G 33M 15G 1% /zhangsan
这时需要用到调整扩展的命令,对应xfs类型
[root@localhost ~]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=983040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=3932160, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 3932160 to 5242880
然后查看磁盘
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 297G 4.1G 293G 2% /
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 174M 841M 18% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg01-lv01 20G 33M 20G 1% /zhangsan
删除逻辑卷,卷组和物理卷,先卸载再删除
[root@localhost ~]# umount /dev/vg01/lv01
[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 ~]# vgremove vg01
Volume group "vg01" successfully removed
[root@localhost ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
磁盘配额
将已挂载的硬盘重新挂载
[root@localhost ~]# mount -o remount.usrquota,grpquota /dev/sdb
mount: /dev/sdb 已经挂载或 /zhangsan 忙
/dev/sdb 已经挂载到 /zhangsan 上
[root@localhost ~]# mount -a
然后创建用户的磁盘配额的配置文件
[root@localhost ~]# quotacheck -cugv /dev/sdb
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb [/zhangsan] done
quotacheck: Cannot stat old user quota file /zhangsan/aquota.user: 没有那个文件或目录. Usage will not be subtracted.
quotacheck: Old group file name could not been determined. Usage will not be subtracted.
quotacheck: Checked 3 directories and 0 files
quotacheck: Old file not found.
[root@localhost ~]# ls /zhangsan/
aquota.user lost+found
创建zhangsan然后编辑配置文件
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# edquota -u zhangsan
Disk quotas for user zhangsan (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sdb 0 1024 2048 0 4 6
然后开启磁盘配额
[root@localhost ~]# quotaon -u /dev/sdb
发现已经被限制
[zhangsan@localhost zhangsan]$ touch 1 2 3 4 5
sdb: warning, user file quota exceeded.
[zhangsan@localhost zhangsan]$ touch 1 2 3 4 5 6
[zhangsan@localhost zhangsan]$ touch 1 2 3 4 5 6 7
sdb: write failed, user file limit reached.
touch: 无法创建"7": 超出磁盘限额