LVM磁盘管理、限制用户磁盘配额

管理LVM逻辑卷

文章目录

      • 管理LVM逻辑卷
        • 一、LVM(Logical Volume Manager)概述
          • 1、背景
          • 2、理解
          • 3、作用
          • 4、注意
          • 5、应用
        • 二、相关概念
          • 1、PV(Physical Volume)物理卷
          • 2、VG(Volume Group)卷组
          • 3、LV(Logical Volume)逻辑卷
        • 三、常见的LVM管理的命令
          • 1、使用步骤
          • (加硬盘、改类型、创三卷、格式化、配磁额、求挂载、建用户、限额度)
          • 2、举例说明lvm管理步骤
            • 【1】加硬盘物理分区
            • 【2】lvm磁盘管理
            • 【4】限制用户

一、LVM(Logical Volume Manager)概述

1、背景

随着时间增长,分区容量不够,为解决后期容量不够,我们使用LVM(逻辑卷管理)

2、理解

虚拟的通过lvm软件模拟出来的硬盘分出来的分区(卷)叫逻辑卷。

3、作用

动态(在线)调整磁盘容量,从而提高磁盘管理的灵活性。

4、注意

/boot分区用于存放引导文件,不能基于LVM创建,只能基于物理分区。

5、应用

比如有一个网站,规划有500G时就可以不停服务通过LVM把容量加给网站数据的目录,前提是这目录要单独放在一个LVM分区上。

二、相关概念

1、PV(Physical Volume)物理卷

建立位置:整个硬盘,或使用fdisk等建立起来的普通分区
基本单位:包括许多默认4M大小的PE(Physical Extent,基本单元)

2、VG(Volume Group)卷组

一个或多个物理卷组合而成的整体,一个卷组相当于一个硬盘

3、LV(Logical Volume)逻辑卷

从卷组中分割出的一块空间,相当于卷组分区,格式化(mkfs)使用,用于建立文件系统
LVM磁盘管理、限制用户磁盘配额_第1张图片
图解:有一个物理硬盘先转化成一个个的物理卷,把所有的物理卷粘合成一个大大的逻辑硬盘(卷组),再从对这个卷组分成几个区(逻辑卷),再对这些逻辑卷格式化使用。

三、常见的LVM管理的命令

LVM磁盘管理、限制用户磁盘配额_第2张图片

1、使用步骤
(加硬盘、改类型、创三卷、格式化、配磁额、求挂载、建用户、限额度)

(1)物理分区并改8e的类型,使用partx -a /dev/sdb
(2)Pvcreate:设备名1 设备名2 …
(3)Vgcreate:卷组名 物理卷名1 物理卷2
(4)Lvcreate:-L 容量大小 -n 逻辑卷名 卷组名
(5)格式化mkfs /dev/vgsdd1/lvsdd1。如果逻辑卷不够要加,有两种情况:
【1】卷组支持扩容大小
1)Lvextend:-L +大小 /dev/卷组名/逻辑卷名
2)更新命令:
resize2fs /dev/卷组名/逻辑卷名
xfs_growfs /dev/卷组名/逻辑卷名
【2】卷组小于扩容的大小
1)fdisk /dev/sdc,类型改为8e,使用partx -a /dev/sdc刷新
2)新建pvcreate /dev/sdc,然后加卷组VGextend 名字 新建的物理卷路径
3)这时就是卷组有足够的空间大小Lvextend:-L +大小(没有+就是最终大小) /dev/卷组名/逻辑卷名
4)更新命令:resize2fs /dev/卷组名/逻辑卷名
(6)挂载分区到某个文件中。

2、举例说明lvm管理步骤
【1】加硬盘物理分区

1)添加硬盘并修改系统类型为8e

[root@localhost ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost~]#fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x59671bbd 创建新的 DOS 磁盘标签。
命令(输入 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-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“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)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x59671bbd 创建新的 DOS 磁盘标签。

命令(输入 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-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

注:如果没有转化成功使用命令partprobe -a 磁盘分区 刷新一下
[root@localhost ~]# partprobe /dev/sd[bc]1

【2】lvm磁盘管理

(1)创建物理卷

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/sdb1.
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.

(2)创建卷组

[root@localhost ~]# vgcreate vg0 /dev/sd[bc]1
  Volume group "vg0" successfully created

(3)创建逻辑卷

[root@localhost ~]# lvcreate -L 20G -n lv0 vg0
  Logical volume "lv0" created.
[root@localhost ~]# lvdisplay (查看逻辑卷详细信息)
 --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                VEKkLT-Miwa-ZzdY-mwZL-S61i-R93W-SnUC6l
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-07-01 21:50:50 +0800
  LV Status              available
  # open                 0
  LV Size                20.00 GiB
  Current LE             5120
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

(4)格式化逻辑卷成xfs文件类型

[root@localhost ~]# mkfs -t xfs /dev/vg0/lv0
meta-data=/dev/vg0/lv0           isize=512    agcount=4, agsize=1310720 blks
       =                       sectsz=512   attr=2, projid32bit=1
       =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242880, 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

(5)挂载使用

[root@localhost ~]# mkdir /lvm
[root@localhost ~]# mount /dev/vg0/lv0 /lvm
[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.6G   49G    4% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
/dev/mapper/centos-home xfs       247G   33M  247G    1% /home
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg0-lv0     xfs        20G   33M   20G    1% /lvm

(6)如果逻辑卷不够用要扩充,前提是卷组容量支持,如果不支持就先扩卷组。

[root@localhost ~]# lvextend -L +5G /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from 20.00 GiB (5120 extents) to 25.00 GiB (6400 extents).
  Logical volume vg0/lv0 successfully resized.

[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.6G   49G    4% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
/dev/mapper/centos-home xfs       247G   33M  247G    1% /home
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg0-lv0     xfs        20G   33M   20G    1% /lvm(发现还是20G没有增加)

(7)更新文件系统

[root@localhost ~]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0    isize=512    agcount=4, agsize=1310720 blks
       =                       sectsz=512   attr=2, projid32bit=1
       =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=5242880, 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
data blocks changed from 5242880 to 6553600

[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.6G   49G    4% /
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  133M  882M   14% /boot
/dev/mapper/centos-home xfs       247G   33M  247G    1% /home
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
/dev/mapper/vg0-lv0     xfs        25G   33M   25G    1% /lvm(这时就增加了5G)
【4】限制用户

(1)卸载原来挂载逻辑卷并查看是否安装磁盘配额工具

[root@localhost ~]# umount /lvm
[root@localhost ~]# rpm -q xfsprogs
xfsprogs-4.5.0-18.el7.x86_64
[root@localhost ~]# rpm -ql xfsprogs | grep xfs_quota
/usr/sbin/xfs_quota
/usr/share/man/man8/xfs_quota.8.gz

(2)设置以支持磁盘配额的方式挂载

[root@localhost ~]# mount -o usrquota,grpquota /dev/vg0/lv0 /lvm
[root@localhost ~]# mount(查看是否支持)
/dev/mapper/vg0-lv0 on /lvm type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
[root@localhost ~]# ll / | grep lvm(查看目录权限)
drwxr-xr-x.   2 root root    6 7月   1 21:55 lvm
[root@localhost ~]# chmod 777 /lvm(要是权限不够就赋予其相应的权限)

(3)创建一个用户zhangsan

[root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

(4)编辑用户磁盘配额设置并查看用户 zhangsan 的磁盘容量限制

[root@localhost ~]# xfs_quota -xc 'limit -u bsoft=50M bhard=70M isoft=40 ihard=50 zhangsan' /lvm/
[root@localhost ~]# xfs_quota -c 'quota -uv zhangsan' /lvm/(查看块的限制数)
Disk quotas for User zhangsan (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/vg0-lv0          0      51200      71680   00 [--------] /lvm
[root@localhost ~]# xfs_quota -c 'quota -iuv zhangsan' /lvm/(查看i节点限制数)
Disk quotas for User zhangsan (1000)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/vg0-lv0          0         40         50   00 [--------] /lvm

参数说明
-xc:“x”表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命
令可用“c”表示直接调用管理命令。
bsoft::设置磁盘容量的软限制数值。
bhard:设置磁盘容量的硬限制数值。
isoft:设置磁盘文件数的硬限制数值。
ihard:设置磁盘文件数的软限制数值。
(5)切换用户

[root@localhost ~]# su - zhangsan

(6)在/lvm目录下创建新文件并写入

[zhangsan@localhost lvm]$ touch abc.txt
[zhangsan@localhost lvm]$ dd if=/dev/zero of=/lvm/abc.txt bs=1M count=250
dd: 写入"/lvm/abc.txt" 出错: 超出磁盘限额
记录了71+0 的读入
记录了70+0 的写出
73400320字节(73 MB)已复制,0.872629 秒,84.1 MB/秒

发现超出了磁盘限额,说明限制用户成功。

(6)查看用户磁盘配额详细信息

[root@localhost ~]# xfs_quota -xc 'report -abi'
User quota on /lvm (/dev/mapper/vg0-lv0)
                               Blocks                                          Inodes                     
User ID          Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root           262080          0          0     00 [--------]          4          0          0     00 [--------]
zhangsan        71680      51200      71680     00  [6 days]          1         40         50     00 [--------]

Group quota on /lvm (/dev/mapper/vg0-lv0)
                               Blocks                                          Inodes                     
Group ID         Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root           262080          0          0     00 [--------]          4          0          0     00 [--------]
zhangsan        71680          0          0     00 [--------]          1          0          0     00 [--------]

参数说明
-abi:“a”选项可以查看所有可用分区的配额使用报告,“b”与“i”选项查看磁盘容量和文件数量报告。

你可能感兴趣的:(Linux系统管理)