目录
一.LVM概述
1.LVM (Logical Vokume Manager )逻辑卷管理
2.LVM的管理命令
3.创建并使用LVM操作步骤
二.磁盘配额概述
1.实现磁盘限额的条件
2.Linux磁盘限额的特点
3.实现磁盘配额的步骤
三.总结:
一.LVM概述
1.LVM (Logical Vokume Manager )逻辑卷管理
功能:能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性。
/boot分区用于存放引导文件,不能基于LVM创建
2.LVM机制的基本概念
(1)PV (Physical Volume 物理卷):物理卷是由多个把存储空间分割成默认大小为 4MB 的基本单元(PE)组成;通常一个物理卷就是一个硬盘或者是一个硬盘分区。
(2)VG(卷组):是由一个或多个物理卷组成的一个资源池,即称为卷组;在卷组中可以动态地添加或移除物理卷。
(3)LV(逻辑卷):从卷组中划分出指定容量大小的存储卷
总结一下:物理卷、卷组和逻辑卷之间的关系:物理卷是卷组和逻辑卷的基础,卷组则是物理卷的集合,用于创建逻辑卷,而逻辑卷则是从卷组中动态分配出来的存储单元。
2.LVM的管理命令
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
Scan扫描 | pvcan | vgcan | lvcan |
Create建立 | pvcreate | vgcreate | lvcreate |
Display显示 | pvdisplay | vgdisplay | lvdisplay |
Remove删除 | pvremove | vgremove | lvremove |
Extend扩展 | vgextend | lvextend | |
Reduce减少 | vgreduce | lvreduce |
主要命令:
pvcreate 设备名1 [设备名2...] #创建物理卷
vgcreate 卷组名 物理卷名1 物理卷名2 #创建卷组
lvcreate -L 容量大小 -n 逻辑卷名 卷组名 #创建逻辑卷
lvextend -L +大小 /dev/卷组名/逻辑卷名 #为逻辑卷进行扩展内存
3.创建并使用LVM操作步骤
(1)关闭主机,添加新硬盘(这里我们添加三块)后,重启主机
(2)使用 fdisk 工具将磁盘设备划分出主分区,并且将分区类型的ID设置为8e
【1】运用 fdisk /dev/sdb、fdisk /dev/sdc、fdisk /dev/sdd 将新添加的三块硬盘进行划分出主分区
【2】三块硬盘的操作全部如下图所示
[root@192 ~]# fdisk /dev/sdb #将硬盘划分出主分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xf9568529 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n #选择分区类型
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p #默认为创建主分区
分区号 (1-4,默认 1): #默认分区号
起始 扇区 (2048-41943039,默认为 2048): #默认起始扇区
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): #默认Last扇区
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t #选择分区类型
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e #选择8eLVM
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w #保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
全部操作完成后,创建出 /dev/sdb1、/dev/sdc1和/dev/sdd1 三个主分区
(3)创建物理卷
[root@192 ~]# pvcreate /dev/sdb1 /dev/sdc1 #将sdb1和sdc1创建成物理卷
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
#这样子算是创建成功
(4)创建卷组并对卷组进行命名
将卷组命名为vg111
[root@192 ~]# vgcreate vg111 /dev/sdb1 /dev/sdc1 #创建卷组并命名为vg111
Volume group "vg111" successfully created
[root@192 ~]# vgdisplay vg111 #查看卷组vg111
--- Volume group ---
VG Name vg111
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 56BSoG-GOB5-eifK-Ijjg-6cVM-sW5p-g5Zgbq
(5)创建逻辑卷并进行命令
将逻辑卷设置为20G,并将其命名为lv111,此后生成路径/dev/vg111/lv111
[root@192 ~]# lvcreate -L 20G -n lv111 vg111 #创建逻辑卷并命令为lv111
Logical volume "lv111" created.
[root@192 ~]# lvdisplay /dev/vg111/lv111 #查看逻辑卷lv111
--- Logical volume ---
LV Path /dev/vg111/lv111
LV Name lv111
VG Name vg111
LV UUID qDeAh7-dDzZ-diBF-dmWc-4CVS-6tGY-zdkm42
LV Write Access read/write
LV Creation host, time 192.168.80.202, 2024-04-16 20:19:32 +0800
LV Status available
# open 0
LV Size 20.00 GiB #逻辑卷内存空间
Current LE 5120
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
(6)对罗辑卷进行格式化,创建XFS文件类型,并挂载
[root@192 ~]# mkfs -t xfs /dev/vg111/lv111 #将逻辑卷格式化,并创建xfs文件系统
meta-data=/dev/vg111/lv111 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, 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@192 ~]# mkdir /opt/test #创建一个新的目录
[root@192 ~]# mount /dev/vg111/lv111 /opt/test #将逻辑卷挂载到目录 /opt/test 上
[root@192 ~]# df -hT #查看挂载情况
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 36G 4.9G 31G 14% /
/dev/sda1 xfs 509M 181M 329M 36% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vg111-lv111 xfs 20G 33M 20G 1% /opt/test #挂载成功
此后就可以在目录上输入内容,并记录到硬盘上
(7)如果空间不够要扩展,先查看卷组空间是否足够,不够的话,先创建物理卷,在扩展卷组;
之后在对逻辑卷进行扩容。
[root@192 test]# pvcreate /dev/sdd1 #将sdd1创建为物理卷
Physical volume "/dev/sdd1" successfully created.
[root@192 test]# vgextend vg111 /dev/sdd1 #sdd1扩展为卷组vg111
Volume group "vg111" successfully extended
[root@192 test]# vgdisplay vg111 #查看卷组内存
--- Volume group ---
VG Name vg111
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size <59.99 GiB #卷组内存增加
PE Size 4.00 MiB
Total PE 15357
Alloc PE / Size 5120 / 20.00 GiB
Free PE / Size 10237 / <39.99 GiB
VG UUID 56BSoG-GOB5-eifK-Ijjg-6cVM-sW5p-g5Zgbq
[root@192 test]# lvextend -L +20G /dev/vg111/lv111 #对逻辑卷扩容20G
Size of logical volume vg111/lv111 changed from 20.00 GiB (5120 extents) to 40.00 GiB (10240 extents).
Logical volume vg111/lv111 successfully resized.
[root@192 test]# lvdisplay /dev/vg111/lv111 #查看逻辑卷内存
--- Logical volume ---
LV Path /dev/vg111/lv111
LV Name lv111
VG Name vg111
LV UUID qDeAh7-dDzZ-diBF-dmWc-4CVS-6tGY-zdkm42
LV Write Access read/write
LV Creation host, time 192.168.80.202, 2024-04-16 20:19:32 +0800
LV Status available
# open 1
LV Size 20.00 GiB #逻辑卷内存没变
Current LE 5120
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
(8)对逻辑卷进行扩容后,内存空间没变;有两种方法解决
【1】使用命令手动刷新xfs文件系统容量
xfs_growfs /dev/vgname1/lvname1
【2】在扩容逻辑卷的命令上加上 -r 选项;自动刷新文件系统容量
lvextend -L +10G [-r] /dev/vg111/lv111
二.磁盘配额概述
当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,可能会出现服务
程序崩溃、系统无法启动等故障;为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。
在 CentOS 系统中,不同的文件系统使用不同磁盘配额配置管理工具。例如,XFS 文件系统通过
xfs_quota 工具进行管理; EXT3/4 文件系统通过 quota 工具进行管理
1.实现磁盘限额的条件
(1)需要Linux内核支持
(2)需要安装 xfsprogs 与 quota 软件包
2.Linux磁盘限额的特点
作用范围: 针对指定的文件系统(分区)
限制对象:用户账号、组账号
限制类型: 磁盘容量、文件数量
限制方法:软限制、硬限制
3.实现磁盘配额的步骤
(1)启用磁盘配额支持
启动文件系统的配额支持,添加usrquota、prpquota 挂载参数
[root@192 test]# rpm -q xfsprogs quota #查看软件是否安装
xfsprogs-4.5.0-22.el7.x86_64
quota-4.01-19.el7.x86_64
没有安装的话,使用 yum install 安装
用 usrquota,grpquota 对/dev/vg111/lv111挂载到/opt/test目录中
mount -o usrquota,grpquota /dev/vg111/lv111 /opt/test/
或者
进入到 /etc/fstab 文件中输入命令挂载
验证方法:mount -a 将/etc/fstab的所有内容重新加载
mount 或者df -hT都可以查看挂载情况
(2)编辑用户和组账号的配额设置
常用选项
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
-c:表示直接调用管理命令
-u:指定用户账号对象
-g:指定组账号对象
bsoft:设置磁盘容量的软限制数值(默认单位为 KB)
bhard:设置磁盘容量的硬限制数值(默认单位为 KB)
isoft:设置磁盘文件数的软限制数值
ihard:设置磁盘文件数的硬限制数值
dd 命令是一个设备转换和连续复制命令
“if=” 指定输入设备(或文件)
“of=” 指定输出设备(或文件)
“bs=” 指定读取数据块的大小
“count=” 指定读取数据块的数量
/dev/zero “零”设备文件,可以无限的提供空字符。常用来生成一个特定大小的文件
useradd zhangsan #创建用户zhangsan和lisi
echo 123456 | passwd --stdin zhangsan
useradd lisi #并设置密码
echo 123456 | passwd --stdin lisi #免交互式设置密码命令
并对zhangsan 和lisi 设置不同的配额设置
#仅限制磁盘容量
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M zhangsan' /opt/test
#仅限制文件数
xfs_quota -x -c 'limit -u isoft=4 ihard=5 lisi' /opt/test
#查看 zhangsan 磁盘容量限制
xfs_quota -c 'quota -uv zhangsan' /opt/test
#查看 lisi 文件数限制
xfs_quota -c 'quota -i -uv lisi' /opt/test
(3)验证磁盘配额功能
先给文件设置最高权限
[root@192 ~]# chmod 777 /opt/test #设置最高权限
[root@192 ~]# ls -l /opt/
总用量 0
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
drwxrwxrwx. 3 root root 133 4月 16 20:31 test
[root@192 test]# su - lisi #切换为lisi 账户
上一次登录:二 4月 16 21:41:00 CST 2024pts/0 上
[lisi@192 ~]$ cd /opt/test #切换到指定目录
[lisi@192 test]$ ls
[lisi@192 test]$ touch {1..5}file #创建五个文件成功
[lisi@192 test]$ ls -l
总用量 0
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 1file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 2file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 3file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 4file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 5file
[lisi@192 test]$ touch 6file #创建第六个失败
touch: 无法创建"6file": 超出磁盘限额 #超出限额,最多允许创建五个文件
[root@192 test]# su - zhangsan #切换到zhangsan账户
上一次登录:二 4月 16 21:39:30 CST 2024pts/0 上
[zhangsan@192 test]$ dd if=/dev/zero of=/opt/test/zhangsan.txt bs=10M count=10
[zhangsan@192 test]$ ll -h #输入100MC成功
总用量 100M
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 1file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 2file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 3file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 4file
-rw-rw-r--. 1 lisi lisi 0 4月 16 21:43 5file
-rw-rw-r--. 1 zhangsan zhangsan 100M 4月 16 21:48 zhangsan.txt
[zhangsan@192 test]$ dd if=/dev/zero of=/opt/test/zhangsan.txt bs=10M count=11
dd: 写入"/opt/test/zhangsan.txt" 出错: 超出磁盘限额 #输入110M失败
超出限额,最多100M
(4)查看配额使用情况
#查看所有可用分区的磁盘容量配额使用情况
xfs_quota -x -c 'report -a'
#查看磁盘容量和文件数的报告
xfs_quota -x -c 'report -abih'
[root@192 test]# xfs_quota -x -c 'report -a' #查看所有可用分区的磁盘容量配额使用情况
User quota on /opt/test (/dev/mapper/vg111-lv111)
Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 0 0 0 00 [--------]
zhangsan 102400 81920 102400 00 [6 days]
lisi 0 0 0 00 [--------]
Group quota on /opt/test (/dev/mapper/vg111-lv111)
Blocks
Group ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 0 0 0 00 [--------]
zhangsan 102400 0 0 00 [--------]
lisi 0 0 0 00 [--------]
[root@192 test]# xfs_quota -x -c 'report -abih' #查看磁盘容量和文件数的报告
User quota on /opt/test (/dev/mapper/vg111-lv111)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 3 0 0 00 [------]
zhangsan 100M 80M 100M 00 [6 days] 1 0 0 00 [------]
lisi 0 0 0 00 [------] 5 4 5 00 [6 days]
Group quota on /opt/test (/dev/mapper/vg111-lv111)
Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 3 0 0 00 [------]
zhangsan 100M 0 0 00 [------] 1 0 0 00 [------]
lisi 0 0 0 00 [------] 5 0 0 00 [------]
三.小结:
知道创建并使用LVM
知道磁盘配额的步骤