一、LVM概述
- Logical Volume Manager,逻辑卷管理
- 优点:能够保证在现有数据不变的情况下,动态调整磁盘容量,从而提高磁盘管理的灵活性
- /boot分区用于存放引导文件,不能基于LVM创建
二、LVM基本概念
-
PV ( Physical Volume,物理卷)
- 整个硬盘,或使用fdisk等工具建立的普通分区
- 包括许多默认4MB大小的PE ( Physical Extent ,基本单元)
-
VG ( Volume Group,卷组)
- 一个或多个物理卷组合而成的整体
-
LV ( Logical Volume,逻辑卷)
- 从卷组中分割出的一块空间,用于建立文件系统
三、LVM管理
命令:
功能 | 物理卷管理 | 卷组管理 | l逻辑卷管理 |
---|---|---|---|
Scan扫描 | pvscan | vgscan | lvscan |
Create建立 | pvcreate | vgcreate | lvcreate |
Display显示 | pvdisplay | vgdisplay | lvdisplay |
Remove删除 | pvremove | vgremove | lvremovr |
Extend扩展 | vgextend | lvextend | |
Reduce减少 | vgreduce | lvreduce |
主要命令:
pvcreate 设备名1 [设备名2 ... ...](设备可以是分区,可以是硬盘)
vgcreate卷组名 物理卷名1 物理卷名2(物理卷可以是一个,可以是多个)
lvcreate -n 逻辑卷名 -L 容量大小(友好的方式GMK) 卷组名(从哪个卷组里取
)
lvextend -L +大小 /dev/卷组名/逻辑卷名
扩容后刷新文件系统命令
xfg_growfs /dev/vgname1/lvname1 //刷新xfs文件系统容量
resize2fs /dev/vgname1/lvname1 //刷新ext4类型文件系统容量
四、实例
新建LVM
添加硬盘
刷新硬盘
echo "- - - "> /sys/class/scsi_host/host0/scan
echo "- - - "> /sys/class/scsi_host/host1/scan
echo "- - - "> /sys/class/scsi_host/host2/scan
lsblk #查看
fdisk /dev/sdb #创建拓展分区
n 新建 +10G
t 选8e
w 保存
lsblk 查看
pvcreate /dev/sdb1 /dev/sdc #把磁盘转成物理卷
vgcreate vg01 /dev/sdb1 /dev/sdc #创建卷组加入物理卷
lvcreate -L 25G -n ky18 vg01 #创建逻辑卷
-L是指逻辑卷大小 -l pe数量 -n逻辑卷名称 vg01代表从哪个卷组中取pe容量
mkfs.xfs /dev/vg01/ky18 #文件系统
mkdir /data1 #新建
mount /dev/vg01/ky18 /data1 # 挂载
df
/dev/mapper/vg01-ky18 26201600 32944 26168656 1% /data1
partprobe 刷新分区列表
拓展容量
vg里面的空间是否够使用,如果不够就要加物理卷到卷组中 拓展逻辑卷
fdisk /dev/sdb 创建一个分区
pvcreate /dev/sdb2
vgextend vg01 /dev/sdb2
lvextend -L +10G /dev/vg01/ky18
xfs_growfs /data1 刷新新加的空间
五、磁盘配额概述
磁盘配额
综述
磁盘配额(Quota)就是 Linux 系统中用来限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的。
在此概念中,有以下几个重点需要注意:
- 磁盘配额限制的用户和用户组,只能是普通用户和用户组,也就是说超级用户 root 是不能做磁盘配额的;
- 磁盘配额限制只能针对分区,而不能针对某个目录,换句话说,磁盘配额仅能针对文件系统进行限制,举个例子,如果你的 /dev/sda5 是挂载在 /home 底下,那么,在 /home 下的所有目录都会受到磁盘配额的限制;
- 我们可以限制用户占用的磁盘容量大小(block),当然也能限制用户允许占用的文件个数(inode)
磁盘配额就好像我们出租写字楼,虽然整栋楼的空间非常大,但是酬整栋楼的成本太高。我们可以分开出租,用户如果觉得不够用,则还可以租用更大的空间。不过租用是不能随便进行的,其中有几个规矩必须遵守:
- 我的楼是租给外来用户的(普通用户),可以租给一个人(用户),也可以租给一家公司(用户 组),但是这栋楼的所有权是我的,所以不能租给我自己(root 用户);
- 如果要租用,则只能在每层租用一定大小的空间,而不能在一个房间中再划分出子空间来租用(配额只能针对分区,而不能限制某个目录);
- 租户可以决定在某层租用多大的空间(磁盘容量限制),也可以在某层租用几个人员名额,这样只有这几个人员才能进入本层(文件个数限制)。
使用条件
磁盘配额要想正常使用,有以下几个前提条件:
- 内核必须支持磁盘配额。
- 系统中必须安装了 Quota 工具。我们的 Linux 中默认安装了 Quoted 工具
- 要支持磁盘配额的分区必须开启磁盘配额功能。这项功能可以手动开启,不再是默认开启的
磁盘配额中的常见概念
磁盘容量限制和文件个数限制
我们除了可以通过限制用户可用的 block 数量来限制用户可用的磁盘容量,也可以通过限制用户可用的 inode 数量来限制用户可以上传或新建的文件个数。
软限制和硬限制
软限制可理解为警告限制,硬限制就是真正的限制了。比如,规定软限制为 100MB,硬限制为 200MB,那么,当用户使用的磁盘空间为 100~200MB 时,用户还可以继续上传和新建文件,但是每次登录时都会收到一条警告消息,告诉用户磁盘将满。
实际操作
手动挂载添加相关选项
CentOS7中设置磁盘配额步骤
1、检查是否已安装xfsprogs和xfs_ quota软件包
rpm -q xfsprogs quota
yum install -y xfsprogs quota
[root@localhost ~]# mount -o remount usrquota,grpquota /dev/sdb1 /mnt
#添加磁盘配额属性
手动添加的方式,会在下次重新挂载时消失,因此我们可以直接修改 /etc/fstab 文件,将挂载参数写入到配置文件中,这样,即便重新挂载也不会消失,
[root@www ~]# vim /etc/fstab
/dev/sdb1 /mnt xfs defaults,usrquota,grpquota 0 0
[root@www ~]# mount -a
[root@localhost ~]#xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 lisi' /opt/
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c: 表示直接调用管理命令。
-u: 指定用户账号对象
-g: 指定组账号对象
bsoft: 设置磁盘容量的软限制数值(默认单位为KB)。
bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
isoft:设置磁盘文件数的软限制数值。
ihard:设置磁盘文件数的硬限制数值。
xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M lisi' /opt/
#仅限制磁盘容量
xfs quota -x -c 'limit -u isoft=4 ihard=5 lisi' /opt/
#仅限制文件数
xfs_ quota -C 'quota -uv lisi' /opt/
#查看zhangsan磁盘:容量限制
xfs quota -c 'quota -i -uv lisi' /opt/
#查看zhangsan文件数限制
验证磁盘配额功能
chmod 777 /opt
Su lisi
cd /opt
#验证磁盘容量超限
dd if=/dev/zero of=/opt/kgc.txt bs=1OM count=12
#验证磁盘文件数超限
touch {aa,bb, cc,dd,ee, ff} .txt
dd命令是一一个设备转换和连续复制命令
“if=” 指定输入设备(或文件)
"of="指定输出设备(或文件)
"bs=" 指定读取数据块的大小
"count=”指定读取数据块的数量
/dev/zero “零"设备文件,可以无限的提供空字符。常用来生成-一个特定大小的文件。
5、查看配额使用情况
#查看所有可用分区的磁盘容量配额使用情况
xfs_ quota - X -C ' report -abih'
查看磁盘配额
report常用选项:
-u:对用户查看
-g:对组查看
-a:查看所有可用分区的配额使用报告
-b:查看磁盘容量
-i:查看文件数
取消设置
[root@localhost ~]#xfs_quota -x -c 'disable -up' /data
xfs_quota -x -c "disable -up" /data/
#暂时取消
xfs_quota -x -c "off -up" /data/
#需要重新挂载,完全关闭
xfs_quota -x -c "remove -p" /data/
#移除设置 需要在off状态下
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=20M bhard=30M isoft=5 ihard=6 zhangsan' /opt/log/
[root@localhost ~]# chmod 777 /opt/log/
[root@localhost ~]# su zhangsan
[zhangsan@localhost log]$ touch file{1..10}.txt
touch: 无法创建"file7.txt": 超出磁盘限额
touch: 无法创建"file8.txt": 超出磁盘限额
touch: 无法创建"file9.txt": 超出磁盘限额
touch: 无法创建"file10.txt": 超出磁盘限额
[zhangsan@localhost log]$ ls
file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt
[zhangsan@localhost log]$ dd if=/dev/zero of=/opt/log/test.txt bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
[zhangsan@localhost log]$ dd if=/dev/zero of=/opt/log/test1.txt bs=1M count=20
dd: 写入"/opt/log/test1.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
10485760字节(10 MB)已复制,0.00546079 秒,1.9 GB/秒
[zhangsan@localhost log]$ touch file{1..10}.txt
touch: 无法创建"file1.txt": 超出磁盘限额
touch: 无法创建"file2.txt": 超出磁盘限额
touch: 无法创建"file3.txt": 超出磁盘限额
touch: 无法创建"file4.txt": 超出磁盘限额
touch: 无法创建"file5.txt": 超出磁盘限额
touch: 无法创建"file6.txt": 超出磁盘限额
touch: 无法创建"file7.txt": 超出磁盘限额
touch: 无法创建"file8.txt": 超出磁盘限额
touch: 无法创建"file9.txt": 超出磁盘限额
touch: 无法创建"file10.txt": 超出磁盘限额
[zhangsan@localhost log]$ ls
test1.txt test.txt
[zhangsan@localhost log]$ rm -rf *
[zhangsan@localhost log]$ touch file{1..10}.txt
touch: 无法创建"file7.txt": 超出磁盘限额
touch: 无法创建"file8.txt": 超出磁盘限额
touch: 无法创建"file9.txt": 超出磁盘限额
touch: 无法创建"file10.txt": 超出磁盘限额
[zhangsan@localhost log]$ ls
file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt