LVM与磁盘配额实战模拟
前言
LVM分区方案能够动态调整磁盘容量,提高磁盘管理的灵活性,在实际生产环境中被广为使用,是安装CentOS 系统的过程中选择自动分区的默认分区方案。
磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单机用户来说意义不大。
本次实验模拟的就是LVM逻辑卷的创建、格式化后挂载使用以及磁盘配额具体是怎么操作的。
LVM概述
注:第一块硬盘不要做LVM,因为第一块硬盘有引导分区,当LVM创建成功时会格式化
Logical Volume Manager,逻辑卷管理
动态调整磁盘容量,从而提高磁盘管理的灵活性
/boot分区用于存放引导文件,不能基于LVM创建
图形界面管理工具
system-config-lvm
LVM机制的基本概念
PV(物理卷) 对象可以是整块磁盘或者是磁盘分区
VG(卷组) 物理卷合并
LV(逻辑卷) 对卷组空间进行细化
注:里面物理卷pv磁盘的格式必须是8e,才能做LVM
LVM的管理命令
主要命令
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名、逻辑卷名
LVM应用
推荐步骤 4
PV→VG→LV→格式化,挂载使用文件系统
逻辑卷创建
1.将虚拟机中新加的两块硬盘添加到物理卷,划分到一个卷组后,创建成多个逻辑卷,格式化为ext4文件系统和xfs文件系统后挂载到系统的目录中;
2.对新加的逻辑卷进行磁盘配额设置。
逻辑卷创建过程:
1.准备两块以上硬盘连接到主机上
2.重启系统检测识别到这几块硬盘
3.管理硬盘并给这些硬盘分区并保存
4.格式化各硬盘分区
5.挂载使用
6.创建物理卷
7.将多块物理卷合成一个卷组
8.讲卷组分割成若干逻辑卷
命令:2.fdisk -l
3.fdisk /dev/sdb 、fdisk /dev/sdc(-t成8e)
4.mkfs -t ext4 /dev/sdb1 、mkfs -l ext4 /dev/sdc1
5.mount /dev/sdb1 /b1 、mount /dev/sdc1 /c1 --》 df -Th检测效果
6.pvcreate /dev/sdb1 /dev/sdc1
7.vgcreate lvm /dev/sdb1 /dev/sdc1
8.lvcreate -L 50G -n xin(lvm名称) lvm(卷组名称)
9.mkfs.xfs /dev/xin/lvm 格式化
10.mkdir /data 新建目录
11.mount /dev/cin/lvm /data 临时挂载
建立逻辑卷
1.添加三块20G磁盘,添加后需要点击确定,并重启,查看磁盘是否存在
[root@server1 ~]# cd /dev/
[root@server1 dev]# ls
sdb sbc sbd
或使用fdisk -l命令查看
2.进行分区,并转化(sdb,sdc,sdd),现只操作sdb分区操作,其余两个也需要进行分区
[root@server1 ~]# cd /dev/
[root@server1 dev]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x6c485854 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6c485854
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6c485854
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3查看分区之后效果
[root@server1 dev]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6c485854
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 8e Linux LVM
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x32b1ca3c
设备 Boot Start End Blocks Id System
/dev/sdd1 2048 41943039 20970496 8e Linux LVM
磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000997c4
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 6295551 2098176 82 Linux swap / Solaris
/dev/sda3 6295552 104857599 49281024 83 Linux
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc09760f4
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 8e Linux LVM
4.做成物理卷
[root@server1 dev]# pvcreate /dev/sd{b..d}1 pvcreate后面接设备名
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdd1" successfully created.
[root@server1 dev]# pvscan //查看物理卷
PV /dev/sdb1 lvm2 [<20.00 GiB]
PV /dev/sdc1 lvm2 [<20.00 GiB]
PV /dev/sdd1 lvm2 [<20.00 GiB]
Total: 3 [<60.00 GiB] / in use: 0 [0 ] / in no VG: 3 [<60.00 GiB] //Total(总计) in use:(正在使用)
no VG:(没有组成卷组)
5.组成卷组 (mailbox:卷组名称)+ 设备名称
[root@server1 dev]# vgcreate mailbox /dev/sd{b..d}1
Volume group "mailbox" successfully created
[root@server1 dev]# pvscan //组成卷组之后,查看物理卷
PV /dev/sdb1 VG mailbox lvm2 [<20.00 GiB / <20.00 GiB free]
PV /dev/sdc1 VG mailbox lvm2 [<20.00 GiB / <20.00 GiB free]
PV /dev/sdd1 VG mailbox lvm2 [<20.00 GiB / <20.00 GiB free]
Total: 3 [<59.99 GiB] / in use: 3 [<59.99 GiB] / in no VG: 0 [0 ]
[root@server1 dev]# vgdisplay 详细信息
--- Volume group ---
VG Name mailbox //卷组名称
System ID
Format lvm2 //格式
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write //VG访问权限可读可写
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size <59.99 GiB //VG总空间
PE Size 4.00 MiB //物理卷的组成格式,每个PE基本单元大小为4M
Total PE 15357
Alloc PE / Size 0 / 0
Free PE / Size 15357 / <59.99 GiB
VG UUID pGkKch-uEiR-1Plu-DxCi-T3Bg-DtJZ-tTcodv //卷组ID号,便于系统识别
在/dev目录下查看是否有卷组的目录,发现没有,因为此时没有划分逻辑卷
6.创建逻辑卷
[root@server1 dev]# lvcreate -L 25G -n mbox01 mailbox
Logical volume "mbox01" created.
附加:-L划分大小 -n:名称 mailbox:卷组名称
再次查看/dev目录下是否有mailbox目录:内部是否有mbox01文件
[root@server1 dev]# ls
mailbox
[root@server1 dev]# cd mailbox/
[root@server1 mailbox]# ls
mbox01
[root@server1 mailbox]# pwd 绝对路径
/dev/mailbox //设备文件路径
[root@server1 dev]# lvdisplay //逻辑卷详细信息
--- Logical volume ---
LV Path /dev/mailbox/mbox01
LV Name mbox01
VG Name mailbox
LV UUID evvNMG-0gBB-ZjJS-cbk7-DGm6-rAQj-dQVrEs
LV Write Access read/write
LV Creation host, time server1, 2020-12-08 12:07:47 +0800
LV Status available
# open 0
LV Size 25.00 GiB
Current LE 6400
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
再次创建一个逻辑卷,并查看
[root@server1 dev]# lvcreate -L 15G -n mbox02 mailbox
Logical volume "mbox02" created.
[root@server1 dev]# ls mailbox/
mbox01 mbox02
[root@server1 dev]# lvdisplay //查看逻辑卷的详细信息
--- Logical volume ---
LV Path /dev/mailbox/mbox01
LV Name mbox01
VG Name mailbox
LV UUID evvNMG-0gBB-ZjJS-cbk7-DGm6-rAQj-dQVrEs
LV Write Access read/write
LV Creation host, time server1, 2020-12-08 12:07:47 +0800
LV Status available
# open 0
LV Size 25.00 GiB
Current LE 6400
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/mailbox/mbox02
LV Name mbox02
VG Name mailbox
LV UUID nmCFYO-s29g-F6iQ-O5oJ-uo9M-e1Wm-cZqz0v
LV Write Access read/write
LV Creation host, time server1, 2020-12-08 12:27:21 +0800
LV Status available
# open 0
LV Size 15.00 GiB
Current LE 3840
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
7.扩展逻辑卷的空间
[root@server1 dev]# lvextend -L +10G /dev/mailbox/mbox01
Size of logical volume mailbox/mbox01 changed from 25.00 GiB (6400 extents) to 35.00 GiB (8960 extents).
Logical volume mailbox/mbox01 successfully resized.
[root@server1 dev]# lvdisplay
--- Logical volume ---
LV Path /dev/mailbox/mbox01
LV Name mbox01
VG Name mailbox
LV UUID evvNMG-0gBB-ZjJS-cbk7-DGm6-rAQj-dQVrEs
LV Write Access read/write
LV Creation host, time server1, 2020-12-08 12:07:47 +0800
LV Status available
# open 0
LV Size 35.00 GiB
Current LE 8960
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/mailbox/mbox02
LV Name mbox02
VG Name mailbox
LV UUID nmCFYO-s29g-F6iQ-O5oJ-uo9M-e1Wm-cZqz0v
LV Write Access read/write
LV Creation host, time server1, 2020-12-08 12:27:21 +0800
LV Status available
# open 0
LV Size 15.00 GiB
Current LE 3840
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
8.格式化,来使用空间
[root@server1 dev]# mkfs -t xfs /dev/mapper/mailbox-mbox01 或mkfs -t xfs /dev/mailbox/mbox01
meta-data=/dev/mapper/mailbox-mbox01 isize=512 agcount=4, agsize=2293760 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=9175040, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=4480, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@server1 dev]# mkfs -t xfs /dev/mailbox/mbox02
meta-data=/dev/mailbox/mbox02 isize=512 agcount=4, agsize=983040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=3932160, 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
9.创建挂载点,并自动挂载
[root@server1 dev]# ls /opt/
rh
[root@server1 dev]# ls /opt/
mbox1 mbox2 rh
[root@server1 dev]# vim /etc/fstab 添加以下两行 注:没写好一项用tab隔开
/dev/mailbox/mbox01 /opt/mbox1 xfs defaults 0 0
/dev/mailbox/mbox02 /opt/mbox2 xfs defaults 0 0
[root@server1 dev]# mount -a //必须要加上
[root@server1 dev]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 47G 4.4G 43G 10% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.1M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sr0 4.3G 4.3G 0 100% /mnt
/dev/sda1 1014M 174M 841M 18% /boot
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/mailbox-mbox01 35G 33M 35G 1% /opt/mbox1
/dev/mapper/mailbox-mbox02 15G 33M 15G 1% /opt/mbox2
提出提问,若此时添加99个文件之后发现磁盘空间已满,此时应该如何操作
[root@server1 dev]# cd /opt/mbox1/
[root@server1 mbox1]# touch test{1..99}.txt
[root@server1 mbox1]# ls
[root@server1 mbox1]# lvextend -L +5G /dev/mailbox/mbox01//添加5G发现,并没有挂载上去
Size of logical volume mailbox/mbox01 changed from 35.00 GiB (8960 extents) to 40.00 GiB (10240 extents).
Logical volume mailbox/mbox01 successfully resized.
[root@server1 mbox1]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 47G 4.4G 43G 10% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.1M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sr0 4.3G 4.3G 0 100% /mnt
/dev/sda1 1014M 174M 841M 18% /boot
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/mailbox-mbox01 35G 33M 35G 1% /opt/mbox1
/dev/mapper/mailbox-mbox02 15G 33M 15G 1% /opt/mbox2
实现磁盘限额
ext4文件系统磁盘配额
需要Liunx内核支持
安装xfsprogs与quota软件包(CentOS系统默认已安装)
Linux 磁盘限额的特点(对xfs格式做磁盘限额)
作用范围:针对指定的文件系统(xfs)(分区)
限制对象:用户账户、组账号(基本组)
限制类型:磁盘容量、文件数量
限制方法:软限制、硬限制
磁盘配额正常使用
以支持配额功能的方式挂载文件系统
↓
编辑用户和组账号的配额设置
↓
验证磁盘配额功能
↓
查看磁盘配额使用情况
例题
1.确保有磁盘限额的软件功能
rpm -q quota
若没有,需要rpm安装xfsprogs软件
2.带属性的挂载
mount -o usrquota,grpquota /dev/lvm/cloud /data
mount
这是临时的
永久的
vi /etc/fstab
/dev/lvm/cloud /data xfs defaults,usrquota,grpquota 0 0
mount -a(在不重启的状态下加载/etc/fstab里面的配置文件内容 )
注:需要给/data写的权限,因此要加一条命令
chmod -R 777 /data
3.限定liming用户lvm配额
useradd liming
passwd liming
xfs quota -x -c ‘limit -u bsoft=60M bhard=80M isoft=3 ihard=4 liming’/data
-x :专家模式
-c:命令
测试验证效果:
su liming
cd /data
dd if=/dev/zero of=./1.txt bs=110M count=1
ls -lh
4.限定ag组用户lvm磁盘配额
groupadd ag
useradd -g ag lisi
passwd lisi
xfs_quota -x -c ‘limit -g bsoft=80M bhard=100M isoft=5 ihard=6 ag’ /data
测试验证效果
su lisi
$cd /data
$dd if=/dev/zero of=./2.txt bs=120M count=1
$ls -lh
5.查看用户、组对其目录的报告
#xfs_quota -x -c ‘report -ubin’ /data
#xfs_quota -x -c ‘erport -gbin’ /data
b-block 磁盘容量 i-inode 文件数量
限制的方式 (针对容量)(针对文件的数量)节点 建立在LVM验证之上
软限制 硬限制
磁盘配额验证
查看以下软件包是否已安装
[root@server1 /]# rpm -ql xfsprogs | grep quota
/usr/sbin/xfs_quota
/usr/share/man/man8/xfs_quota.8.gz
[root@server1 /]# rpm -qa | grep xfsprogs
xfsprogs-4.5.0-12.el7.x86_64
[root@server1 /]# setenforce 0 //增强型安全管理功能
进行永久性挂载
[root@server1 /]# vim /etc/fstab
针对mbox02来做此限额验证
/dev/mailbox/mbox02 /opt/mbox2 xfs defaults,usrquota,grpquota 0 0
使其生效,需要卸载,重新挂载
[root@server1 /]# umount /opt/mbox2
[root@server1 /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 47G 4.4G 43G 10% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.1M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sr0 4.3G 4.3G 0 100% /mnt
/dev/sda1 1014M 174M 841M 18% /boot
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
/dev/mapper/mailbox-mbox01 35G 33M 35G 1% /opt/mbox1
[root@server1 /]# mount -a
[root@server1 /]# mount (以下为最后两行)
/dev/mapper/mailbox-mbox01 on /opt/mbox1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/mailbox-mbox02 on /opt/mbox2 type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
设置限制
添加zhangsan用户
[root@server1 /]# useradd zhangsan
[root@server1 /]# passwd zhangsan
[root@server1 /]# xfs_quota -x -c 'limit -u bsoft=50M bhard=80M isoft=4 ihard=6 zhangsan' /opt/mbox2/
验证节点
[root@server1 /]# chmod 777 /opt/mbox2/
[root@server1 /]# ls -l /opt/
总用量 4
drwxr-xr-x. 2 root root 4096 12月 8 12:43 mbox1
drwxrwxrwx. 2 root root 6 12月 8 12:36 mbox2
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
[root@server1 /]# su - zhangsan
上一次登录:二 12月 8 13:20:56 CST 2020pts/0 上
[zhangsan@server1 ~]$ cd /opt/mbox2/
[zhangsan@server1 mbox2]$ ls
[zhangsan@server1 mbox2]$ touch test{1..4}.txt
[zhangsan@server1 mbox2]$ touch test{1..7}.txt
touch: 无法创建"test7.txt": 超出磁盘限额
[zhangsan@server1 mbox2]$ ls
test1.txt test2.txt test3.txt test4.txt test5.txt test6.txt
[zhangsan@server1 mbox2]$ rm -rf *
验证容量
[zhangsan@server1 mbox2]$ dd if=/dev/zero of=/opt/mbox2/test01.txt bs=1M count=50
记录了50+0 的读入
记录了50+0 的写出
52428800字节(52 MB)已复制,0.0823502 秒,637 MB/秒
[zhangsan@server1 mbox2]$ ls -lh
总用量 50M
-rw-rw-r--. 1 zhangsan zhangsan 50M 12月 8 13:28 test01.txt
[zhangsan@server1 mbox2]$ dd if=/dev/zero of=/opt/mbox2/test02.txt bs=1M count=50
dd: 写入"/opt/mbox2/test02.txt" 出错: 超出磁盘限额
记录了31+0 的读入
记录了30+0 的写出
31457280字节(31 MB)已复制,0.0520999 秒,604 MB/秒
[zhangsan@server1 mbox2]$ ls -lh //是相加的
总用量 80M
-rw-rw-r--. 1 zhangsan zhangsan 50M 12月 8 13:29 test01.txt
-rw-rw-r--. 1 zhangsan zhangsan 30M 12月 8 13:29 test02.txt
超出磁盘限额之后无法创建节点 ,当然节点超出限额之后无法创建容量
[zhangsan@server1 mbox2]$ touch test03.txt
touch: 无法创建"test03.txt": 超出磁盘限额
查看配额情况
[root@server1 ~]# xfs_quota -x -c 'report -aib' /opt/mbox2/
User quota on /opt/mbox2 (/dev/mapper/mailbox-mbox02)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/ Grace
---------- -------------------------------------------------- --------------------------------------------------
root 0 0 0 00 [--------] 3 0 0 00 [--------]
zhangsan 81920 51200 81920 00 [6 days] 2 4 6 00 [--------]
Group quota on /opt/mbox2 (/dev/mapper/mailbox-mbox02)
Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/ Grace
---------- -------------------------------------------------- --------------------------------------------------
root 0 0 0 00 [--------] 3 0 0 00 [--------]
zhangsan 81920 0 0 00 [--------] 2 0 0 00 [--------]
附加:mount -a :自动挂载