文章目录
Linux:逻辑卷管理(LVM)&磁盘配额
一、逻辑卷
逻辑卷管理有助于更加轻松地管理磁盘空间。如果托管逻辑卷的文件系统需要更多空间,可以将其卷组中的可用空间分配给逻辑卷,并且可以调整文件系统的大小。如果磁盘开始出现错误,可以将替换磁盘注册为物理卷放入卷组中,并且逻辑卷的区块可迁移到新磁盘
逻辑卷三个概念
-
物理卷(PV):基于硬盘或分区设备创建而来,是由多个PE组成,生成n多个PE,一个PE默认大小为4M。
-
卷组(VG):将多个物理卷组成的资源池。
-
逻辑卷(LVM):从卷组中划分指定容量大小的存储卷。
LVM的管理命令
语法
pvcreate [设备文件] ##准备物理卷
vgcreate [vg-name] [设备分区] ##创建卷组
lvcreate -l [lv-name] [vg-name] ##创建逻辑卷
命令 | PV | VG | LVM |
---|---|---|---|
Scan(扫描) | pvscan | vgscan | |
Create(建立) | pvcreate | vgcreate | lvcreate |
Display(显示) | pvdisplay | vgdisplay | lvdisplay |
Remove(移除) | pvremove | vgremove | lvremove |
Extend(扩展) | --------- | vgextend | lvextend |
Reduce(减少) | ---------- | vgreduce | lvreduce |
二、实施LVM存储
2.1、创建逻辑卷
根据如下要求,创建新的逻辑卷:
-
逻辑卷取名为wl,属于xy101卷组,大小为5G
-
使用xfs文件系统格式化新逻辑卷。该逻辑卷应在系统启动时自动挂载到/mnt/qa下
步骤:
- 准备物理设备
- 新建分区
fdisk /dev/sdb # 在sdb中新建分区
n ## 新建分区
p ## 分区类型,使用默认值
1 ##分区号,使用默认值
2048 ##起始扇区,使用默认值
+10G ##分区结束位置,+10G
t ##标记分区类型
8e ## 分区类型,8e
w ##保存分区表更改
- 创建物理卷
pvcreate /dev/sdb1 ##创建物理卷
- 创建卷组
vgcreate xy101 /dev/sdb1 # 创建卷组,卷组名为xy101
- 创建逻辑卷
lvcreate -n wl -L 5G xy101 ## 创建逻辑卷,-L选项指定逻辑卷大小,-n指定逻辑卷名称
- 创建文件系统并挂载使用
mkfs.xfs /dev/xy101/wl ##格式化逻辑卷
mkdir /mnt/qa ## 创建挂载点
blkid /dev/xy101/wl ##查看设备/dev/xy101/wl UUID
echo 'UUID=165c485d-bb01-4d44-9218-a7e21c6d1ec1 /mnt/qa xfs defaults 0 0' >> /etc/fstab ### 设置永久挂载
mount /dev/xy101/wl ##激活新增分区
[root@host-1 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x17ac63db 创建新的 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):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):L
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@host-1 ~]#
[root@host-1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos_host--1-root 253:0 0 35G 0 lvm /
└─centos_host--1-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 4.4G 0 rom
[root@host-1 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@host-1 ~]# vgcreate xy101 /dev/sdb1
Volume group "xy101" successfully created
[root@host-1 ~]# lvcreate -n wl -L 5G xy101
Logical volume "wl" created.
[root@host-1 ~]# ll /dev/xy101/wl
lrwxrwxrwx. 1 root root 7 4月 17 19:32 /dev/xy101/wl -> ../dm-2
[root@host-1 ~]# mkfs.xfs /dev/xy101/wl
meta-data=/dev/xy101/wl isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, 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@host-1 ~]# mkdir /mnt/qa
[root@host-1 ~]# blkid /dev/xy101/wl
/dev/xy101/wl: UUID="165c485d-bb01-4d44-9218-a7e21c6d1ec1" TYPE="xfs"
[root@host-1 ~]# echo 'UUID=165c485d-bb01-4d44-9218-a7e21c6d1ec1 /mnt/qa xfs defaults 0 0' >> /etc/fstab
[root@host-1 ~]# mount /mnt/qa
[root@host-1 ~]# df -h /mnt/qa
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/xy101-wl 5.0G 33M 5.0G 1% /mnt/qa
2.2、设置逻辑卷大小
- 将逻辑卷wl及其文件系统的大小调整到7G。确保文件系统内容保持不变。
步骤:
-
确保卷组中有足够的容量
df -h |grep wl # 查看文件系统大小 lvs # 查看逻辑卷大小 vgs # 查看卷组空间是否够扩容
-
扩展逻辑卷及文件系统容量
lvextend -rL 7G /dev/mapper/xy101-wl # 逻辑卷和文件系统一起扩容,其中-r选项代表文件系统一起扩展。
[root@host-1 ~]# df -h |grep wl
/dev/mapper/xy101-wl 5.0G 33M 5.0G 1% /mnt/qa
[root@host-1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cenos_host-1 -wi-ao---- <35.00g
swap centos_host-1 -wi-ao---- 4.00g
wl xy101 -wi-ao---- 5.00g
[root@host-1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos_host-1 1 2 0 wz--n- <39.00g 0
xy101 1 1 0 wz--n- <10.00g <5.00g
[root@host-1 ~]# lvextend -rL 7G /dev/mapper/xy101-wl
Size of logical volume xy101/wl changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
Logical volume xy101/wl successfully resized.
meta-data=/dev/mapper/xy101-wl isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1310720, 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 1310720 to 1835008
[root@host-1 ~]# df -h |grep wl
/dev/mapper/xy101-wl 7.0G 33M 7.0G 1% /mnt/qa
[root@host-1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos_host-1 -wi-ao---- <35.00g
swap centos_host-1 -wi-ao---- 4.00g
wl xy101 -wi-ao---- 7.00g
三、磁盘配额
磁盘限额的特点
-
作用范围:针对指定的文件系统(分区)
-
限制对象:用户帐号、组帐号
-
限制类型:磁盘容量、文件数量
-
限制方法:软限制、硬限制
实现磁盘限额的条件
-
需要Linux内核支持
-
安装xfsprogs与quota软件包
设置磁盘配额
- 安装xfsprogs与quota软件包
yum install -y xfsprogs quota ##安装软件
- 以支持配额功能的方式挂载文件系统
mount -o usrquota,grpquota /dev/mapper/xy101-wl /mnt/qa ##以支持配额功能的方式挂载
- 编辑用户和组账号的配额设置
xfs_quota -x -c 'limit -u isoft=4 ihard=5 tj' /mnt/qa/ ##编辑配额
- 验证
chmod +777 /mnt/qa ##添加权限
su tj ##切换用户tj
cd /mnt/qa ##切换当前目录到/mnt/qa
touch abc{1..20} ##新建空文件abc1至abc20
[root@host-1 ~]# yum install -y xfsprogs quota
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
软件包 xfsprogs-4.5.0-22.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 quota.x86_64.1.4.01-19.el7 将被 安装
--> 正在处理依赖关系 quota-nls = 1:4.01-19.el7,它被软件包 1:quota-4.01-19.el7.x86_64 需要
--> 正在处理依赖关系 tcp_wrappers,它被软件包 1:quota-4.01-19.el7.x86_64 需要
--> 正在处理依赖关系 rpcbind,它被软件包 1:quota-4.01-19.el7.x86_64 需要
--> 正在检查事务
---> 软件包 quota-nls.noarch.1.4.01-19.el7 将被 安装
---> 软件包 rpcbind.x86_64.0.0.2.0-49.el7 将被 安装
--> 正在处理依赖关系 libtirpc >= 0.2.4-0.7,它被软件包 rpcbind-0.2.0-49.el7.x86_64 需要
--> 正在处理依赖关系 libtirpc.so.1()(64bit),它被软件包 rpcbind-0.2.0-49.el7.x86_64 需要
---> 软件包 tcp_wrappers.x86_64.0.7.6-77.el7 将被 安装
--> 正在检查事务
---> 软件包 libtirpc.x86_64.0.0.2.4-0.16.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================
正在安装:
quota x86_64 1:4.01-19.el7 base 179 k
为依赖而安装:
libtirpc x86_64 0.2.4-0.16.el7 base 89 k
quota-nls noarch 1:4.01-19.el7 base 90 k
rpcbind x86_64 0.2.0-49.el7 base 60 k
tcp_wrappers x86_64 7.6-77.el7 base 78 k
事务概要
==========================================================================================================================================
安装 1 软件包 (+4 依赖软件包)
总计:497 k
总下载量:89 k
安装大小:1.6 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
libtirpc-0.2.4-0.16.el7.x86_64.rpm | 89 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:quota-nls-4.01-19.el7.noarch 1/5
正在安装 : tcp_wrappers-7.6-77.el7.x86_64 2/5
正在安装 : libtirpc-0.2.4-0.16.el7.x86_64 3/5
正在安装 : rpcbind-0.2.0-49.el7.x86_64 4/5
正在安装 : 1:quota-4.01-19.el7.x86_64 5/5
验证中 : libtirpc-0.2.4-0.16.el7.x86_64 1/5
验证中 : tcp_wrappers-7.6-77.el7.x86_64 2/5
验证中 : 1:quota-4.01-19.el7.x86_64 3/5
验证中 : rpcbind-0.2.0-49.el7.x86_64 4/5
验证中 : 1:quota-nls-4.01-19.el7.noarch 5/5
已安装:
quota.x86_64 1:4.01-19.el7
作为依赖被安装:
libtirpc.x86_64 0:0.2.4-0.16.el7 quota-nls.noarch 1:4.01-19.el7 rpcbind.x86_64 0:0.2.0-49.el7 tcp_wrappers.x86_64 0:7.6-77.el7
完毕!
[root@host-1 ~]# mount -o usrquota,grpquota /dev/mapper/xy101-wl /mnt/qa
[root@host-1 ~]# xfs_quota -x -c 'limit -u isoft=4 ihard=5 tj' /mnt/qa/
[root@host-1 ~]# chmod +777 /mnt/qa
[root@host-1 ~]# su tj
[tj@host-1 root]$ cd /mnt/qa
[tj@host-1 qa]$ touch abc{1..20}
touch: 无法创建"abc6": 超出磁盘限额
touch: 无法创建"abc7": 超出磁盘限额
touch: 无法创建"abc8": 超出磁盘限额
touch: 无法创建"abc9": 超出磁盘限额
touch: 无法创建"abc10": 超出磁盘限额
touch: 无法创建"abc11": 超出磁盘限额
touch: 无法创建"abc12": 超出磁盘限额
touch: 无法创建"abc13": 超出磁盘限额
touch: 无法创建"abc14": 超出磁盘限额
touch: 无法创建"abc15": 超出磁盘限额
touch: 无法创建"abc16": 超出磁盘限额
touch: 无法创建"abc17": 超出磁盘限额
touch: 无法创建"abc18": 超出磁盘限额
touch: 无法创建"abc19": 超出磁盘限额
touch: 无法创建"abc20": 超出磁盘限额
[tj@host-1 qa]$