Linux LVM和磁盘配额

导图

一.LVM

1. LVM (Logical Volume Manager  逻辑卷管理)

管理大存储设备,并允许用户动态调整文件系统的大小,LVM 的快照功能可以帮助我们快速备份数据;

可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小, 允许在多个物理设备间重新组织文件系统。

  • 物理卷(Physical Volume,PV):就是真正的物理硬盘或分区。

  • 卷组(Volume Group,VG):将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一块逻辑硬盘。

  • 逻辑卷(Logical Volume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区。

  • 物理扩展(Physical Extend,PE):PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中的。PE 的大小是可以配置的,默认是 4MB。

功能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

 

1.1创建LVM

lvcreate选项

选项 功能
-L 指定逻辑卷大小
-l 按照PE个数指定逻辑卷大小
-n 逻辑卷名
-r 直接刷新挂载点

 

[root@localhost ~]# fdisk /dev/sdb    //给sdb建立分区
欢迎使用 fdisk (util-linux 2.23.2)。

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


命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):t   //更改分区id
已选择分区 1
Hex 代码(输入 L 列出所有代码):l
 024  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       
Hex 代码(输入 L 列出所有代码):8e          //输入代码更改类型
已将分区“Linux”的类型更改为“Linux LVM”

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

Calling ioctl() to re-read partition table.
正在同步磁盘。
创建LVM
[root@localhost ~]# lsblk    //查看磁盘使用情况
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
sdd               8:48   0   20G  0 disk 
sde               8:64   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc         //sdb1(8e)   //创建物理分区  加入分区(分区要修改id)或者设备
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc" successfully created.

[root@localhost ~]# vgcreate suoluo /dev/sdb1 /dev/sdc       //创建卷组suoluo
  Volume group "suoluo" successfully created

[root@localhost ~]# lvcreate -n suo -L 10G suoluo -r         //创建逻辑卷suo
  Logical volume "suo" created.

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/suoluo/suo     //逻辑卷路径
  LV Name                suo               //逻辑卷
  VG Name                suoluo            //卷组  
  LV UUID                JqEkLs-gVCi-gHjJ-x3oC-yff3-BYF8-fAUnT7   
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2022-09-28 14:57:05 +0800
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

[root@localhost /]# mkfs.xfs /dev/suoluo/suo          //创建文件管理系统(格式化)
meta-data=/dev/suoluo/suo        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@localhost /]# mount   /dev/suoluo/suo   /data      //挂载
[root@localhost /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
└─suoluo-suo    253:2    0   10G  0 lvm  /data        //挂载完成
sdd               8:48   0   20G  0 disk 
sde               8:64   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  

1.2 扩展逻辑卷

扩展的逻辑卷的容量需要从卷组

tops:

扩展不会影响当前文件使用,缩容影响当前文件使用

1.2.1 卷组容量足够,直接扩展

[root@localhost /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
└─suoluo-suo    253:2    0   10G  0 lvm  /data
sdd               8:48   0   20G  0 disk 
sde               8:64   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# lvextend -L +5G /dev/suoluo/suo      //扩展逻辑卷 5G
  Size of logical volume suoluo/suo changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume suoluo/suo successfully resized.
[root@localhost /]# lsblk           //查看是否扩展成功
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
└─suoluo-suo    253:2    0   15G  0 lvm  /data
sdd               8:48   0   20G  0 disk 
sde               8:64   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  

[root@localhost /]# df -h      
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  3.3G   47G    7% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M  9.1M  903M    1% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1                5.0G  179M  4.9G    4% /boot
tmpfs                    183M   12K  183M    1% /run/user/42
tmpfs                    183M     0  183M    0% /run/user/0
/dev/mapper/suoluo-suo    10G   33M   10G    1% /data    //内存未刷新

[root@localhost /]#  xfs_growfs /data/     //xfs_growfs  挂载点    刷新挂载点
meta-data=/dev/mapper/suoluo-suo isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=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               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 2621440 to 3932160
[root@localhost /]# df -h   //查看
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  3.3G   47G    7% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M  9.1M  903M    1% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1                5.0G  179M  4.9G    4% /boot
tmpfs                    183M   12K  183M    1% /run/user/42
tmpfs                    183M     0  183M    0% /run/user/0
/dev/mapper/suoluo-suo    15G   33M   15G    1% /data     //刷新成功 

 

1.2.2 卷组容量不足,先扩展卷组,再扩展逻辑卷

[root@localhost /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
└─suoluo-suo    253:2    0   15G  0 lvm  /data
sdd               8:48   0   20G  0 disk 
sde               8:64   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  
[root@localhost /]# vgextend suoluo /dev/sdd       //1.扩展卷组
  Physical volume "/dev/sdd" successfully created.
  Volume group "suoluo" successfully extended
[root@localhost /]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  3.3G   47G    7% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M  9.1M  903M    1% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1                5.0G  179M  4.9G    4% /boot
tmpfs                    183M   12K  183M    1% /run/user/42
tmpfs                    183M     0  183M    0% /run/user/0
/dev/mapper/suoluo-suo    15G   33M   15G    1% /data
[root@localhost /]# lvextend -L +20G /dev/suoluo/suo   //2.再扩展逻辑卷
  Size of logical volume suoluo/suo changed from 15.00 GiB (3840 extents) to 35.00 GiB (8960 extents).
  Logical volume suoluo/suo successfully resized.

[root@localhost /]# xfs_growfs /data    //刷新挂载点
meta-data=/dev/mapper/suoluo-suo isize=512    agcount=6, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3932160, 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 3932160 to 9175040
[root@localhost /]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  3.3G   47G    7% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M  9.1M  903M    1% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1                5.0G  179M  4.9G    4% /boot
tmpfs                    183M   12K  183M    1% /run/user/42
tmpfs                    183M     0  183M    0% /run/user/0
/dev/mapper/suoluo-suo    35G   33M   35G    1% /data         //扩展成功

 

1.3 缩减扩展卷(生产环境会影响业务,不建议缩减

ext可以缩减

xfs不能缩减

缩减过程:
1.解挂载

2.检查文件系统完整性

3.缩减文件系统

4.缩减逻辑卷上下一致

5.再挂载回去

 

二.磁盘配额

1.实现磁盘配额的条件

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

2.磁盘限额的特点

  • 作用范围:针对指定的文件系统(分区)
  • 限制对象:用户账户,组账户
  • 限制类型:磁盘容量,文件数量
  • 限制方法:软限制,硬限制    (软限制:超过限制会提醒【CentOS 7  BUG 不会提醒】,但不会阻止。    硬限定:不能超过限制,超过的限制写入不了

磁盘配额选项

选项 作用
-x 启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可以使用
-c 直接调用管理命令
-u 指定用户账户对象
-g 指定组账户对象

 

磁盘配额参数

参数 作用(数值单位默认为KB)
bsoft 设置磁盘容量软限制数值
bhard 设置磁盘容量硬限制数值
isoft 设置磁盘文件数软限制数值
ihard 设置磁盘文件数硬限制数值
实际操作
[root@localhost /]# rpm -q xfsprogs quota    //查看是否安装了两个软件包
xfsprogs-4.5.0-12.el7.x86_64
quota-4.01-14.el7.x86_64
[root@localhost /]# lsblk    //查看磁盘使用情况
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
└─suoluo-suo    253:2    0   35G  0 lvm  /data
sdd               8:48   0   20G  0 disk 
└─suoluo-suo    253:2    0   35G  0 lvm  /data
sde               8:64   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  

[root@localhost /]# umount /data     //有挂载,先解挂载
[root@localhost /]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   54G  0 part 
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sdc               8:32   0   20G  0 disk 
└─suoluo-suo    253:2    0   35G  0 lvm  
sdd               8:48   0   20G  0 disk 
└─suoluo-suo    253:2    0   35G  0 lvm  
sde               8:64   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  

#1.临时挂载
[root@localhost /]# mount -0 usrquota,grapquota /dev/suoluo/suo    /data

#2.永久/自动  挂载
[root@localhost /]# vim /etc/fstab  //编写配置文件做永久挂载
/dev/suoluo/suo     /data    xfs    default,usrquota,grpquota   0    0     //写入的配置
[root@localhost /]# mount -a    //重新挂载fstab里所有的挂载
[root@localhost /]# xfs_quota -x -c 'limit -u bsoft=50M bhard=100M   suoluo' /data/    //软限制容量50M 硬限制100M

[root@localhost /]# xfs_quota -x -c 'limit -u isoft=5  ihard=10  suoluo'  /data/       //软限制文件数5个 硬限制文件数10个

xfs_quota -C 'quota -uv suoluo' /data/       //查看磁盘容量限制
xfs_quota -c 'quota -i -uv suoluo' /data/   //查看文件数限制 

 

检验磁盘限额
[root@localhost /]# chmod 777 /data
[root@localhost /]# su suoluo
[suoluo@localhost /]$ cd /data
[suoluo@localhost data]$ dd if=/dev/zero of=/data/text.txt bs=10M count=12
dd: 写入"/data/text.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.21698 秒,483 MB/秒

[suoluo@localhost data]$ xfs_quota -x -c ' report -abih'
Group quota on /data (/dev/mapper/suoluo-suo)
                        Blocks                            Inodes              
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
suoluo       100M      0      0  00 [------]      1      0      0  00 [------]

XFS_GETQUOTA: 不允许的操作
XFS_GETQUOTA: 不允许的操作
XFS_GETQUOTA: 不允许的操作


xfs_ quota -C 'quota -uv lisi' /opt/
#查看zhangsan磁盘:容量限制

xfs quota -c 'quota -i -uv lisi' /opt/
#查看zhangsan文件数限制


取消设置
[root@localhost ~]#xfs_quota -x -c 'disable -up' /data

xfs_quota -x -c "disable -up" /data/
#暂时取消
xfs_quota -x -c 'enable ' /data/
重新开启
xfs_quota -x -c "off -up" /data/
#需要重新挂载,完全关闭之后就不能再通过enable方式启动了,必须执行:umount /data;mount -a 重新激活quota功能
xfs_quota -x -c "remove -p" /data/
#移除设置 需要在off状态下

 三.总结

LVM可以解决磁盘分区的局限性,进行动态整合调整文件系统的大小;

扩展逻辑卷的空间要从卷组中去,卷组不足要加磁盘设备;

扩展逻辑卷不会影响当前文件的使用,但缩减逻辑卷对当前文件会有影响。

 

posted @ 2022-10-05 19:57  索罗大魔王  阅读(109)  评论(0编辑  收藏  举报