目录
前言
我们经常遇到一种困境,就是如何精确评估和分配个磁盘容量,比如A硬盘和B硬盘都剩余10G容量,这时我要放入一个大于10G的文件,如何在不添加新硬盘的情况下利用剩余容量,这就是我们要掌握的LVM。
一、LVM概述
LVM是Linux系统中对磁盘分区管理的逻辑机制,建立在硬盘分区之上更够保持现有数据不变的情况下动态调整磁盘容量,提高磁盘的灵活性。
在了解LVM之前必须要知道几个名词术语
PV(物理卷)
物理卷是LVM机制的基本存储设备,通常对应分区或硬盘。创建物理卷时会在分区或硬盘头部创建一个保留区块,用于记录LVM属性,并把存储空间分割成默认4M大小的基本单元(PE)从而构成物理卷。
VG(卷组)
由多个物理卷组成的整体称为卷组,在卷组中可以动态的添加或移除物理卷。
LV(逻辑卷)
逻辑卷建立在卷组之上,与物理卷没有直接关系,对逻辑卷来说每一个卷组就是一个整体,在这个整体中切出一块小的空间,而这个空间就是逻辑卷。
具体关系如图
二、常用的LVM管理命令
功能 | 物理卷PV | 卷组VG | 逻辑卷LV |
Scan扫描 | pvscan | vgscan | lvscan |
Create建立 | pvcreate | vgcreate | lvcreate |
Display显示 | pvdisaplay | vgdisplay | lvdisplay |
Remove移除 | pvremove | vgremove | lvremove |
Extend扩展 | vgextend | lvextend | |
Reduce | vgreduce | lvreduce |
三、创建LVM
实验环境CentOSc7.4系统,添加两个20G的磁盘设置好分区,并将分区类型ID修改为8e
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 8e Linux LVM
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 8e Linux LVM
我们把这两个分区创建物理卷
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
需要创建的分区
完成后[root@localhost ~]# pvdisplay 查看
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID wwtSNy-24ex-Brof-5KBr-eiXE-6CcS-GBOGOx
"/dev/sdc1" is a new physical volume of "<20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size <20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID PzwPUp-WAjf-XK1i-cWdO-wB5N-GsEN-egDs5n
接下来是把这两个分区合并成一个物理卷
[root@localhost ~]# vgcreate zhang /dev/sdb1 /dev/sdc1
zhang :代表物理卷的名称
/dev/sdb1 /dev/sdc1:代表需要合并的两个分区
完成后[root@localhost ~]# vgdisplay 查看
--- Volume group ---
VG Name zhang 物理卷名称
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 lUyHcT-svfx-lalM-qNO1-LTW1-undV-d3D7a3
我们的物理卷已经创建好了
接下来就是划分逻辑卷了
[root@localhost ~]# lvcreate -L 30G -n shiyan zhang
-L 30G :创建逻辑卷的大小为30G
-n shiyan :定义逻辑卷的名称
zhang :选择从哪个物理卷划分除逻辑卷
完成root@localhost ~]# lvdisplay查看我的逻辑卷
LV Path /dev/zhang/shiyan
LV Name shiyan 逻辑卷名称
VG Name zhang 从哪个物理卷划分的
LV UUID gt7PBu-e5Ql-L6h6-AHfo-zMnB-1fIe-4NLhVH
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-08-15 20:04:48 +0800
LV Status available
# open 0
LV Size 30.00 GiB 逻辑卷容量
Current LE 7680
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
接下来是定义文件系统为xfs格式
[root@localhost ~]# mkfs.xfs /dev/mapper/zhang-shiyan
meta-data=/dev/mapper/zhang-shiyan isize=512 agcount=4, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=7864320, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
我们知道Linux系统中磁盘都是以挂载的方式运行,我们要将新创建的逻辑卷挂载到所需要的目录下才能使用
[root@localhost /]# mount /dev/mapper/zhang-shiyan KGC、
将我的逻辑卷挂载到KGC目录下
注意:这只是临时挂载重启就没有了,想要永久性挂载可以回看我之前的博客
使用df -h查看
/dev/mapper/zhang-shiyan 30G 33M 30G 1% /KGC
这个逻辑卷已经可以使用了
四、扩展逻辑卷
步骤基本和上面差不多
1 首先把要扩展的分区类型ID设置为8e
2 pvcreate [新的的分区] 将新的分区建立物理卷
例:pvcreate /dev/sdb2
3 vgextend [需要扩展的卷组名称] [新的物理卷] 将新的物理卷扩展到卷组
例:vgextend zhang /dev/sdb2
4 lvextend -L +20G /dev/卷组名/逻辑卷名 选择扩展逻辑卷的容量和名称
例:lvextend -L +20G /dev/zhang/shiyan
5 xfs_growfs /dev/mapper/物理卷-逻辑卷 进去逻辑卷挂载目录在线刷新逻辑卷
例:xfs_growfs /dev/mapper/zhang-shiyan
6 df -h查看扩展后的容量
五、磁盘配额
在linux系统中,由于是多用户、多任务的环境,如果有少数几个用户大量使用磁盘空间,导致其他用户的正常使用,因此需要对各个用户的磁盘空间进行管理和限定。
实现磁盘配额的条件
安装xfsprogs 和quota软件包
磁盘限额特点
作用范围:针对指定文件系统
限制对象:用户账号、组账号
限制类型:磁盘容量、文件数量
限制方法:软限制、硬限制
磁盘配额概述
1以支持配额功能的方式挂载文件系统
2编辑用户和组账号的配额设置
3验证磁盘配额功能
4查看磁盘配额使用情况
磁盘配额流程
1先检查xfsprogs与quota软件包是否安装
[root@localhost /]# rpm -q xfsprogs
xfsprogs-4.5.0-12.el7.x86_64
[root@localhost /]# rpm -q quota
quota-4.01-14.el7.x86_64
2添加支持配额功能挂载
[root@localhost ~]# vim /etc/fstab 进行编辑
/dev/mapper/zhang-shiyan /KGC xfs defaults,usrquota,grpquota 0 0
/dev/mapper/zhang-shiyan 代表挂载的物理卷和逻辑卷
/KGC 代表挂载的目录
xfs 代表文件格式
defaults,usrquota,grpquota 代表配额挂载的参数
0 0 代表不进行验证
3编辑用户和组账号的配额设置
常用参数
-x:表示启动专家模式当前模式下允许配额系统进行修改管理命令
-c:表示直接调用管理员命令
-u:指定用户账号对象
-g:指定组账号对象
bsoft:设置磁盘然限制数值
bhard:设置硬盘硬限制数值
isoft:设置磁盘文件数软限制
ihard:设置磁盘文件数硬限制
打上这条命令
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=5 ihard=8 fang' /KGC/
-x,-c,-u的意思在前面图片
limit :限制
bsoft=80M :软限制为80M报警
bhard=100M :硬限制为100M 无法创建超过100M的文件
isoft=5 :文件节点,值创建5个文件报警
ihard=8 :最大创建文件节点,最多智能创建8个
fang :被限制的用户名
/KGC/ :挂载的目录
4验证磁盘配额功能
chmod 777 /KGC 将挂载的目录权限设置为最高
su -fang 登陆限制的用户
输入这条命令
[fang@localhost KGC]$ dd if=/dev/zero of=/KGC/kcg.txt bs=10M count=12
值我向KGC目录创建12个大小为10M的假文件
dd: 写入"/KGC/kcg.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
由于我前面限制最大创建不超过8个文件,最大不超过100M容量,所以这里无法创建
5查看配额使用情况
进入root用户输入xfs_quota -x -c 'report -aibh'
可以看配额使用情况,用户名,文件节点,配额容量大小一目了然。
其他配额命令
xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M fang' /KGC/
仅限制磁盘容量
xfs_ quota -x -c 'limit -u isoft=5 ihard=10 fang' /KGC/
仅限制磁盘文件数
xfs_ quota -c 'quota -uv fang' /KGC/
查看fang用户的磁盘容量限制
xfs_ quota -c 'quota -i fang' /KGC/
查看fang用户文件数量限制
总结
生产环境中我们对磁盘的使用更加严苛,面对每天海量的日志文件和多用户的操作,需要我们更加合理的调配磁盘的使用,和对不同用户的限制。