目录
一、LVM 逻辑卷管理
1.三大概念
物理卷PV:基于硬盘或分区设备创建而来,是由多个PE组成,生成n多个PE,一个PE默认大小为4M
卷组VG:将多个物理卷组成的资源池
逻辑卷LVM:从卷组中划分指定容量大小的存储卷
2.LVM 的管理命令
功能 | 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 |
二、LVM操作主要命令步骤
1、关闭主机,添加两块新硬盘,重启主机
2、先使用 fdisk 工具将磁盘设备/dev/sdb、/dev/sdc划分出主分区sdb1、sdc1,并且把分区类型的 ID 标记号改为“8e”
fdisk /dev/sdb
fdisk /dev/sdc
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux LVM”的类型更改为“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)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux LVM”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3、创建物理卷
pvcreate /dev/sdb1 /dev/sdc1
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
4、创建卷组,卷组名为vgname1
vgcreate vgname1 /dev/sdb1 /dev/sdc1
[root@localhost ~]# vgcreate vg101 /dev/sdb1 /dev/sdc1
Volume group "vg101" successfully created
5、创建逻辑卷,逻辑卷名为lvname1,容量为 20GB,生成的文件路径为/dev/vgname1/lvname1
lvcreate -L 20G -n lvname1 vgname1
[root@localhost ~]# lvcreate -L 30G -n lv101 vg101
Logical volume "lv101" created.
[root@localhost ~]#
6、对逻辑卷进行格式化,创建 XFS 文件系统,并挂载到/opt目录下
mkfs -t xfs /dev/vgname1/lvname1
mount /dev/vgname1/lvname1 /opt
df -hT
[root@localhost ~]# mkfs -t xfs /dev/vg101/lv101
meta-data=/dev/vg101/lv101 isize=512 agcount=4, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=7864320, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount /dev/vg101/lv101 /opt
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
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/mapper/centos-root xfs 36G 4.7G 31G 14% /
/dev/sda1 xfs 1014M 187M 828M 19% /boot
tmpfs tmpfs 378M 44K 378M 1% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg101-lv101 xfs 30G 33M 30G 1% /opt
7、再扩容
vgextend vgname1 /dev/sdc2
lvextend -L +10G [-r] /dev/vgname1/lvname1
xfs_growfs /dev/vgname1/lvname1 #刷新xfs文件系统容量
resize2fs /dev/vgname1/lvname1 #刷新ext4类
[root@localhost ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
[root@localhost ~]# vgextend vg101 /dev/sdd1
Volume group "vg101" successfully extended
[root@localhost ~]# lvextend -L +10G -r /dev/vg101/lv101
Size of logical volume vg101/lv101 changed from 30.00 GiB (7680 extents) to 40.00 GiB (10240 extents).
Logical volume vg101/lv101 successfully resized.
meta-data=/dev/mapper/vg101-lv101 isize=512 agcount=4, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7864320, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7864320 to 10485760
[root@localhost ~]# xfs_growfs /dev/vg101/lv101
meta-data=/dev/mapper/vg101-lv101 isize=512 agcount=6, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=10485760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
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/mapper/centos-root xfs 36G 4.7G 31G 14% /
/dev/sda1 xfs 1014M 187M 828M 19% /boot
tmpfs tmpfs 378M 44K 378M 1% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg101-lv101 xfs 40G 33M 40G 1% /opt
[root@localhost ~]# lvextend -L +10G -r /dev/vg101/lv101
Size of logical volume vg101/lv101 changed from 40.00 GiB (10240 extents) to 50.00 GiB (12800 extents).
Logical volume vg101/lv101 successfully resized.
meta-data=/dev/mapper/vg101-lv101 isize=512 agcount=6, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=10485760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 10485760 to 13107200
[root@localhost ~]# xfs_growfs /dev/vg101/lv101
meta-data=/dev/mapper/vg101-lv101 isize=512 agcount=7, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
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/mapper/centos-root xfs 36G 4.7G 31G 14% /
/dev/sda1 xfs 1014M 187M 828M 19% /boot
tmpfs tmpfs 378M 44K 378M 1% /run/user/0
/dev/sr0 iso9660 4.5G 4.5G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg101-lv101 xfs 50G 33M 50G 1% /opt
[root@localhost ~]#
三、CentOS7 中设置磁盘配额步骤
1、检查是否已安装xfsprogs和xfs_quota软件包
rpm -q xfsprogs quota
yum install -y xfsprogs quota
[root@localhost ~]# yum install -y xfsprogs quota
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在尝试其它镜像。
软件包 xfsprogs-4.5.0-22.el7.x86_64 已安装并且是最新版本
软件包 1:quota-4.01-19.el7.x86_64 已安装并且是最新版本
无须任何处理
2、以支持配额功能的方式挂载文件系统
umount /dev/vgname1/lvname1
mount -o usrquota,grpquota /dev/vgname1/lvname1 /opt #添加挂载参数“usrquota,grpquota”用于增加对用户、组配额功能的支持
或者
vim /etc/fstab
/dev/vgname1/lvname1 /opt xfs defaults,usrquota,grpquota 0 0
umount /dev/vgname1/lvname1
mount -a #-a选项,将/etc/fstab的所有内容重新加载
[root@localhost ~]# umount /dev/vg101/lv101
[root@localhost ~]# mount -o usrquota,grpquota /dev/vg101/lv101 /opt
[root@localhost ~]# umount /dev/vg101/lv101
[root@localhost ~]# mount -a
3、编辑用户和组账号的配额设置
useradd zhangsan
echo 123456 | passwd --stdin zhangsan #免交互式更改用户密码
passwd zhangsan
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 zhangsan' /opt/
#仅限制磁盘容量
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M zhangsan' /opt/
#仅限制文件数
xfs_quota -x -c 'limit -u isoft=4 ihard=5 zhangsan' /opt/
#查看 zhangsan 磁盘容量限制
xfs_quota -c 'quota -uv zhangsan' /opt/
#查看 zhangsan 文件数限制
xfs_quota -c 'quota -i -uv zhangsan' /opt/
bsoft:设置磁盘容量的软限制数值(默认单位为 KB)。
bhard:设置磁盘容量的硬限制数值(默认单位为 KB)。
isoft:设置磁盘文件数的软限制数值。
ihard:设置磁盘文件数的硬限制数值。
-x | 表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用 |
-c | 表示直接调用管理命令 |
-u | 指定用户账号对象 |
-g | 指定组账号对象 |
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# echo abc123 | passwd --stdin zhangsan
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# useradd lisi
[root@localhost ~]# echo abc123 | passwd --stdin lisi
更改用户 lisi 的密码 。
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M zhangsan' /opt
[root@localhost ~]# xfs_quota -x -c 'limit -u isoft=8 ihard=10 lisi' /opt
[root@localhost ~]#
4、验证磁盘配额功能
chmod 777 /opt
su zhangsan
cd /opt
#验证磁盘容量超限
dd if=/dev/zero of=/opt/ddtest.txt bs=10M count=12
#验证磁盘文件数超限
touch {aa,bb,cc,dd,ee,ff}.txt
[root@localhost ~]# su lisi
[lisi@localhost root]$ cd /opt
[lisi@localhost opt]$ ll
总用量 0
drwxr-xr-x. 2 root root 6 4月 16 13:46 xy101
[lisi@localhost opt]$ cd
[lisi@localhost ~]$ chmod 777 /opt
chmod: 更改"/opt" 的权限: 不允许的操作
[lisi@localhost ~]$ exit
exit
[root@localhost ~]# chmod 777 /opt
[root@localhost ~]# su lisi
[lisi@localhost root]$ cd /opt
[lisi@localhost opt]$ touch file{1..9}
[lisi@localhost opt]$ touch file10
[lisi@localhost opt]$ touch file11
touch: 无法创建"file11": 超出磁盘限额
[lisi@localhost opt]$