随着时间增长,分区容量不够,为解决后期容量不够,我们使用LVM(逻辑卷管理)
虚拟的通过lvm软件模拟出来的硬盘分出来的分区(卷)叫逻辑卷。
动态(在线)调整磁盘容量,从而提高磁盘管理的灵活性。
/boot分区用于存放引导文件,不能基于LVM创建,只能基于物理分区。
比如有一个网站,规划有500G时就可以不停服务通过LVM把容量加给网站数据的目录,前提是这目录要单独放在一个LVM分区上。
建立位置:整个硬盘,或使用fdisk等建立起来的普通分区
基本单位:包括许多默认4M大小的PE(Physical Extent,基本单元)
一个或多个物理卷组合而成的整体,一个卷组相当于一个硬盘
从卷组中分割出的一块空间,相当于卷组分区,格式化(mkfs)使用,用于建立文件系统
图解:有一个物理硬盘先转化成一个个的物理卷,把所有的物理卷粘合成一个大大的逻辑硬盘(卷组),再从对这个卷组分成几个区(逻辑卷),再对这些逻辑卷格式化使用。
(1)物理分区并改8e的类型,使用partx -a /dev/sdb
(2)Pvcreate:设备名1 设备名2 …
(3)Vgcreate:卷组名 物理卷名1 物理卷2
(4)Lvcreate:-L 容量大小 -n 逻辑卷名 卷组名
(5)格式化mkfs /dev/vgsdd1/lvsdd1。如果逻辑卷不够要加,有两种情况:
【1】卷组支持扩容大小
1)Lvextend:-L +大小 /dev/卷组名/逻辑卷名
2)更新命令:
resize2fs /dev/卷组名/逻辑卷名
xfs_growfs /dev/卷组名/逻辑卷名
【2】卷组小于扩容的大小
1)fdisk /dev/sdc,类型改为8e,使用partx -a /dev/sdc刷新
2)新建pvcreate /dev/sdc,然后加卷组VGextend 名字 新建的物理卷路径
3)这时就是卷组有足够的空间大小Lvextend:-L +大小(没有+就是最终大小) /dev/卷组名/逻辑卷名
4)更新命令:resize2fs /dev/卷组名/逻辑卷名
(6)挂载分区到某个文件中。
1)添加硬盘并修改系统类型为8e
[root@localhost ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost~]#fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x59671bbd 创建新的 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):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost~]#fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x59671bbd 创建新的 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):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
注:如果没有转化成功使用命令partprobe -a 磁盘分区 刷新一下
[root@localhost ~]# partprobe /dev/sd[bc]1
(1)创建物理卷
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
(2)创建卷组
[root@localhost ~]# vgcreate vg0 /dev/sd[bc]1
Volume group "vg0" successfully created
(3)创建逻辑卷
[root@localhost ~]# lvcreate -L 20G -n lv0 vg0
Logical volume "lv0" created.
[root@localhost ~]# lvdisplay (查看逻辑卷详细信息)
--- Logical volume ---
LV Path /dev/vg0/lv0
LV Name lv0
VG Name vg0
LV UUID VEKkLT-Miwa-ZzdY-mwZL-S61i-R93W-SnUC6l
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-07-01 21:50:50 +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:3
(4)格式化逻辑卷成xfs文件类型
[root@localhost ~]# mkfs -t xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0 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
(5)挂载使用
[root@localhost ~]# mkdir /lvm
[root@localhost ~]# mount /dev/vg0/lv0 /lvm
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 1.6G 49G 4% /
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 133M 882M 14% /boot
/dev/mapper/centos-home xfs 247G 33M 247G 1% /home
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg0-lv0 xfs 20G 33M 20G 1% /lvm
(6)如果逻辑卷不够用要扩充,前提是卷组容量支持,如果不支持就先扩卷组。
[root@localhost ~]# lvextend -L +5G /dev/vg0/lv0
Size of logical volume vg0/lv0 changed from 20.00 GiB (5120 extents) to 25.00 GiB (6400 extents).
Logical volume vg0/lv0 successfully resized.
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 1.6G 49G 4% /
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 133M 882M 14% /boot
/dev/mapper/centos-home xfs 247G 33M 247G 1% /home
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg0-lv0 xfs 20G 33M 20G 1% /lvm(发现还是20G没有增加)
(7)更新文件系统
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=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 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 5242880 to 6553600
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 50G 1.6G 49G 4% /
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 133M 882M 14% /boot
/dev/mapper/centos-home xfs 247G 33M 247G 1% /home
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg0-lv0 xfs 25G 33M 25G 1% /lvm(这时就增加了5G)
(1)卸载原来挂载逻辑卷并查看是否安装磁盘配额工具
[root@localhost ~]# umount /lvm
[root@localhost ~]# rpm -q xfsprogs
xfsprogs-4.5.0-18.el7.x86_64
[root@localhost ~]# rpm -ql xfsprogs | grep xfs_quota
/usr/sbin/xfs_quota
/usr/share/man/man8/xfs_quota.8.gz
(2)设置以支持磁盘配额的方式挂载
[root@localhost ~]# mount -o usrquota,grpquota /dev/vg0/lv0 /lvm
[root@localhost ~]# mount(查看是否支持)
/dev/mapper/vg0-lv0 on /lvm type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
[root@localhost ~]# ll / | grep lvm(查看目录权限)
drwxr-xr-x. 2 root root 6 7月 1 21:55 lvm
[root@localhost ~]# chmod 777 /lvm(要是权限不够就赋予其相应的权限)
(3)创建一个用户zhangsan
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
(4)编辑用户磁盘配额设置并查看用户 zhangsan 的磁盘容量限制
[root@localhost ~]# xfs_quota -xc 'limit -u bsoft=50M bhard=70M isoft=40 ihard=50 zhangsan' /lvm/
[root@localhost ~]# xfs_quota -c 'quota -uv zhangsan' /lvm/(查看块的限制数)
Disk quotas for User zhangsan (1000)
Filesystem Blocks Quota Limit Warn/Time Mounted on
/dev/mapper/vg0-lv0 0 51200 71680 00 [--------] /lvm
[root@localhost ~]# xfs_quota -c 'quota -iuv zhangsan' /lvm/(查看i节点限制数)
Disk quotas for User zhangsan (1000)
Filesystem Files Quota Limit Warn/Time Mounted on
/dev/mapper/vg0-lv0 0 40 50 00 [--------] /lvm
参数说明
-xc:“x”表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命
令可用“c”表示直接调用管理命令。
bsoft::设置磁盘容量的软限制数值。
bhard:设置磁盘容量的硬限制数值。
isoft:设置磁盘文件数的硬限制数值。
ihard:设置磁盘文件数的软限制数值。
(5)切换用户
[root@localhost ~]# su - zhangsan
(6)在/lvm目录下创建新文件并写入
[zhangsan@localhost lvm]$ touch abc.txt
[zhangsan@localhost lvm]$ dd if=/dev/zero of=/lvm/abc.txt bs=1M count=250
dd: 写入"/lvm/abc.txt" 出错: 超出磁盘限额
记录了71+0 的读入
记录了70+0 的写出
73400320字节(73 MB)已复制,0.872629 秒,84.1 MB/秒
发现超出了磁盘限额,说明限制用户成功。
(6)查看用户磁盘配额详细信息
[root@localhost ~]# xfs_quota -xc 'report -abi'
User quota on /lvm (/dev/mapper/vg0-lv0)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/ Grace
---------- -------------------------------------------------- --------------------------------------------------
root 262080 0 0 00 [--------] 4 0 0 00 [--------]
zhangsan 71680 51200 71680 00 [6 days] 1 40 50 00 [--------]
Group quota on /lvm (/dev/mapper/vg0-lv0)
Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/ Grace
---------- -------------------------------------------------- --------------------------------------------------
root 262080 0 0 00 [--------] 4 0 0 00 [--------]
zhangsan 71680 0 0 00 [--------] 1 0 0 00 [--------]
参数说明
-abi:“a”选项可以查看所有可用分区的配额使用报告,“b”与“i”选项查看磁盘容量和文件数量报告。