LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
功能 | 物理卷管理(PV) | 卷组管理(VG) | 逻辑卷管理(LV |
---|---|---|---|
Scan(显示概要信息) | pvscan | vgscan | lvscan |
Create(建立) | pvcreate | vgcreate | lvcreate |
Display(显示详细信息) | pvdisplay | vgdisplay | lvdisplay |
Remove(删除) | pvremove | vgremove | lvremove |
Extend(扩展) | … | vgextend | lvextend |
Reduce(减少) | … | vgreduce | lvreduce |
添加了3块磁盘,分别是/sdc;/sdd;/sde
[root@localhost ~]# pvcreate /dev/sdc /dev/sdd /dev/sde
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.
Physical volume "/dev/sde" successfully created.
已成功创建物理卷“/dev/sdc”。
已成功创建物理卷“/dev/sdd”。
已成功创建物理卷“/dev/sde”。
[root@localhost ~]# vgcreate vg01 /dev/sdc /dev/sdd /dev/sde
Volume group "vg01" successfully created
已成功创建卷组“vg01”
[root@localhost ~]# lvcreate -n lv01 -L 45G vg01
Logical volume "lv01" created.
逻辑卷“lv01”已创建。
创建完成,格式化
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=2949120 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=11796480, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5760, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
元数据=/dev/vg01/lv01 isize=512 agcount=4,agsize=2949120块
=部门Z=512属性=2,项目32位=1
=crc=1 finobt=0,稀疏=0
数据=bsize=4096块=11796480,imaxpct=25
=sunit=0瑞士=0黑色
命名=版本2 bsize=4096 ascii ci=0 ftype=1
日志=内部日志bsize=4096块=5760,版本=2
=sectsz=512 sunit=0 blks,lazy count=1
realtime=none extsz=4096块=0,rtextents=0
先临时挂载,我这边临时挂载到/mnt目录下
[root@localhost ~]# mount /dev/vg01/lv01 /mnt
永久挂载,需要进入配置文件中进行配置
[root@localhost /]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jun 22 10:14:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=2e580993-167c-4588-8356-a47114697c26 / xfs defaults 0 0
UUID=9c0e9f06-7cc8-4b29-9867-8d39122a8ce0 /boot xfs defaults 0 0
UUID=9c762e05-b1d3-498e-acd2-1a279bfb29fe swap swap defaults 0 0
/dev/vg01/lv01 / opt xfs defaults 0 0 ###将这一行的内容进行输入,保存退出###
~
永久挂载配置完成
磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间
磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要
首先,需要Linux内核支持,并且安装xfsprogs与quota软件包
这边我的Linux系统是图形安装的,一般图形安装里面,很多软件包都有
这边先查询一下,是否有xfsprogs
[root@localhost /]# rpm -qa | grep xfsprogs
xfsprogs-4.5.0-18.el7.x86_64
再查询一下其中是否有quota软件包
[root@localhost /]# rpm -ql xfsprogs |grep quota
/usr/sbin/xfs_quota
/usr/share/man/man8/xfs_quota.8.gz
这边查到我这边系统中是有相关软件包的,接下来有一个关键点
关闭核心防护,我这边做实验,临时关闭一下,若不关闭,磁盘配额的命令是无法进行写入的
临时关闭核心防护
[root@localhost /]# setenforce 0
接下来进行永久挂载设置
[root@localhost /]# vim /etc/fstab
进行配置
#
# /etc/fstab
# Created by anaconda on Mon Jun 22 10:14:03 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=2e580993-167c-4588-8356-a47114697c26 / xfs defaults 0 0
UUID=9c0e9f06-7cc8-4b29-9867-8d39122a8ce0 /boot xfs defaults 0 0
UUID=9c762e05-b1d3-498e-acd2-1a279bfb29fe swap swap defaults 0 0
/dev/vg01/lv01 / opt xfs defaults,usrquota,grpquota 0 0
####这边在 defaults后面添加
usrquota和grpquota两个命令,注意中间逗号
要用英文模式###
~
~
配置完挂载后,需要先卸载卷组
卸载命令umount,后面跟你配置的卷组的路径(若不知道路径具体,可以df -th查询一下)
[root@localhost /]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 196G 4.7G 192G 3% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 297M 157M 140M 53% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/vg01-lv01 xfs 45G 33M 45G 1% /mnt
###这个是我的路径/dev/mapper/vg01-lv01###
然后进行卸载
[root@localhost /]# umount /dev/mapper/vg01-lv01
然后再重新挂载一下
[root@localhost /]# mount -a
挂载完成,mount查看一下
[root@localhost /]# mount
。。。
最后一行
/dev/mapper/vg01-lv01 on /opt type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
这边看到,usrquota,grpquota已经有了
然后对软限制和硬限制配置
[root@localhost opt]# xfs_quota -x -c 'limit -u bsoft=50M bhard=80M isoft=4 ihard=6 he' /opt
由于普通用户没有足够的权限进行相关文件创建,这边我们先给he账号进行权限设置
[root@localhost ~]# chmod 777 /opt
然后查看一下
[root@localhost ~]# chmod 777 /opt
drwxrwxrwx. 2 root root 6 Jul 2 03:59 opt
然后我们进入he用户进行验证
[root@localhost /]# su - he
[he@localhost ~]$ cd /opt
[he@localhost opt]$ touch test{1..5}.txt
[he@localhost opt]$ ls
test1.txt test2.txt test3.txt test4.txt test5.txt
[he@localhost opt]$ touch test6.txt
[he@localhost opt]$ touch test7.txt
touch: cannot touch ‘test7.txt’: Disk quota exceeded
触摸:无法触摸“test7.txt”:超出磁盘配额
``
这边看到,之前的限制已经成功