lvm逻辑卷概念
lvm基本概念
- Lvm 是 Logical Volume Manager 的简称:逻辑卷管理
- Linux系统下管理硬盘分区的一种机制。lvm适合于管理大存储设备。
- 用户可以动态的对硬盘进行扩容(缩容)。
- 我们只关心使用层面,对于物理底层(磁盘)不再关心。
- lvm:Linux系统的一个重要的存储技术(动态扩容)
- 不同硬盘的不同分区或者同一个硬盘的不同分区,组成一个逻辑上的硬盘,逻辑卷组;通过逻辑卷组的划分,形成一个个逻辑卷(分区),通过逻辑卷来对磁盘进行动态管理。
lvm优点
- 解决了传统分区方式无法动态管理的问题
- 读写性能更好
- 虚拟:虚拟的概念还是要依托于真实的物理硬件来提供支撑
lvm专业名词
- 物理卷:pv 真正的物理硬盘或者分区
- 卷组:vg 把物理卷组合起来就是卷组
- lv:对卷组进行分区,就是逻辑卷
- lvextend:对卷组,也可以对逻辑卷进行动态扩容
- lvm:最小存储单位—4MB(PE)
lvm的管理命令
基本命令
创建lvm
操作步骤
第一步:创建物理硬盘并分区
我们创建三个磁盘,并分别建立相应的主分区1
第二步:创建卷组,把物理磁盘组合起来形成一个逻辑硬盘
我们使用 vgcreate 创建一个卷组 bcd1,由三个硬盘相应的三个主分区1组成
创建好卷组后,一定要用 vgdisplay 查看下是否成功,查看显示bcd1卷组空间是30G
第三步:创建逻辑卷,就是对这个卷组进行分区
我们使用 lvcreate 创建逻辑卷 bcd1-1,并给他10G空间
-L:指定逻辑卷的容量,单位G、M、T
-n:给逻辑卷起名字
第四步:创建文件系统
我们使用 mkfs. 为bcd1逻辑卷创建文件系统,操作和物理硬盘分区一样,ubuntu是ext4,centos7使用xfs
第五步:挂载
最后我们使用临时挂载将bcd1-1逻辑卷挂载到data1上
这时候逻辑卷就可以正常使用了
扩容
逻辑卷扩容——lvextend
首先扩容前一定要查看卷组的空间,防止空间不够无法扩容
接着我们使用 lvextend 命令给bcd-1卷扩容
由上图可见扩容后,显示还是只有10G,需要我们刷新命令才会生效
我们使用刷新命令,发现扩容生效了
刷新命令 -r
- resize2fs 逻辑卷 #ext4刷新扩容或缩容
- xfs_growfs 逻辑卷 #xfs扩容刷新,不能缩容
卷组扩容——vgextend
卷组扩容前需要先看看磁盘sdb、sdc和sdd还有没有空间,给卷组扩容,是需要把硬盘剩余的空间
我们分给卷组才行
首先我们在硬盘sdb上再创个组sdb2,10G,我们需要把他分给卷组,这样卷组才能扩容
接下来我们直接把sdb2加入到bcd1卷组中,查看发现bcd1卷组的空间扩容了10G
磁盘配额——quota
建立磁盘配额
指定一个用户,只能使用磁盘设备挂载点的指定额度。
额度是指:磁盘空间的大小,创建文件的数量。
磁盘配额:1、限制空间的大小 2、限制文件的数量
使用磁盘配额需要使用xfs系统,ext4系统无法使用
操作如下:
首先我们在sdc硬盘上创建分区sdc2,安装好文件系统——注意需要使用 xfs 系统,再进行挂载
这时候挂载就和之前不一样了,需要使用命令
mount -o usrquota,grpquota /dev/sdc2 /data2 挂载点是 /data2目录
接下来就是让挂载生效,需要使用命令:
xfs_quota -x -c "limit -u bsoft=80M bhard=100M zw110" /data2
#zw110这个用户在data2这个挂载点最多使用100M空间
xfs_quota -x -c "limit -u isoft=5 ihard=8 zw110" /data2
#zw110这个用户在data2这个挂载点最多使用8个inode号,即8个文件
- -x:启用专家模式,可以对配额系统进行修改
- -c:调用管理命令
- -u:指定用户
- limit 限制
- bsoft:设置磁盘的软限制(可以超出限制,这里可以不加)
- bhard:设置磁盘的硬限制
- zw110:限制用户名
- /data2:用户在data2这个挂载点会失效配额
- i:inode
这时候发现data2是root创建的用户,其他用户只有执行的权限,没有读写权限,我们可以赋予他最高权限
这时候,zw110这个用户在data2这个目录中,最多使用100M空间且最多创建8个文件
模拟磁盘配额
命令如下:
dd if=/dev/zero of=/data2/123.txt bs=10M count=12
#往data2这个目录中,创建一个123.txt的文件,120M大小(一次10M,12次)
- dd:设备转换和连续复制的命令
- if:指定输入的设备或文件
- of:指定输出的设备或文件
- bs:指定输出数据块的大小
- count:指定数据块的次数
- /dev/zero:零设备文件,提高无限的空字符,用来设定特定大小的文件
可以看出,我们创建120M的文件是不成功的,但是却创建了100M的文件,因为我之前给他的磁盘配额只有100M。
同样的我们在data2里创建10个.txt文件,发现也是失败的,但是却创建了8个文件,因为我之前给他的磁盘配额只有8个文件。
这种做法可以防止用户滥用空间
判断磁盘的读写是否失效——iostat
iostat 磁盘
我们可以使用iostat 监控磁盘容量变化,这时候我们新打开个窗口,一个窗口写入,一个窗口建空
用dd if=/dev/zero of=/data2/123.txt bs=20M count=20,写入文件时,磁盘写入量再增加