LVM与磁盘配额
一、LVM概述
- LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上,文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高了磁盘管理的灵活性
2、LVM机制的基本概念
2.1 PV(Physical Volume,物理卷)
- 物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区快,用于记录LVM的属性,并把储存空间分割成默认大小为4MB的基本单元(PE),从而构成物理卷
2.2 VG(Logical Volume,逻辑卷)
- 由一个或多个物理卷组成一个整日,即称为卷组,在卷组中可以动态的添加或移除物理卷
2.3 LV(Logical Volume,逻辑卷)
- 逻辑卷建立在卷组上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从卷组中分割出的一块空间,作为用户创建文件系统的基础,这就是逻辑卷。使用 mkfs等工具可在逻辑卷上穿件文件系统
LVM建立步骤
首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。逻辑卷可以理解成为分区,所以也需要格式化和挂载。
安装系统时使用LVM
分区方案
查看系统中的信息
查看LVM信息
二、LVM 管理命令
1、主要命令
pvcreate 设备名1 [设备名2 … …]
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名/逻辑卷名
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan 扫描 | pvscan | vgscan | lvscan |
Create 建立 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | ———— | vgextend | lvextend |
Reduce 减少 | ———— | vgreduce | lvreduce |
三.PV物理卷 pvcreate命令
一般用整个硬盘创建,当然也可以是分区
如果用分区创建PV,分区的类型不再是 Linux 默认的83 了,而要改成8e。
创建物理卷
pvcreate 设备名1 [设备名2 … …]
pvcreate /dev/sdb (整个硬盘创建为PV)
pvcreate /dev/sdb2 (分区创建为PV)
pvcreate /dev/sd[bc]:将/dev/sd[bc]转换成物理卷
[root@localhost ~]# pvcreate /dev/sd[bc]
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
查看物理卷pvdisplay命令或 pvscan
- 概述:显示物理卷的详细信息,需要使用指定的物理卷作为命令参数,默认时将显示所有的物理卷信息
pvdisplay :显示所有物理卷信息
pvdisplay /dev/sd[bc] :显示/dev/sd[bc]物理卷信息
[root@localhost ~]# pvdisplay /dev/sd[bc]
--- Physical volume ---
PV Name /dev/sdb
VG Name abc
PV Size 20.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 5119
Allocated PE 0
PV UUID pAuvcd-W3W9-TgDc-lB0e-iyAP-eBaT-feUrRa
--- Physical volume ---
PV Name /dev/sdc
VG Name abc
PV Size 20.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 5119
Allocated PE 0
PV UUID mYT4wR-iVxz-DlaH-WESx-UVAf-w0NM-gHNiOQ
删除物理卷
pvremove 设备名
四.VG卷组 vgcreate命令
创建卷组
vgcreate [选项] 卷组名 物理卷名1 [物理卷名2...]
选项:-s PE大小 (指定 PE 的大小,默认 4MB)
- 概述:用于将一个或多个物理卷创建为一个卷组
- 格式:vgcreate 卷组名 物理卷名1 物理卷名2
- vgcreate abc /dev/sdb /dev/sdc 用单个物理卷创建组名abc的卷组
#给vgcreate abc /dev/sd[bc]方法创建组名abc的卷组
[root@localhost ~]# vgcreate abc /dev/sd[bc]
Volume group "abc" successfully created
查看卷组vgscan 或 vgdisplay命令
- 概述:显示系统中各卷组的信息,需要指定卷组名作为指定参数,若不指定卷组名,则显示所有卷组参数
- vgdisplay :显示所有卷组信息
vgdisplay abc:显示卷组名为abc的参数信息
[root@localhost ~]# vgdisplay abc
--- Volume group ---
VG Name abc
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 lpJbbK-iM0t-ofaa-8ndh-bLC1-OOak-taAwzp
卷组扩容
-
概述:用于扩展磁盘空间。当创建了新的物理卷,并需要将它添加到已有卷组中,就使用该命令
-
格式:vgextend 卷组名 新物理卷
vgextend abc /dev/sdd1:将新物理卷/dev/sdd1扩加值卷组abc中
vgextend 卷组名 物理卷名
卷组减少容量
vgreduce 卷组名 物理卷名
vgreduce -a (删除卷组中未使用的物理卷)
删除卷组
vgremove 卷组名
五.LV逻辑卷 lvcreate 命令
- 用于从指定的卷组中分割空间,创建新的逻辑卷,需要指定逻辑卷的大小名称及所在的卷组作为参数
- 格式:lvcreate -L 逻辑卷容量大小 -n 逻辑卷名 卷组名
lvcreate -L 逻辑卷容量 -n 逻辑卷名 卷组名
lvcreate -L 20G -n mylv myvg(在myvg卷组中创建20G的逻辑卷mylv)
注意:逻辑卷创建后需要格式化和挂载才可正常使用
#:从卷组abc中划出10G创建名为mysql的逻辑卷
lvcreate -L 10G -n mysql abc
[root@localhost ~]# lvcreate -n mysql -L 10G abc
Logical volume "mysql" created.
[root@localhost ~]# ll /dev/abc/mysql
lrwxrwxrwx. 1 root root 7 12月 28 15:14 /dev/abc/mysql -> ../dm-2
[root@localhost ~]# ll /dev/mapper/abc-mysql
lrwxrwxrwx. 1 root root 7 12月 28 15:14 /dev/mapper/abc-mysql -> ../dm-2
查看逻辑卷 lvscan 或 lvdisplay命令
-
概述:用于显示逻辑卷的详细信息,可使用卷组名作为参数,以显示该卷组中的所有逻辑卷信息,若不指定卷组名,则显示全部逻辑卷信息
-
格式:lvdisplay 卷组名 逻辑卷名:显示卷组中逻辑卷信息
lvdisplay: 显示所有逻辑卷信息
示例 :lvdisplay /dev/abc/mysql
[root@localhost ~]# lvdisplay /dev/abc/mysql
--- Logical volume ---
LV Path /dev/abc/mysql
LV Name mysql
VG Name abc
LV UUID dqDsSG-gWYB-Fi8g-q8sp-dmBr-2Dzb-QaHIg2
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2023-12-28 15:14:32 +0800
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
调整逻辑卷容量
lvresize –L 容量 逻辑卷的设备名
可用 + - 来增减容量,也可直接指定容量
- 概述:动态扩展逻辑卷的空间,可以从所在卷组中分割额外的空间进行扩展,只需指定增加的容量大小及逻辑卷文件位置即可,前提是该卷组中还有未分配的磁盘空间,否则需要先扩充卷组
- 格式:lvextend -L +大小 /dev/卷组名/逻辑卷名
lvextend -L +10G /dev/abc/mysql :将abc卷组中剩余的空间给mysql逻辑卷中新增10G ,最后可lvdisplay查看一下lv扩展是否成功
[root@localhost ~]# lvextend -L +10G /dev/abc/mysql
Size of logical volume abc/mysql changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
Logical volume abc/mysql successfully resized.
[root@localhost ~]# lvdisplay /dev/abc/mysql
--- Logical volume ---
LV Path /dev/abc/mysql
LV Name mysql
VG Name abc
LV UUID dqDsSG-gWYB-Fi8g-q8sp-dmBr-2Dzb-QaHIg2
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2023-12-28 15:14:32 +0800
LV Status available
# open 0
LV Size 20.00 GiB(空间增加10G)
Current LE 5120
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
注:如果未生效可以使用刷新命令
-r:自动刷新逻辑卷容量大小
手动刷新
xfs_growfs 文件系统(文件系统为xfs)
resize2fs 文件系统(文件系统为ext4)
命令:xfs_growfs /dev/卷组名/逻辑卷名——刷新xfs文件系统容量
resize2fs /dev/卷组名/逻辑卷名——刷新ext4文件系统容量
六.设置磁盘配额
磁盘配额(Quota)就是 Linux 系统中用来限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的。
磁盘配额限制只能针对分区,而不能针对某个目录
可以限制用户占用的磁盘容量大小(block),当然也能限制用户允许占用的文件个数(inode)
1、磁盘配额的概述
1.1 实现磁盘配额的条件
需要Linux内核支持(grep “QUOTA” /boot/config-x…)
安装xfsprogs与quota软件包
1.2 Linux磁盘限额的特点
- 作用范围:针对指定的文件系统(分区)
- 限制对象:用户账号和组账号
- 限制类型:磁盘容量、文件数量
- 限制方法:软限制、硬限制(软限制:发出警告提示;硬限制:直接中断执行)
- 宽限时间:软限制只会警告,超时后就升级为硬限制
2、磁盘配额步骤
- 步骤1:以支持配额功能的方式挂载文件系统
- 步骤2:编辑用户和组账号的配额设置
- 步骤3:验证磁盘配额功能
- 步骤4、查看磁盘配额使用情况
3、启用磁盘配额支持
3.1.安装软件 xfaprogs quota
检查是否已安装xfsprogs和xfs_quota软件包
rpm -q xfsprogs xfs_quota
yum install -y xfsprogs xfs-quota
3、以支持磁盘限额的方式挂载文件系统
mount -o usrquota,grpquota
启用文件系统的配额支持
添加usrquota、grpquota挂载参数
/etc/fstab
ext4:usrquota,grpquoto ; xfs:uquota,gquota
mount -o remount /mydisk (ext4有效、xfs无效)
4、生成quota配置文件
ext4:quotacheck命令
#命令
quotacheck -avu
-a:扫描全部分区
-v:显示扫描过程
-u:生成 aquota.user
-g:生成 aquota.group
-m:强制生成(根分区)
xfs:不需要生成配置文件,此步骤省略
注意:都需要关闭selinux(/etc/selinux/config)
5、配置用户配额
edquota (ext4、xfs都支持)
edquota -u user1
edquota -p user1 -u user2
-u:配置用户配额
-g:配置组配额
-t:设置宽限时间
-p:复制配额配置
还可以使用xfs_quota命令编辑配额设置
xfs_quota -x -c 'limit -u bsoft=N bhard=N isoft=N ihard=N 用户名' 挂载点
xfs_quota -x -c 'limit -u bsoft=20m bhard=30m isoft=5 ihard=10 tom' /mydisk
-x:专家模式
-c:以字符串的非交互模式提供参数
6、开启/关闭磁盘配额
ext4:quotaon、quotaoff
quotaon -avu
quotaon -vu /mydisk
quotaoff -au
xfs:配置后自动生效,无需命令
查看配额
etx4、xfs通用
- xfs_quota -x -c ‘report 选项’
常用选项
xfs_quota -x -c 'report' /mydisk/
report 常用选项
-a、-i、-b 、-u、-g
-a 代表所有用户账号和组账号
-b 代表容量
-i 代表文件数量
-h 代表人性化显示
=30m isoft=5 ihard=10 tom’ /mydisk
-x:专家模式
-c:以字符串的非交互模式提供参数
6、开启/关闭磁盘配额
ext4:quotaon、quotaoff
```shell
quotaon -avu
quotaon -vu /mydisk
quotaoff -au
xfs:配置后自动生效,无需命令
查看配额
etx4、xfs通用
[外链图片转存中…(img-Aq0c8khd-1728442587796)]
- xfs_quota -x -c ‘report 选项’
常用选项
xfs_quota -x -c 'report' /mydisk/
report 常用选项
-a、-i、-b 、-u、-g
-a 代表所有用户账号和组账号
-b 代表容量
-i 代表文件数量
-h 代表人性化显示