LVM和磁盘配额

导读:本篇文章讲解 LVM和磁盘配额,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一.LVM

1.LVM概述

LVM是linux操作系统中对磁盘分区进行管理的一种逻辑机制,能够在保持现有数据不变的情况下动态调整磁盘容量,从而增强磁盘管理的灵活性
一般/boot分区用于存放引导文件,不能基于LVM创建

2.LVM机制的基本概念

PV(物理卷) 物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘
VG(卷组) 由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷
LV(逻辑卷) 逻辑卷建立在卷组之上,与物理卷没有直接关系。每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷
PE(物理区域) 物理区域是物理卷中可用于分配的最小存储单元,默认4M
在这里插入图片描述

3.LVM的管理命令

在这里插入图片描述

4.LVM建立步骤

分区

首先新建两个磁盘并对其进行分区为LVM,创建分区上一章已说过,这里就不写详细步骤了
分区完成后如下,两个磁盘均为LVM

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   8e  Linux LVM

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x9b3329fb

磁盘 /dev/mapper/centos-root:39.7 GB, 39720058880 字节,77578240 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

创建物理卷(PV)

两个磁盘同时创建物理卷

[root@yzq ~]#  pvcreate /dev/sdb1 /dev/sdc1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.

创建卷组vgname

[root@yzq ~]# vgcreate vgname /dev/sdb1 /dev/sdc1
  Volume group "vgname" successfully created

创建逻辑卷lvname

[root@yzq dev]# lvcreate -L 18G -n lvname vgname
  Logical volume "lvname" created.

其中 -L 指定逻辑卷大小, -n后指定逻辑卷名称以及逻辑卷卷组来源
即 -n [创建的逻辑卷名称] [逻辑卷卷组来源名称]

格式化

[root@yzq vgname]# mkfs.xfs /dev/vgname/lvname
meta-data=/dev/vgname/lvname     isize=512    agcount=4, agsize=1179648 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=4718592, 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

挂载到/dev/data1下面

挂载并查看

[root@yzq dev]# mount /dev/vgname/lvname /data1
[root@yzq dev]# df -hT
文件系统                  类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   xfs        37G  5.1G   32G   14% /
devtmpfs                  devtmpfs  894M     0  894M    0% /dev
tmpfs                     tmpfs     910M     0  910M    0% /dev/shm
tmpfs                     tmpfs     910M   11M  900M    2% /run
tmpfs                     tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1                 xfs      1014M  179M  836M   18% /boot
tmpfs                     tmpfs     182M  4.0K  182M    1% /run/user/42
tmpfs                     tmpfs     182M   36K  182M    1% /run/user/0
/dev/mapper/vgname-lvname xfs        18G   33M   18G    1% /data1

创建成功,查看

[root@yzq vgname]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                0NcSf4-V8mX-e9uB-cUc7-xVco-mJ2S-KK83aL
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-06-29 00:29:53 +0800
  LV Status              available
  # open                 1
  LV Size                36.99 GiB
  Current LE             9470
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

LV扩容

扩容1G后显示还是19G(需使用扩展生效命令)

[root@yzq vgname]# lvextend -L +1G /dev/vgname/lvname 
  Size of logical volume vgname/lvname changed from 19.00 GiB (4864 extents) to 20.00 GiB (5120 extents).
  Logical volume vgname/lvname successfully resized.
[root@yzq vgname]# df -h
文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root     37G  5.2G   32G   14% /
devtmpfs                   894M     0  894M    0% /dev
tmpfs                      910M     0  910M    0% /dev/shm
tmpfs                      910M   11M  900M    2% /run
tmpfs                      910M     0  910M    0% /sys/fs/cgroup
/dev/sda1                 1014M  179M  836M   18% /boot
tmpfs                      182M  4.0K  182M    1% /run/user/42
tmpfs                      182M   44K  182M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /mnt
/dev/mapper/vgname-lvname   19G   33M   19G    1% /data1

使扩容生效

使用xfs_growfs /dev/vgname/lvname刷新xfs系统容量(对增加空间格式化),查看为20G,扩容生效
(resize2fs刷新ext2类型文件的系统容量)

[root@yzq vgname]# xfs_growfs /dev/vgname/lvname 
meta-data=/dev/mapper/vgname-lvname isize=512    agcount=5, agsize=1179648 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4980736, 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 4980736 to 5242880
[root@yzq vgname]# df -hT
文件系统                  类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   xfs        37G  5.2G   32G   14% /
devtmpfs                  devtmpfs  894M     0  894M    0% /dev
tmpfs                     tmpfs     910M     0  910M    0% /dev/shm
tmpfs                     tmpfs     910M   11M  900M    2% /run
tmpfs                     tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1                 xfs      1014M  179M  836M   18% /boot
tmpfs                     tmpfs     182M  4.0K  182M    1% /run/user/42
tmpfs                     tmpfs     182M   44K  182M    1% /run/user/0
/dev/sr0                  iso9660   4.3G  4.3G     0  100% /mnt
/dev/mapper/vgname-lvname xfs        20G   33M   20G    1% /data1

添加硬盘 不重启识别硬盘
echo “- – -” > /sys/class/scsi_host/host1/scan

5.LVM的移除

去除挂载

[root@yzq scsi_host]# umount /data1/
[root@yzq scsi_host]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   37G  5.2G   32G   14% /
devtmpfs                 894M     0  894M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M   11M  900M    2% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
tmpfs                    182M  4.0K  182M    1% /run/user/42
tmpfs                    182M   44K  182M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /mnt

移除逻辑卷

此时没有我们创建的/dev/vgname/lvname的信息了

[root@yzq scsi_host]# lvremove vgname /dev/vgname/lvname 
Do you really want to remove active logical volume vgname/lvname? [y/n]: y
  Logical volume "lvname" successfully removed
[root@yzq scsi_host]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                0NcSf4-V8mX-e9uB-cUc7-xVco-mJ2S-KK83aL
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-06-29 00:29:53 +0800
  LV Status              available
  # open                 1
  LV Size                36.99 GiB
  Current LE             9470
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                7UkhhQ-5bI3-7Baw-kOx3-XDNj-srOo-JCm6Us
  LV Write Access        read/write
  LV Creation host, time localhost, 2022-06-29 00:29:53 +0800
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

移除卷组

[root@yzq scsi_host]# vgremove vgname
  Volume group "vgname" successfully removed
[root@yzq scsi_host]# vgdisplay
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <39.00 GiB
  PE Size               4.00 MiB
  Total PE              9983
  Alloc PE / Size       9982 / 38.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               owo4jY-YI1r-c7wi-CXdc-8Dgz-fKp1-nN5a7Z

移除物理卷

[root@yzq scsi_host]# pvremove vgname /dev/sdb1 /dev/sdc1 /dev/sdd1
  Device vgname not found.
  Labels on physical volume "/dev/sdb1" successfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.
  Labels on physical volume "/dev/sdd1" successfully wiped.
[root@yzq scsi_host]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <39.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              9983
  Free PE               1
  Allocated PE          9982
  PV UUID               hqa0EL-5o6e-02ce-dqbH-BggS-fP3n-QalXTK

二.磁盘配额

1、实现磁盘限额的条件

安装Linux内核支持
安装xfsprogs与quota软件包

2.作用

对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性
作用范围:针对指定的文件系统(分区)
限制对象:用户账号、组账号
限制类型:磁盘容量、文件数量
限制方法:软限制、硬限制

3.磁盘配额管理

启用文件系统的配额支持

检查是否安装xfsprogs和xfs_quota软件包,若安装是否最新

[root@yzq scsi_host]# yum -y install xfsprogs xfs_quota
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
local                                    | 3.6 kB     00:00     
软件包 xfsprogs-4.5.0-18.el7.x86_64 已安装并且是最新版本
没有可用软件包 xfs_quota。
无须任何处理

以配额功能的方式挂载文件系统

[root@yzq scsi_host]# mount -o usrquota,grpquota /dev/sdd1 /data1
[root@yzq scsi_host]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   37G  5.2G   32G   14% /
devtmpfs                 894M     0  894M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M   11M  900M    2% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
tmpfs                    182M  4.0K  182M    1% /run/user/42
tmpfs                    182M   44K  182M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /mnt
/dev/sdd1                5.0G   33M  5.0G    1% /data1

或者进入vi编辑器修改

[root@yzq scsi_host]# cat /etc/fstab 

/dev/sdd1  /data1  xfs  defaults,usrquota,grpquota  0 0

[root@yzq scsi_host]#mount -a

编辑用户和组账号的配额设置

创建一个新用户lisi

[root@yzq scsi_host]# useradd lisi
[root@yzq scsi_host]# echo "123456" | passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。

进行配额

[root@yzq ~]# xfs_quota -x -c 'limit -u bsoft=20M bhard=40M isoft=4 ihard=6 lisi' /data1
  • x :表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
  • c :表示直接调用管理命令
  • u :指定用户账号对象
  • g :指定组账号对象
    bsoft :设置磁盘容量的软设置数值(默认单位kb)
    bhard :设置磁盘容量的硬限制数值(默认单位kb)
    isoft :设置磁盘文件数的软限制数值
    ihard:设置磁盘文件数的硬限制数值
    查看功能是否启用
[root@yzq ~]# quotaon -p /data1
group quota on /data1 (/dev/sdd1) is on
user quota on /data1 (/dev/sdd1) is on

验证磁盘配额功能

给与/data1目录所有权限

[root@yzq ~]# chmod 777 /data1

进入lisi这个用户,到/data目录下查看,没有东西

[root@yzq ~]# su lisi
[lisi@yzq root]$ cd /data1/
[lisi@yzq data1]$ ls

创建文件数量验证,限额成功

[lisi@yzq data1]$ touch {1..4}.txt
[lisi@yzq data1]$ ls
1.txt  2.txt  3.txt  4.txt
[lisi@yzq data1]$ touch 5.txt
[lisi@yzq data1]$ touch 6.txt
[lisi@yzq data1]$ touch 7.txt
touch: 无法创建"7.txt": 超出磁盘限额
[lisi@yzq data1]$ ls
1.txt  2.txt  3.txt  4.txt  5.txt  6.txt

磁盘空间限额验证

[lisi@yzq data1]$ dd if=/dev/zero of=/data1/1.txt bs=10M count=1记录了1+0 的读入
记录了1+0 的写出
10485760字节(10 MB)已复制,0.0119834 秒,875 MB/秒
[lisi@yzq data1]$ ll
总用量 10240
-rw-rw-r--. 1 lisi lisi 10485760 75 22:20 1.txt
[lisi@yzq data1]$ dd if=/dev/zero of=/data1/2.txt bs=10M count=4dd: 写入"/data1/2.txt" 出错: 超出磁盘限额
记录了4+0 的读入
记录了3+0 的写出
31457280字节(31 MB)已复制,0.0524935 秒,599 MB/秒
[lisi@yzq data1]$ ll
总用量 40960
-rw-rw-r--. 1 lisi lisi 10485760 75 22:20 1.txt
-rw-rw-r--. 1 lisi lisi 31457280 75 22:22 2.txt
[lisi@yzq data1]$ dd if=/dev/zero of=/data1/3.txt bs=10M count=2 
dd: 写入"/data1/3.txt" 出错: 超出磁盘限额
记录了1+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.00456607 秒,0.0 kB/秒
[lisi@yzq data1]$ touch {10..15}.txt
touch: 无法创建"10.txt": 超出磁盘限额
touch: 无法创建"11.txt": 超出磁盘限额
touch: 无法创建"12.txt": 超出磁盘限额
touch: 无法创建"13.txt": 超出磁盘限额
touch: 无法创建"14.txt": 超出磁盘限额
touch: 无法创建"15.txt": 超出磁盘限额

dd :一个设备转换的连续复制命令
“if=” :指定输入设备(或文件)
“of=” :指定输出设备(或文件)
bs :指定读取数据块的大小
count :指定读取数据块的数量
/dev/zero “零”设备文件,可以无限的提供空制符。常用来生成一盒特定大小的文件。

查看配额使用情况

查看所有可用分区的磁盘容量配额使用情况

[root@yzq data1]# xfs_quota -x -c 'report -aibh'
                       Blocks                            Inodes
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root          12K      0      0  00 [------]      4      0      0  00 [------]
lisi          40M    20M    40M  00 [6 days]      6      4      6  00 [6 days]
Group quota on /data1 (/dev/sdd1)
                        Blocks                            Inodes              
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root          12K      0      0  00 [------]      4      0      0  00 [------]
lisi          40M      0      0  00 [------]      6      0      0  00 [------]

查看磁盘配额
repot【参数选项】
-u :对用户查看
-g :对组查看
-a :查看所有可用分区的配额使用报告
-b :查看磁盘容量
-i :产看文件数

总结

lvm quota(配额)

为什么做逻辑卷
动态调整磁盘容量,灵活,可以弹性伸缩

lvm创建思路
识别硬盘 –》【可选】划分分区–》定义物理卷pvcreate /dev/sdb1 /dev/sdc1–》定义卷组vgcreate–》定义lvm逻辑卷–》格式化–》挂载使用
lvm删除思路反过来

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76572.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!