逻辑卷LVM 与 配置 磁盘配额管理
目录:
LVM:Logical Volume Manage 逻辑卷管理
能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性
/boot 分区用于存放引导文件,不能基于 LVM 创建
pvcreate 设备名1 [设备名2 .....] #创建物理卷
vgcreate 卷组名 物理卷名1 物理卷名2 .... #创建卷组
vgextend 卷组名 物理卷名1 .... #卷组扩容
lvcreate -L 容量大小 -n 逻辑卷名 卷组 #从卷组中创建逻辑卷 # -l 小写l 表示pe个数
lvextend -L +容量大小 逻辑卷 #将逻辑卷扩容
mkfs -t 文件系统 逻辑卷 #格式化逻辑卷
xfs_growfs 逻辑卷 #扩展xfs格式文件系统
resize2fs 逻辑卷 #扩展ext4 格式文件系统
功能
|
物理卷管理
|
卷组管理
|
逻辑卷管理
|
Scan 扫描
|
pvscan
|
vgscan
|
lvscan
|
Creat 建立
|
pvcreate
|
vgcreate
|
lvcreate
|
Display 显示
|
pvdisplay
|
vgdisplay
|
lvdisplay
|
Remove 删除
|
pvremove
|
vgremove
|
lvremove
|
Extend
|
————
|
vgextend
|
lvextend
|
Reduce
|
————
|
vgextend
|
lvextend
|
1.4.1 fdisk 工具修改要使用的分区的id 为8e 逻辑卷类型
[root@promote ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t #修改分区hex 代码
分区号 (1,2,默认 2):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfbdee661
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 8e Linux LVM
/dev/sdb2 20973568 41945087 10485760 8e Linux LVM
命令(输入 m 获取帮助):w #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
[root@promote ~]# partprobe /dev/sdb #刷新分区表
1.4.2 创建物理卷 PV
[root@promote ~]# pvcreate /dev/sdb1 /dev/sdb2 #将/dev/sdb1 /dev/sdb2 创建为物理卷 Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created.
1.4.3 创建卷组VG
[root@promote ~]# vgcreate vgdata /dev/sdb1 /dev/sdb2 #以物理卷/dev/sdb1 和 /dev/sdb2 创建卷组 vgdata Volume group "vgdata" successfully created
1.4.4 创建逻辑卷LV
[root@promote ~]# lvcreate -L 12G -n lvdata /dev/vgdata #以物理卷vgdata创建逻辑卷 lvdata 大小为12G Logical volume "lvdata" created.
[root@promote ~]# mkfs -t xfs /dev/vgdata/lvdata #将逻辑卷格式为xfs格式 meta-data=/dev/vgdata/lvdata isize=512 agcount=4, agsize=786432 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=3145728, 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@promote ~]# mount /dev/vgdata/lvdata /mnt #挂载逻辑卷 [root@promote ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda3 xfs 56G 4.7G 51G 9% / devtmpfs devtmpfs 978M 0 978M 0% /dev tmpfs tmpfs 993M 0 993M 0% /dev/shm tmpfs tmpfs 993M 9.0M 984M 1% /run tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 151M 346M 31% /boot tmpfs tmpfs 199M 24K 199M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/mapper/vgdata-lvdata xfs 12G 33M 12G 1% /mnt
1.6.1 卷组容量够用,可以直接扩容,然后扩展文件系统
[root@promote ~]# lvextend -L +5G /dev/vgdata/lvdata #将逻辑卷lvdata 扩容5G Size of logical volume vgdata/lvdata changed from 12.00 GiB (3072 extents) to 17.00 GiB (4352 extents). Logical volume vgdata/lvdata successfully resized. [root@promote ~]# lsblk /dev/vgdata/lvdata #逻辑卷已经成功扩容(或者用lvdisplay 查看) NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vgdata-lvdata 253:0 0 17G 0 lvm [root@promote ~]# df -h #但是此时文件系统还没有扩展 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 56G 4.7G 51G 9% / devtmpfs 978M 0 978M 0% /dev tmpfs 993M 0 993M 0% /dev/shm tmpfs 993M 9.0M 984M 1% /run tmpfs 993M 0 993M 0% /sys/fs/cgroup /dev/sda1 497M 151M 346M 31% /boot tmpfs 199M 24K 199M 1% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/mapper/vgdata-lvdata 12G 33M 12G 1% /mnt [root@promote ~]# xfs_growfs /dev/vgdata/lvdata #扩展xfs格式的文件系统 meta-data=/dev/mapper/vgdata-lvdata isize=512 agcount=4, agsize=786432 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=3145728, 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 3145728 to 4456448 [root@promote ~]# df -h #文件系统成功扩展 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 56G 4.7G 51G 9% / devtmpfs 978M 0 978M 0% /dev tmpfs 993M 0 993M 0% /dev/shm tmpfs 993M 9.0M 984M 1% /run tmpfs 993M 0 993M 0% /sys/fs/cgroup /dev/sda1 497M 151M 346M 31% /boot tmpfs 199M 24K 199M 1% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/mapper/vgdata-lvdata 17G 33M 17G 1% /mnt
1.6.2 物理卷容量不够下扩容逻辑卷
(1) 先扩容物理卷
[root@promote ~]# fdisk /dev/sdb #过程略。划分新分区并修改id [root@promote ~]# pvcreate /dev/sdb3 [root@promote ~]# pvcreate /dev/sdb3 #创建新的物理卷 Physical volume "/dev/sdb3" successfully created. [root@promote ~]# vgextend vgdata /dev/sdb3 #扩容卷组vgdata Volume group "vgdata" successfully extended [root@promote ~]# vgdisplay #查看卷组信息 --- Volume group --- VG Name vgdata System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 6 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 <29.99 GiB PE Size 4.00 MiB Total PE 7677 Alloc PE / Size 4352 / 17.00 GiB Free PE / Size 3325 / <12.99 GiB VG UUID qzmlO0-vNqW-Jd0G-MAVi-gWKA-G7G4-Gvaeua
(2)再扩容逻辑卷和文件系统
[root@promote ~]# lvextend -L +10G /dev/vgdata/lvdata Size of logical volume vgdata/lvdata changed from 17.00 GiB (4352 extents) to 27.00 GiB (6912 extents). Logical volume vgdata/lvdata successfully resized. [root@promote ~]# xfs_growfs /dev/vgdata/lvdata meta-data=/dev/mapper/vgdata-lvdata isize=512 agcount=6, agsize=786432 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=4456448, 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 4456448 to 7077888 [root@promote ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 56G 4.7G 51G 9% / devtmpfs 978M 0 978M 0% /dev tmpfs 993M 0 993M 0% /dev/shm tmpfs 993M 9.0M 984M 1% /run tmpfs 993M 0 993M 0% /sys/fs/cgroup /dev/sda1 497M 151M 346M 31% /boot tmpfs 199M 24K 199M 1% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/mapper/vgdata-lvdata 27G 33M 27G 1% /mnt [root@promote ~]#
需要Linux 内核支持
安装xfsprohs 与quota 软件包
Linux 磁盘限额的特点
Linux 磁盘限额的特点
|
|
作用范围
|
针对指定的文件系统
|
限制对象
|
用户账号,组账号
|
限制类型
|
磁盘容量,文件数量
|
限制方法
|
软限制,硬限制
|
(1) 先分区,然后格式化文件系统
[root@promote ~]#fdisk /dev/sdb #过程略 [root@promote ~]#partprobe [root@promote ~]# mkfs.xfs /dev/sdb5 #格式化为xfs 文件系统 meta-data=/dev/sdb5 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621440, 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@promote ~]# mount -o usrquota,grpquota /dev/sdb5 /mnt
#以支持用户限制,组限制的配额功能挂载(临时挂载)usrquota,用户限制。grpquota 组限制 [root@promote ~]# vim /etc/fstab #永久挂载 /dev/sdb5 /mnt xfs defaults,usrquota,grpquota 0 0 [root@promote ~]# mount -a
2.4.1 进行用户配额限制
[root@promote ~]# userdel -r test [root@promote ~]# useradd test [root@promote ~]# echo "123" | passwd --stdin test 更改用户 test 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@promote ~]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 test' /mnt
#此命令可以查看xfs_quota的man 手册,搜索EXAMPLE
#对挂载点/mnt 目录进行限制,限制用户test 磁盘容量软限制为80M ,硬限制为100M 。文件数软限制为8,硬限制为10
2.4.2 查看用户配额
[root@promote ~]# xfs_quota -c'quota -uv test' /mnt #查看用户test的磁盘容量限制 Disk quotas for User test (1000) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/sdb5 0 81920 102400 00 [--------] /mnt [root@promote ~]# xfs_quota -c'quota -iv test' /mnt #查看用户test 的文件数量限制 Disk quotas for User test (1000) Filesystem Files Quota Limit Warn/Time Mounted on /dev/sdb5 0 8 10 00 [--------] /mnt
[root@promote ~]# chmod 777 /mnt [root@promote ~]# su test [test@promote root]$ cd /mnt/ [test@promote mnt]$ dd if=/dev/zero of=/mnt/text.txt bs=10M count=12 #验证磁盘容量限制 dd: 写入"/mnt/text.txt" 出错: 超出磁盘限额 记录了11+0 的读入 记录了10+0 的写出 104857600字节(105 MB)已复制,0.513552 秒,204 MB/秒
###
[test@promote mnt]$ du -h /mnt #查看/mnt 目录容量只有100M 100M /mnt [test@promote mnt]$ rm -rf * [test@promote mnt]$ touch {1..12}.txt #验证文件熟练限制 touch: 无法创建"11.txt": 超出磁盘限额 touch: 无法创建"12.txt": 超出磁盘限额 [test@promote mnt]$ ls 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
[root@promote ~]# xfs_quota -x -c'report -abih' #查看磁盘容量和文件数报告 (默认磁盘容量单位为kb) User quota on /mnt (/dev/sdb5) Blocks Inodes User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- --------------------------------- root 0 0 0 00 [------] 3 0 0 00 [------] test 0 80M 100M 00 [------] 10 8 10 00 [6 days] Group quota on /mnt (/dev/sdb5) Blocks Inodes Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- --------------------------------- root 0 0 0 00 [------] 3 0 0 00 [------] test 0 0 0 00 [------] 10 0 0 00 [------]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现