逻辑卷LVM 与 配置 磁盘配额管理

目录:

一:逻辑卷 LVM

  1.1 LVM 概述

  1.2 LVM机制概念

  1.3 LVM管理命令

  1.4 创建逻辑卷

  1.5 格式化逻辑卷并挂载使用

  1.6 逻辑卷扩容

二:设置磁盘配额

  2.1 磁盘限额的条件与特点

  2.2 磁盘配额流程

  2.3 以支持配额的功能挂载文件系统

  2.4 编辑用户和组账号配额

  2.5 验证磁盘配额

  2.6 查看配额使用情况

   

 

一 逻辑卷LVM

1.1 LVM  概述

LVM:Logical Volume Manage 逻辑卷管理

  能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性

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

 

1.2,LVM机制概念

PV (Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(PE) ,从而构成物理卷。
 
VG (Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷。
 
LV (Logical volume,逻辑卷)
从卷组中分割出的一块空间,形成逻辑卷。使用mkfs等工具可在逻辑卷上创建文件系统。

 

 

1.3, LVM 管理命令

pvcreate  设备名1 [设备名2 .....]               #创建物理卷

vgcreate  卷组名  物理卷名1  物理卷名2 ....            #创建卷组

vgextend  卷组名  物理卷名1 ....                               #卷组扩容

lvcreate   -L  容量大小  -n 逻辑卷名   卷组               #从卷组中创建逻辑卷  # -l 小写l 表示pe个数

lvextend    -L  +容量大小     逻辑卷                          #将逻辑卷扩容

mkfs       -t  文件系统   逻辑卷                                   #格式化逻辑卷

xfs_growfs       逻辑卷                                             #扩展xfs格式文件系统

resize2fs         逻辑卷                                               #扩展ext4 格式文件系统

 

功能
物理卷管理
卷组管理
逻辑卷管理
Scan 扫描
pvscan
vgscan
lvscan
Creat 建立
pvcreate
vgcreate
lvcreate
Display 显示
pvdisplay
vgdisplay
lvdisplay
Remove 删除
pvremove
vgremove
lvremove
Extend
————
vgextend
lvextend
Reduce
————
vgextend
lvextend

 

1.4 创建逻辑卷

1.4.1  fdisk 工具修改要使用的分区的id 为8e 逻辑卷类型

[root@promote ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):t                       #修改分区hex 代码
分区号 (1,2,默认 2):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

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

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfbdee661

设备 Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 8e Linux LVM
/dev/sdb2 20973568 41945087 10485760 8e Linux LVM

命令(输入 m 获取帮助):w                                #保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.

[root@promote ~]# partprobe /dev/sdb                 #刷新分区表

 

 1.4.2 创建物理卷 PV

[root@promote ~]# pvcreate /dev/sdb1 /dev/sdb2                   #将/dev/sdb1  /dev/sdb2 创建为物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.

 

1.4.3 创建卷组VG

[root@promote ~]# vgcreate vgdata /dev/sdb1 /dev/sdb2         #以物理卷/dev/sdb1 和  /dev/sdb2 创建卷组 vgdata
  Volume group "vgdata" successfully created

 

1.4.4 创建逻辑卷LV

[root@promote ~]# lvcreate -L 12G -n lvdata /dev/vgdata     #以物理卷vgdata创建逻辑卷 lvdata 大小为12G
  Logical volume "lvdata" created.

 

1.5 格式化逻辑卷并挂载使用

[root@promote ~]# mkfs -t xfs  /dev/vgdata/lvdata            #将逻辑卷格式为xfs格式
meta-data=/dev/vgdata/lvdata     isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3145728, 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

[root@promote ~]# mount /dev/vgdata/lvdata /mnt #挂载逻辑卷 [root@promote
~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda3 xfs 56G 4.7G 51G 9% / devtmpfs devtmpfs 978M 0 978M 0% /dev tmpfs tmpfs 993M 0 993M 0% /dev/shm tmpfs tmpfs 993M 9.0M 984M 1% /run tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 151M 346M 31% /boot tmpfs tmpfs 199M 24K 199M 1% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64 /dev/mapper/vgdata-lvdata xfs 12G 33M 12G 1% /mnt

 

1.6 逻辑卷扩容

1.6.1  卷组容量够用,可以直接扩容,然后扩展文件系统

 

[root@promote ~]# lvextend -L +5G  /dev/vgdata/lvdata              #将逻辑卷lvdata 扩容5G
  Size of logical volume vgdata/lvdata changed from 12.00 GiB (3072 extents) to 17.00 GiB (4352 extents).
  Logical volume vgdata/lvdata successfully resized.
[root@promote ~]# lsblk /dev/vgdata/lvdata                        #逻辑卷已经成功扩容(或者用lvdisplay 查看)
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vgdata-lvdata 253:0    0  17G  0 lvm  
[root@promote ~]# df -h                                            #但是此时文件系统还没有扩展
文件系统                   容量  已用  可用 已用% 挂载点
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   12G   33M   12G    1% /mnt
[root@promote ~]# xfs_growfs /dev/vgdata/lvdata                   #扩展xfs格式的文件系统
meta-data=/dev/mapper/vgdata-lvdata isize=512    agcount=4, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3145728, 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 3145728 to 4456448
[root@promote ~]# df -h                                           #文件系统成功扩展
文件系统                   容量  已用  可用 已用% 挂载点
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   17G   33M   17G    1% /mnt

 

1.6.2 物理卷容量不够下扩容逻辑卷

(1) 先扩容物理卷

[root@promote ~]# fdisk /dev/sdb                        #过程略。划分新分区并修改id
[root@promote ~]# pvcreate /dev/sdb3


[root@promote ~]# pvcreate /dev/sdb3                     #创建新的物理卷
  Physical volume "/dev/sdb3" successfully created.

[root@promote ~]# vgextend vgdata /dev/sdb3              #扩容卷组vgdata
  Volume group "vgdata" successfully extended
[root@promote ~]# vgdisplay                              #查看卷组信息
  --- Volume group ---
  VG Name               vgdata
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       4352 / 17.00 GiB
  Free  PE / Size       3325 / <12.99 GiB
  VG UUID               qzmlO0-vNqW-Jd0G-MAVi-gWKA-G7G4-Gvaeua

 

(2)再扩容逻辑卷和文件系统

[root@promote ~]# lvextend  -L  +10G /dev/vgdata/lvdata
  Size of logical volume vgdata/lvdata changed from 17.00 GiB (4352 extents) to 27.00 GiB (6912 extents).
  Logical volume vgdata/lvdata successfully resized.

[root@promote ~]# xfs_growfs  /dev/vgdata/lvdata 
meta-data=/dev/mapper/vgdata-lvdata isize=512    agcount=6, agsize=786432 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4456448, 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 4456448 to 7077888
[root@promote ~]# df -h
文件系统                   容量  已用  可用 已用% 挂载点
/dev/sda3                   56G  4.7G   51G    9% /
devtmpfs                   978M     0  978M    0% /dev
tmpfs                      993M     0  993M    0% /dev/shm
tmpfs                      993M  9.0M  984M    1% /run
tmpfs                      993M     0  993M    0% /sys/fs/cgroup
/dev/sda1                  497M  151M  346M   31% /boot
tmpfs                      199M   24K  199M    1% /run/user/0
/dev/sr0                   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vgdata-lvdata   27G   33M   27G    1% /mnt
[root@promote ~]# 

 

 

二:设置磁盘配额

当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。
为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统 (分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。在CentOS系统中,不同的文件系统使用不同磁盘配额配置管理工具。
例如,XFS文件系统通过xfs_quota工具进行管理; EXT3/4 文件系统通过 quota 工具进行管理

 

 2.1 磁盘限额的条件与特点

需要Linux 内核支持

安装xfsprohs 与quota 软件包

 

 Linux 磁盘限额的特点

Linux 磁盘限额的特点
作用范围
针对指定的文件系统
限制对象
用户账号,组账号
限制类型
磁盘容量,文件数量
限制方法
软限制,硬限制

 

2.2 磁盘配额流程

 

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

(1) 先分区,然后格式化文件系统

[root@promote ~]#fdisk /dev/sdb    #过程略
[root@promote ~]#partprobe

[root@promote ~]# mkfs.xfs /dev/sdb5       #格式化为xfs 文件系统
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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

[root@promote ~]# mount -o usrquota,grpquota  /dev/sdb5 /mnt   
#以支持用户限制,组限制的配额功能挂载(临时挂载)usrquota,用户限制。grpquota 组限制
[root@promote
~]# vim /etc/fstab #永久挂载 /dev/sdb5 /mnt xfs defaults,usrquota,grpquota 0 0 [root@promote ~]# mount -a

 

 2.4 编辑用户和组账号配额配置

2.4.1 进行用户配额限制

[root@promote ~]# userdel -r test
[root@promote ~]# useradd test
[root@promote ~]# echo "123" | passwd --stdin test
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。
 
[root@promote ~]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 test' /mnt    
#此命令可以查看xfs_quota的man 手册,搜索EXAMPLE
#对挂载点/mnt 目录进行限制,限制用户test 磁盘容量软限制为80M ,硬限制为100M 。文件数软限制为8,硬限制为10
-x: 表示启动专家模式, 在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c∶表示直接调用管理命令。
-u∶指定用户账号对象
g∶ 指定组账号对象
bsoft∶ 设置磁盘容量的软限制数值(默认单位为 KB)。
bhard∶ 设置磁盘容量的硬限制数值(默认单位为 KB)。
isoft∶ 设置磁盘文件数的软限制数值。
ihard∶ 设置磁盘文件数的硬限制数值。

 

2.4.2 查看用户配额

[root@promote ~]# xfs_quota  -c'quota -uv test' /mnt                            #查看用户test的磁盘容量限制
Disk quotas for User test (1000)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/sdb5                    0      81920     102400   00 [--------] /mnt

[root@promote ~]# xfs_quota  -c'quota -iv test' /mnt                          #查看用户test 的文件数量限制
Disk quotas for User test (1000)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/sdb5                    0          8         10   00 [--------] /mnt

 

 2.5 验证磁盘配额

[root@promote ~]# chmod 777 /mnt
[root@promote ~]# su test
[test@promote root]$ cd /mnt/
[test@promote mnt]$ dd if=/dev/zero of=/mnt/text.txt bs=10M count=12      #验证磁盘容量限制 
dd: 写入"/mnt/text.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.513552 秒,204 MB/
###
dd 命令是一个设备转换和连续复制命令

"if="指定输入设备(或文件)

"of="指定输出设备(或文件)

"bs="指定读取数据块的大小"

count="指定读取数据块的数量

/dey/zero "零"设备文件, 可以无限的提供空字符。常用来生成一个特定大小的文件。###

[test@promote mnt]$ du -h /mnt                                             #查看/mnt 目录容量只有100M
100M    /mnt

[test@promote mnt]$ rm -rf *
[test@promote mnt]$ touch {1..12}.txt                                      #验证文件熟练限制
touch: 无法创建"11.txt": 超出磁盘限额
touch: 无法创建"12.txt": 超出磁盘限额
[test@promote mnt]$ ls 
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

 

 2.6 查看配额使用情况

[root@promote ~]# xfs_quota  -x -c'report -abih'                        #查看磁盘容量和文件数报告 (默认磁盘容量单位为kb)
User quota on /mnt (/dev/sdb5)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
test            0    80M   100M  00 [------]     10      8     10  00 [6 days]

Group quota on /mnt (/dev/sdb5)
                        Blocks                            Inodes              
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
test            0      0      0  00 [------]     10      0      0  00 [------]

 

posted @ 2021-06-21 08:39  知己一语  阅读(255)  评论(0编辑  收藏  举报