Linux LVM和磁盘配额

LVM和磁盘配额

许多Linux使用者在安装操作系统时都会遇到这样的困境;如何精确评估和分配各个硬盘分区的容量,如果当初估计不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。

LVM概述

Logical Volume Manager,逻辑卷管理

  • 动态调整磁盘容量,从而提高磁盘管理的灵活性
  • /boot分区用于存放引导文件,不能基于LVM创建
  • 图形界面管理工具
    system-config-lvm
    LVM 是 Linux 操作系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上、文件系统之下的一个逻辑层,在建立文件系统时屏蔽了下层的磁盘分区布局,因此能够在保持现有数据不变的情况下动态调整磁盘容量,从而增强磁盘管理的灵活性。
    在安装 CentOS 系统的过程中选择自动分区时,就会默认采用 LVM 分区方案,不需要再进行手动配置。如果有特殊需要,也可以使用安装向导提供的磁盘定制工具调整 LVM 分区。需要注意的是,/boot 分区不能基于 LVM 创建,必须独立出来。

LVM机制的基本概念

  • PV(物理卷)

  • VG(卷组)

  • LV(逻辑卷)

PV(Physical Volume,物理卷)

物理卷是 LVM 机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录 LVM 的属性,并把存储空间分割成默认大小为 4MB 的基本单元(Physical Extent,PE),从而构成物理卷
在这里插入图片描述

VG(Volume Group,卷组)

由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷。许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自行定义。
在这里插入图片描述

LV(Logical Volume,逻辑卷)

逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷
在这里插入图片描述

LVM的命令管理

主要命令

功能物理卷管理卷组管理逻辑卷管理
Scan扫描pvscanvgscanlvscan
Create显示pvcreatevgcreatelvcreate
Display显示pvdisplayvgdisplaylvdisplay
Remove删除pvremovevgremovelvremove
Extend扩展————vgextendlvextand
Reduce减少————vgreducelvreduce

pvcreate 设备名1 [设备名2 … …]
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名/逻辑卷名

先在虚拟机中加四块硬盘,硬盘每块1G容量 添加完毕后重启虚拟机

root@localhost ~]# fdisk -l   //查看下四块硬盘

磁盘 /dev/sda:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a54e4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   419430399   208665600   8e  Linux LVM

磁盘 /dev/sdc:1073 MB, 1073741824 字节,2097152 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdd:1073 MB, 1073741824 字节,2097152 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdb:1073 MB, 1073741824 字节,2097152 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sde:1073 MB, 1073741824 字节,2097152 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@localhost ~]# yum -y install lvm2  //如果是最小安装需要安装lvm2

[root@localhost ~]# pvcreate /dev/sdb /dev/sdc  //硬盘做下物理卷
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

[root@localhost ~]# pvdisplay //查看下物理卷
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <199.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              50943
  Free PE               1
  Allocated PE          50942
  PV UUID               Fh7dYb-ikXl-L11c-USkC-Zvhy-WcgU-InrzWb
   
  "/dev/sdc" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               YZcHQP-M283-d032-m8im-eKaX-8YlP-zUjit1
   
  "/dev/sdb" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               K6L6gD-2Ry6-xIR3-Ndp4-2PsQ-RkxS-BVXrsT
   
[root@localhost ~]# vgcreate vg01 /dev/sdb /dev/sdc  //创建卷组vg01 将2块硬盘添加到vg01
  Volume group "vg01" successfully created

[root@localhost ~]# vgdisplay //查看下卷组
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <199.00 GiB
  PE Size               4.00 MiB
  Total PE              50943
  Alloc PE / Size       50942 / 198.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               cPXeqM-avWL-xtCd-nPRM-XHiR-U3pO-HIHnjv
   
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               JoGF1W-8Jup-jXUF-WoTy-p6OO-BPlk-yQr34y
   
[root@localhost ~]# vgscan   //卷组扫描
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "vg01" using metadata type lvm2

[root@localhost ~]#  lvcreate -n lv01 -L 500M vg01  //创建逻辑卷vg01 500M
  Logical volume "lv01" created.

[root@localhost ~]# mkfs.ext4 /dev/vg01/lv01   //LV创建后是挂载的 首先要格式化
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=34078720
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

设置自动挂载

[root@localhost ~]# vi /etc/fstab   //开机启动 加入自动挂载

shift+g
o

/dev/vg01/lv01          /mnt                    ext4    defaults        0 0

保存退出

[root@localhost ~]# mount -a  //一般没问题,不会报出相关提示

[root@localhost ~]# df -hT  //查看挂载情况
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  4.9G   46G   10% /
devtmpfs                devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G    0% /dev/shm
tmpfs                   tmpfs     3.9G   13M  3.8G    1% /run
tmpfs                   tmpfs     3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       142G   33M  142G    1% /home
tmpfs                   tmpfs     781M   12K  781M    1% /run/user/42
tmpfs                   tmpfs     781M     0  781M    0% /run/user/0
/dev/mapper/vg01-lv01   ext4      477M  2.3M  445M    1% /mnt

扩容

[root@localhost ~]# lvextend -L +500M /dev/vg01/lv01   //加500M空间
  Size of logical volume vg01/lv01 changed from 500.00 MiB (125 extents) to 1000.00 MiB (250 extents).
  Logical volume vg01/lv01 successfully resized.

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                mtEndz-edDl-9cYM-FDax-ktgi-XTTq-pbJS9z
  LV Write Access        read/write
  LV Creation host, time localhost, 2020-06-10 18:54:45 +0800
  LV Status              available
  # open                 2
  LV Size                <7.88 GiB
  Current LE             2016
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                JvR4tU-JOf3-iRiY-wK2o-FuqA-epBx-Rm1bIi
  LV Write Access        read/write
  LV Creation host, time localhost, 2020-06-10 18:54:45 +0800
  LV Status              available
  # open                 1
  LV Size                <141.12 GiB
  Current LE             36126
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                flgSfw-DVwT-vbth-4vdZ-fbjQ-gKvb-uq7zTL
  LV Write Access        read/write
  LV Creation host, time localhost, 2020-06-10 18:54:46 +0800
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                uRXzwN-eQpS-16F5-JVYQ-AXwU-xOUE-Q3Za2B
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-06-16 18:22:43 +0800
  LV Status              available
  # open                 1
  LV Size                1000.00 MiB
  Current LE             250
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

[root@localhost ~]# resize2fs /dev/vg01/lv01  //初始化
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv01 is mounted on /mnt; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 8
The filesystem on /dev/vg01/lv01 is now 1024000 blocks long.

VG扩容

[root@localhost ~]# pvcreate /dev/sdd   
  Physical volume "/dev/sdd" successfully created.

[root@localhost ~]# vgextend vg01 /dev/sdd
  Volume group "vg01" successfully extended

磁盘配额概述

当 Linux 根分区的磁盘空间耗尽时,Linux 操作系统将无法再建立新的文件(包括程序运行的临时文件),从而出现服务程序崩溃、系统无法启动等故障。为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。
在 CentOS 系统中,内核已经定制了支持 Linux 文件系统的磁盘配额功能,并且在系统中配置和管理磁盘配额的工具由 xfsgrogs 软件包的 xfs_quota 配额管理程序提供。注意:在 CentOS 系统中,不同的文件系统使用不同磁盘配额配置管理工具。

实现磁盘限额的条件

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

Linux磁盘限额的特点

  • 作用范围:针对指定的文件系统(分区)
    xfs_quota 设置的磁盘配额功能,只在指定的文件系统(分区)内有效,用户使用其他未设置配额的文件系统时,将不会受到限制。

  • 限制对象:用户账号、组账号
    xfs_quota 主要针对系统中指定的用户账号、组账号进行限制,没有被设置限额的用户或组将不受影响。对组账号设置配额后,组内所有用户使用的磁盘容量、文件数量的总和不能超过限制。

  • 限制类型:磁盘容量、文件数量
    磁盘容量:限制用户能够使用的磁盘数据块(Block)大小,也就是限制磁盘空间大小,默认单位为 KB。
    文件数量:限制用户能够拥有的文件个数。在 Linux 操作系统中,每一个文件都有一个对应的数字标记,称为 i 结点(Inode)编号,这个编号在同一个文件系统内是唯一的,因此 xfs_quota 通过限制i 结点的数量来实现对文件数量的限制。

  • 限制方法:软限制、硬限制
    软限制:指定一个软性的配额数值(如 480MB 磁盘空间、180 个文件),在固定的宽限期(默认为七天)内允许暂时超过这个限制,但系统会给出警告信息。
    硬限制:指定一个硬性的配额数值(如 500MB 磁盘空间、200 个文件),是绝对禁止用户超过的限制值,当达到硬限制值时,系统也会给出警告并禁止继续写入数据。硬限制的配额值应大于相应的软限制值,否则软限制将失效。
    从以上描述中可以看出,在实施磁盘配额的实际过程中,只有当用户(或组)、文件系统(分区)及配额数值都满足限额条件时,xfs_quota 才会对操作进行限制。

配置步骤

临时设置(大部分都是通过命令实现),永久设置(都是通过源码文件中配置)
大部分命令设置都是临时生效,重启失效
配置文件是永久生效
编辑用户和组账号的配额设置:组的配额是固定的,
在这里插入图片描述

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

使用xfs_quota命令编辑配额设置

  • 常用选项
    -u //user
    -g //group
    -x //专家模式
    -c //命令(command)

  • 限制字段
    bsoft //容量软限制
    bhard //容量硬限制 (block 块)
    isoft //数量软限制
    ihard //数量硬限制 (inode 节点)

启用文件系统的配额支持

添加userqouta、grpquota挂载参数

磁盘配额

[root@localhost ~]# mount -o remount,usrquota,grpquota /dev/vg01/lv01 

[root@localhost ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=3978036k,nr_inodes=994509,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup 
...... //省略部分内容

临时关闭核心防护

[root@localhost ~]# setenforce 0  

永久关闭

[root@localhost ~]# vi /etc/selinux/config

SELINUX=disabled

若 需 要 在 每 次 开 机 后 自 动 以 支 持 配 额 功 能 的 方 式 挂 载 该 分 区 , 可 以 将“usrquota,grpquota”挂载参数写入“/etc/fstab”文件中。

[root@localhost ~]# lvcreate -n lv02 -L 500M vg01
  Logical volume "lv02" created.

[root@localhost ~]# mkfs.ext4 /dev/vg01/lv02
mke2fs 1.42.9 (28-Dec-2013)
/dev/vg01/lv02 已经挂载;will not make a 文件系统 here!

[root@localhost ~]# mkfs.ext4 /dev/vg01/lv02
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=34078720
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

[root@localhost ~]# mount -o usrquota,grpquota /dev/vg01/lv02 /opt

[root@localhost ~]#  mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=3978036k,nr_inodes=994509,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
...... //省略部分内容

安装quota

[root@localhost ~]# yum -y install quota
....... //省略内容
[root@localhost ~]# quotacheck -cvug /opt
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/mapper/vg01-lv02 [/opt] done
quotacheck: Checked 3 directories and 2 files

创建tom用户

[root@localhost ~]# useradd tom
[root@localhost ~]# passwd tom
更改用户 tom 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

[root@localhost ~]# edquota -u tom
Disk quotas for user tom (uid 500):
  Filesystem                   	blocks       soft       hard     inodes     soft     hard
  /dev/mapper/vg01-lv02          0              10000      10240      0            5          6

开启磁盘配额功能

[root@localhost ~]# quotaon -p /opt 
group quota on /opt (/dev/mapper/vg01-lv02) is off
user quota on /opt (/dev/mapper/vg01-lv02) is off
[root@localhost ~]# quotaon  /opt  
[root@localhost ~]# quotaon -p /opt
group quota on /opt (/dev/mapper/vg01-lv02) is on
user quota on /opt (/dev/mapper/vg01-lv02) is on

Disk quotas for user tom (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/vg01-lv02         0          10000       10240      0      5      6
~

[root@localhost ~]#  chmod 777 /opt

[root@localhost ~]# su tom
[tom@localhost root]$ 


[tom@localhost opt]$ quota
quota: Cannot open quotafile /mnt/aquota.user: 没有那个文件或目录
Disk quotas for user tom (uid 1001): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/vg01-lv02
                    10240*  10000   10240   7days       2       5       6    

查看所有用户磁盘配额情况

[root@localhost ~]# repquota -a
repquota: Cannot open quotafile /mnt/aquota.user: 没有那个文件或目录
*** Report for user quotas on device /dev/mapper/vg01-lv02
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      13       0       0              2     0     0       
tom       +-   10240   10000   10240  6days       2     5     6    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值