文章目录
- LVM与磁盘配额
- 一、LVM概述
- 1、LVM概述
- 2、LVM机制的基本概念
- 2.1 PV(Physical Volume,物理卷)
- 2.2 VG(Logical Volume,逻辑卷)
- 2.3 LV(Logical Volume,逻辑卷)
- 二、LVM 管理命令
- 1、主要命令
- 2、LVM命令详解
- 2.1 pvcreate命令
- 2.2 pvdisplay命令
- 2.3 vgcreate命令
- 2.4 vgdisplay命令
- 2.5 vgextend命令
- 2.6 lvcreate 命令
- 2.7 lvdisplay 命令
- 2.8 lvextend命令
- 3、建逻辑卷的步骤
- 3.1 建立逻辑卷命令步骤
- 3.2 建立逻辑卷命令步骤(图文详解)
- 三、设置磁盘配额
- 1、磁盘配额的概述
- 1.1 实现磁盘配额的条件
- 1.2 Linux磁盘限额的特点
- 2、磁盘配额步骤
- 四、CentOS 7 中设置磁盘配额的步骤
- 1、检查是否已经安装 xfsprogs 和xfs_quote软件包
- 2、以支持配额功能的方式挂载文件系统
- 以支持配额功能的方式挂载文件系统(图文详解)
- 3、编辑用户和组账号的配额设置
- 3.1 useradd zhangsan 创建zhangsan用户
- 3.2 使用xfs_quota命令编辑配置设置
- 3.3 常用选项
- 4、限制命令
- 4.1 仅限制磁盘容量
- 4.2 仅限制文件数
- 4.3 查看zhangsan磁盘容量限制
- 4.4 查看zhangsan 文件数限制
- 5、验证磁盘配额功能
- 6、查看磁盘配额使用情况
- 6.1 格式
- 6.2 常用选项
LVM与磁盘配额
一、LVM概述
1、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 管理命令
1、主要命令
2、LVM命令详解
2.1 pvcreate命令
-
概述:pvcreate用于将整个分区或整个硬盘转换成物理卷,主要是添加LVM属性信息并且划分PE存储单位。
-
格式:pvcreate 设备名1 设备名2…
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.
2.2 pvdisplay命令
-
概述:显示物理卷的详细信息,需要使用指定的物理卷作为命令参数,默认时将显示所有的物理卷信息
-
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
2.3 vgcreate命令
- 概述:用于将一个或多个物理卷创建为一个卷组
- 格式: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
2.4 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
2.5 vgextend命令
-
概述:用于扩展磁盘空间。当创建了新的物理卷,并需要将它添加到已有卷组中,就使用该命令
-
格式:vgextend 卷组名 新物理卷
vgextend abc /dev/sdd1:将新物理卷/dev/sdd1扩加值卷组abc中
2.6 lvcreate 命令
-
用于从指定的卷组中分割空间,创建新的逻辑卷,需要指定逻辑卷的大小名称及所在的卷组作为参数
-
格式:lvcreate -L 逻辑卷容量大小 -n 逻辑卷名 卷组名
lvcreate -n mysql -L 10G abc:从卷组abc中划出10G创建名为mysql的逻辑卷
[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
2.7 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
2.8 lvextend命令
-
概述:动态扩展逻辑卷的空间,可以从所在卷组中分割额外的空间进行扩展,只需指定增加的容量大小及逻辑卷文件位置即可,前提是该卷组中还有未分配的磁盘空间,否则需要先扩充卷组
-
格式: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
注:如果未生效可以使用刷新命令
命令:xfs_growfs /dev/卷组名/逻辑卷名——刷新xfs文件系统容量
resize2fs /dev/卷组名/逻辑卷名——刷新ext4文件系统容量
3、建逻辑卷的步骤
- 类似于分区
- 物理卷:将硬盘转化成pe
- 卷组:将pr分组,一个逻辑卷只可以用一个组里面的pe
- 逻辑卷:从卷组取pe,类似于分区的一个空间
需要使用的话,还要进行格式化和挂载的步骤
3.1 建立逻辑卷命令步骤
lvm如果使用分区,要修改分区类型为(t)8e,
pvcreate /dev/sdb1 /dev/sdc #建立物理卷(可以省略)
vgcreate vg1 /dev/sdb1 /dev/sdc #建立卷组取名vg1,并将/dev/sdb1 /dev/sdc 加入卷组
lvcreate -n mysql -L 10G vg1 #建立逻辑卷,-n指定逻辑卷的名字,-L指定大小,pe是从vg1卷组中来
/dev/vg1/mysql 或者 /dev/mapper/vg1-mysql #新建立逻辑卷的名字
假设卷组空间不够,先扩容卷组vg1
vgextend 卷组名 设备名(如:vgextend vg1 /dev/sdd) #扩容卷组vg1
再扩容逻辑卷
lvextend -L 指定大小 逻辑卷名(如:lvextend -L +5G /dev/vg1/mysql) #扩容逻辑卷
xfs格式:xfs_growfs /mnt 或者
lvextend -L +5G /dev/vg1/mysql -r(扩容逻辑卷时,加选项-r,会立马同步文件系统) #同步文件系统
-r:立马同步文件系统
3.2 建立逻辑卷命令步骤(图文详解)
三、设置磁盘配额
- 当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件, 同时也可能会出现服务程序崩溃、系统无法启动等故障。
- 为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间文件、数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。在CentOS系统中,不同的文件系统使用不同磁盘配额配置管理工具。 例如,XFS文件系统通过xfs_quota工具进行管理; EXT3/4 文件系统通过 quota 工具进行管理。
1、磁盘配额的概述
1.1 实现磁盘配额的条件
- 需要Linux内核支持
- 安装xfsprogs与quote软件包
1.2 Linux磁盘限额的特点
- 作用范围:针对指定的文件系统(分区)
- 限制对象:用户账号和组账号
- 限制类型:磁盘容量、文件数量
- 限制方法:软限制、硬限制(软限制:发出警告提示;硬限制:直接中断执行)
2、磁盘配额步骤
- 步骤1:以支持配额功能的方式挂载文件系统
- 步骤2:编辑用户和组账号的配额设置
- 步骤3:验证磁盘配额功能
- 步骤4、查看磁盘配额使用情况
四、CentOS 7 中设置磁盘配额的步骤
1、检查是否已经安装 xfsprogs 和xfs_quote软件包
rpm -q xfsprogs(安装) #检查是否已经安装xfsprogs
rqm -q quota #检查是否已经安装quote
yum install -y xfsprogs quota #如果未安装使用yum install命令安装即可
[root@localhost ~]# rpm -q xfsprogs
xfsprogs-4.5.0-12.el7.x86_64
[root@localhost ~]# rpm -q quota
quota-4.01-19.el7.x86_64
2、以支持配额功能的方式挂载文件系统
-
添加usrquota、grpquota 挂载参数
-
格式:mount -o usrquota,grpquota /dev/卷组名/逻辑卷名
[root@localhost ~]# mount -o usrquota,grpquota /dev/abc/mysql /mnt [root@localhost ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 50G 3.5G 47G 7% / devtmpfs devtmpfs 897M 0 897M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 9.2M 903M 2% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 5.0G 179M 4.9G 4% /boot tmpfs tmpfs 183M 4.0K 183M 1% /run/user/42 tmpfs tmpfs 183M 48K 183M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/mapper/abc-mysql xfs 20G 33M 20G 1% /mnt
以支持配额功能的方式挂载文件系统(图文详解)
3、编辑用户和组账号的配额设置
3.1 useradd zhangsan 创建zhangsan用户
- passwd zhangsan
3.2 使用xfs_quota命令编辑配置设置
- 格式:xfs_quota -x -c ‘limit -u bsoft=N bhard=N isoft=N ihard=N 用户名’ 挂载点
3.3 常用选项
- xfs_quota -x -c ‘limit -u bsoft=80M bhard=100M isoft=40 ihard=50 zhangsan’ /opt/ /opt为指定磁盘配额的分区
-x∶ 表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
-c∶ 表示直接调用管理命令
-u∶ 指定用户账号对象
-g∶ 指定组账号对象
bsoft∶ 设置磁盘容量的软限制数值(默认单位为 KB)
bhard∶ 设置磁盘容量的硬限制数值 (默认单位为 KB)
isoft∶设置磁盘文件数的软限制数值
ihard∶设置磁盘文件数的硬限制数值
4、限制命令
4.1 仅限制磁盘容量
- xfs_quota -x -c ‘limit -u bsoft=80M bhard=100M zhangsan’ /opt/
4.2 仅限制文件数
- xfs_quota-x -c ‘limit -u isoft=4 ihard=5 zhangsan’ /opt/
4.3 查看zhangsan磁盘容量限制
- xfs_quota -c ‘quota -uv zhangsan’ /opt/
4.4 查看zhangsan 文件数限制
- xfs_quota -c ‘quota -iuv zhangsan’ /opt/
5、验证磁盘配额功能
chmod 777 挂载点
su 用户名
cd 挂载点
dd if=/dev/zero of=挂载点/test.txt bs=10M, count=12 #验证磁盘容量超限
touch {1..20}.txt 验证磁盘文件数超限
dd命令是一个设备转换和连续复制命令
“if=” 指定输入设备(或文件)
“of=” 指定输出设备(或文件)
“bs=” 指定读取数据块大小
“count=” 指定读取数据块的数量
/dev/zero “零”设备文件,可以无限的提取空字符,常用来生成一个特定大小的文件
6、查看磁盘配额使用情况
6.1 格式
- xfs_quota -x -c ‘report 选项’
6.2 常用选项
-a 代表所有用户账号和组账号
-b 代表容量
-i 代表文件数量
-h 代表人性化显示