目录
一、逻辑卷的概述
1、物理卷
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
2、卷组
是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。
3、逻辑卷
类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。
总结
可以做这样一个设想来理解以上三者的关系:如果把PV比作地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,那么在地球上划分一个区域并标记为亚洲,则亚洲就相当于一个LV。
二、创建管理逻辑卷
1、创建物理卷
创建物理卷命令:pvcreate 分区名或设备名
具体步骤
1、给系统添加一块硬盘
2、给让系统识别到硬盘
3、给添加的硬盘进行分区
4、将分区好的硬盘改为逻辑卷属性
5、最后将分区或整块硬盘创建物理卷
案例演示
1.给让系统识别到硬盘
[root@localhost ~]# echo "- - -"> /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -"> /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -"> /sys/class/scsi_host/host2/scan
2、给添加的硬盘进行分区和改成逻辑卷属性
[root@localhost ~]# fdisk /dev/sdb 进入 /dev/sdb 磁盘
命令(输入 m 获取帮助):p 显示出硬盘分区信息
磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
命令(输入 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-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):+15G 设置分区为15G
分区 1 已设置为 Linux 类型,大小设为 15 GiB
命令(输入 m 获取帮助):t 修改分区属性
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e 修改成逻辑卷
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p 查看是否修改成功
磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xdc143bb4
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 31459327 15728640 8e Linux LVM
命令(输入 m 获取帮助):w 保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3、最后将分区或整块硬盘创建物理卷
[root@localhost ~]# pvcreate /dev/sdb1 创建物理卷
Physical volume "/dev/sdb1" successfully created.
2、创建卷组和增加卷组容量
创建卷组命令:vgcreate 起的卷组名 物理卷名 (就是上方的设备名)
增加卷组命令 vgextend 卷组名 物理卷名 (同上)
步骤
将物理卷变成卷组
[root@localhost ~]# vgcreate vg1 /dev/sdb1 创建卷组
Volume group "vg1" successfully created
(2)给卷组扩容
1、将剩下的磁盘空间改成逻辑卷属性
[root@localhost ~]# fdisk /dev/sdb 进入/dev/sdb
命令(输入 m 获取帮助):p 显示分区信息
命令(输入 m 获取帮助):n 创建一个新分区
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (31459328-83886079,默认为 31459328):
将使用默认值 31459328
Last 扇区, +扇区 or +size{K,M,G} (31459328-83886079,默认为 83886079):+20G
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t 修改分区属性
分区号 (1,2,默认 2):2 选择要修改的分区
Hex 代码(输入 L 列出所有代码):8e 修改属性
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p 查看属性是否成功
磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xdc143bb4
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 31459327 15728640 8e Linux LVM
/dev/sdb2 31459328 73402367 20971520 8e Linux LVM
命令(输入 m 获取帮助):w 保存修改
The partition table has been altered!
Calling ioctl() to re-read partition table.
2、将逻辑卷变成物理卷
[root@localhost ~]# partprobe 刷新分区列表
[root@localhost ~]# pvcreate /dev/sdb2 创建物理卷
Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# vgextend vg1 /dev/sdb2 将物理卷加到卷组vg1
Volume group "vg1" successfully extended
3、创建逻辑卷和增加逻辑卷
创建逻辑卷命令:lvcreate -L 需要的大小 -n 逻辑卷名 卷组名
增加逻辑卷命令:lvextend -L +容量 /dev/卷组名/逻辑卷名
步骤
1、将卷组划出一部分为逻辑卷
[root@localhost ~]# lvcreate -L 10G -n lv1 vg1 从vg1卷组中取出10G给逻辑卷lv1
Logical volume "lv1" created.
2、给创建好的逻辑卷新建文件系统
[root@localhost ~]# mkfs.xfs /dev/vg1/lv1 给逻辑卷创建文件系统
meta-data=/dev/vg1/lv1 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
3、将逻辑卷挂载到/mnt/目录
(1)查询逻辑卷的uuid号
(2) 编辑永久挂载
[root@localhost ~]# vim /etc/fstab 进入配置文件
[root@localhost ~]# mount -a 验证挂载情况
给逻辑卷扩容
[root@localhost ~]# lvextend -L +20G /dev/vg1/lv1 给逻辑卷增加20G
Size of logical volume vg1/lv1 changed from 10.00 GiB (2560 extents) to 30.00 GiB (7680 extents).
Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# xfs_growfs /mnt/ 给加的20G挂载到目录
meta-data=/dev/mapper/vg1-lv1 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=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 bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
三、磁盘配额管理
1、磁盘配额的概述
(1)实现磁盘限额的条件
1、需要linux内核的支持 (cenos 6、7的内核都支持)
2、安装xfsprogs和quota软件包 (非最小化安装一般都具备)
(2)磁盘配额的特点
1、作用范围
针对指定的文件系统
2、限制对象
用户账号、组账号
3、限制方法
软限制:软限制其实是一个黄线,超过了软限制的数量,就会触发告警
硬限制:硬限制是一个红线,绝对不允许超过
2、磁盘配额的实例
对挂载目录/mnt 进行限制
具体步骤
1、查看是否安装软件包
2、解挂原先的分区
3、挂载目录时带上组和用户的参数
4、设置配额命令实现磁盘配额
5、修改文件夹的权限
6、切换用户进行验证
(1)解挂原先的分区
[root@localhost ~]# rpm -q xfsprogs quota 验证是否安装软件包
xfsprogs-4.5.0-12.el7.x86_64
quota-4.01-14.el7.x86_64
(2)解挂原先的分区
[root@localhost ~]# umount /mnt 解挂载
[root@localhost ~]# df 查看是否解挂
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 19523584 4972112 14551472 26% /
devtmpfs 1916740 0 1916740 0% /dev
tmpfs 1932652 0 1932652 0% /dev/shm
tmpfs 1932652 17420 1915232 1% /run
tmpfs 1932652 0 1932652 0% /sys/fs/cgroup
/dev/sda1 972452 182352 790100 19% /boot
tmpfs 386532 44 386488 1% /run/user/0
/dev/sr0 4414592 4414592 0 100% /run/media/root/CentOS 7 x86_64
(3)挂载目录时带上组和用户的参数
[root@localhost ~]# mount -o usrquota,grpquota /dev/vg1/lv1 /mnt 添加磁盘配额属性
(4)设置配额命令实现磁盘配额
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=100M bhard=150M isoft=50 ihard=100 zs ' /mnt 对用户zs进行磁盘配额
(5)修改文件夹的权限
[root@localhost ~]# chown -R 777 /mnt 修改/mnt/目录的权限
(6)切换用户进行验证
[root@localhost ~]# su zs 切换用户zs
[zs@localhost root]$ dd if=/dev/zero of=/mnt/bigfile bs=100M count=3 给文件夹入容量
dd: 写入"/mnt/bigfile" 出错: 超出磁盘限额
记录了2+0 的读入
记录了1+0 的写出
[zs@localhost mnt]$ touch {1..150}.txt 进入到mnt目录下创建150个文件
touch: 无法创建"1.txt": 超出磁盘限额
touch: 无法创建"2.txt": 超出磁盘限额
touch: 无法创建"3.txt": 超出磁盘限额
touch: 无法创建"4.txt": 超出磁盘限额
touch: 无法创建"5.txt": 超出磁盘限额
touch: 无法创建"6.txt": 超出磁盘限额