LVM与磁盘配额

目录

lvm概述

        lvm机制的基本概念

         lvm的管理命令

                        lvm命令

磁盘配额概述

        实现磁盘限额的条件

        Linux磁盘限额的特点

                配置过程

总结


lvm概述

        logical volume manage 逻辑卷管理

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

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

实现过程:将设备指定为物理卷,用一个或者多个物理卷来创建一个卷组,物理卷是用来固定大小的物理区域(Physical Extemt ,PE)来定义的在物理卷上创建的逻辑卷,是由物理区域(pe)组成;可以在逻辑卷上创建文件并挂载。

        lvm机制的基本概念

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

VG:卷组,由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷

LV:逻辑卷,对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。使用mkfs等工具在逻辑卷上创建文件系统

 

         lvm的管理命令

功能物理卷管理卷组管理逻辑卷管理
Scan扫描pvscanvgscanlvscan
create建立pvcreatevgcreatelvcreate
display显示pvdisplayvgdisplaylvdisplay
remove删除pvremovevgremovelvremove
extend扩展——vgextendlvextend
reduce减少——vgreducelvreduce

                        lvm命令

pvcreate 设备名1【设备名2....】

vgcreate 卷组名 物理卷名1 物理卷名2

lvcreate -l 容量大小 -n 逻辑卷名 卷组名

lvextend -l +大小 /dev/卷组名/逻辑卷名

实现一下,在虚拟机上做一个lvm

        首先加硬盘,重启或者不重启echo "- - - "> /sys/class/scsi_host/host0/scan,重新扫描一切

[root@localhost ~]# echo "- - -"> /sys/class/scsi_host/host2/scan 
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   40G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   39G  0 part 
  ├─centos-root 253:0    0   37G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64

 此时添加的两块硬盘就显示出来了,接下来,在sdb下做一个分区

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

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

Device does not contain a recognized partition table
使用磁盘标识符 0x20327639 创建新的 DOS 磁盘标签。

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

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

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

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

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

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

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

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

Calling ioctl() to re-read partition table.
正在同步磁盘。

前路铺好,接下来就开始正文吧,创建一个逻辑卷管理

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc //创建物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc" successfully created. //成功
[root@localhost ~]# vgcreate xiaobin /dev/sdb1 /dev/sdc //创建卷组
  Volume group "xiaobin" successfully created //创建卷组成功
[root@localhost ~]# lvcreate -L 20G -n xiaobinn xiaobin //创建逻辑卷
  Logical volume "xiaobinn" created. //逻辑卷创建成功
[root@localhost ~]# mkfs.xfs /dev/xiaobin/xiaobinn //格式化一下逻辑卷
meta-data=/dev/xiaobin/xiaobinn  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
[root@localhost ~]# mount /dev/xiaobin/xiaobinn /mnt //将逻辑卷挂在在/mnt下
[root@localhost ~]# df -hT //友好的显示 挂载分区的详细情况
文件系统                     类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root      xfs        37G  4.8G   33G   13% /
devtmpfs                     devtmpfs  897M     0  897M    0% /dev
tmpfs                        tmpfs     912M     0  912M    0% /dev/shm
tmpfs                        tmpfs     912M  9.1M  903M    1% /run
tmpfs                        tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda1                    xfs      1014M  179M  836M   18% /boot
tmpfs                        tmpfs     183M   40K  183M    1% /run/user/0
/dev/sr0                     iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/xiaobin-xiaobinn xfs        20G   33M   20G    1% /mnt
//可以看到新建的逻辑卷创建成功并挂载在/mnt 目录下了

        再给逻辑卷上扩展一些内存,sdb盘还有一些空间,就把剩余空间加到逻辑卷上吧,在sdb再分一个区

 这只是centos 7跟内核不兼容导致的,小问题,让他重新获取一下分区即可

[root@localhost ~]# partx -u /dev/sdb

开始扩容,首先在卷组上添加,然后再在逻辑卷上加

[root@localhost ~]# vgextend xiaobin /dev/sdb2 //卷组名  没有用过的物理盘
  Physical volume "/dev/sdb2" successfully created.
  Volume group "xiaobin" successfully extended
[root@localhost ~]# lvextend -L +10G /dev/xiaobin/xiaobinn 容量 +10G /卷组名/逻辑卷名
  Size of logical volume xiaobin/xiaobinn changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents).逻辑卷从20G 增长到了30G
  Logical volume xiaobin/xiaobinn successfully resized. //成功调整了大小

刷新xfs 文件的系统容量

[root@localhost ~]# xfs_growfs /dev/xiaobin/xiaobinn 
meta-data=/dev/mapper/xiaobin-xiaobinn 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 7864320

然后再看一些逻辑卷lvdisplay

 以上,就是在虚拟机上操作lvm的全过程

磁盘配额概述

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

        实现磁盘限额的条件

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

        Linux磁盘限额的特点

                作用范围:针对指定的文件系统(分区)

                限制对象:用户账号、组账号

                限制类型:磁盘容量、文件数量

                限制方法:软限制、硬限制

硬限制:是指对资源节点和数据块的绝对限制,在任何情况下都不允许用户超过这个限制

软限制:是指用户可以在一定时间范围内(默认时间为一周,在/usr/include/sys/fs/ufs_quota.h文件中设置)超过软限制的额度,在硬限制的范围内继续申请资源,同时系统会在用户登录时给出警告信息和仍可继续申请资源剩余时间.如果达到时间期限,用户的硬盘使用仍超过软限制的额度,则系统将不允许用户再申请硬盘资源

                配置过程

1、检查是否已安装xfsprogs和xfs_ quota软件包

[root@localhost ~]# rpm -q xfsprogs quota
xfsprogs-4.5.0-12.el7.x86_64
quota-4.01-14.el7.x86_64

如果没安装

 yum install -y xfsprogs quota

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

[root@localhost ~]# umount /dev/xiaobin/xiaobinn //解挂载

    添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持

[root@localhost ~]# mount -o usrquota,grpquota /dev/xiaobin/xiaobinn /mnt

   mount -a  #-a选项,将/etc/ fstab的所有内容重新加载

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

[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 lisi' /mnt
//                 命令字   专家模式 调用命令   limit限制 -u指定用户  软硬限制      需要限制的用户  挂载点

参数

-x表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c表示直接调用管理命令。
-u指定用户账号对象
-g:指定组账号对象
bsoft设置磁盘容量的软限制数值(默认单位为KB)。
bhard设置磁盘容量的硬限制数值(默认单位为KB)。
isoft设置磁盘文件数的软限制数值。
ihard:设置磁盘文件数的硬限制数值。

//仅限制磁盘容量

xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M lisi' /mnt

//仅限制文件数

xfs quota -x -c 'limit -u isoft=4 ihard=5 lisi' /mnt

//查看lisi磁盘:容量限制

xfs_ quota -c'quota -uv lisi' /mnt

//查看lisi文件数限制

xfs quota -c 'quota -i -uv lisi' /mnt

4、验证磁盘配额功能

[root@localhost ~]# chmod 777 /mnt/
[root@localhost ~]# su lisi
[lisi@localhost root]$ dd if=/dev/zero of=/mnt/kgc.txt bs=10M count=12//验证磁盘容量超限
dd: 写入"/mnt/kgc.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.107239 秒,978 MB/秒
[lisi@localhost root]$ cd /mnt
[lisi@localhost mnt]$ ls
kgc.txt
[lisi@localhost mnt]$ touch {1..10}.txt
touch: 无法创建"1.txt": 超出磁盘限额
touch: 无法创建"2.txt": 超出磁盘限额
touch: 无法创建"3.txt": 超出磁盘限额
touch: 无法创建"4.txt": 超出磁盘限额
touch: 无法创建"5.txt": 超出磁盘限额
touch: 无法创建"6.txt": 超出磁盘限额
touch: 无法创建"7.txt": 超出磁盘限额
touch: 无法创建"8.txt": 超出磁盘限额
touch: 无法创建"9.txt": 超出磁盘限额
touch: 无法创建"10.txt": 超出磁盘限额

参数 

if=指定输入设备(或文件)
of=指定输出设备(或文件)
bs=指定读取数据块的大小
count=指定读取数据块的数量
/dev/zero零"设备文件,可以无限的提供空字符。常用来生成-一个特定大小的文件。

5、查看配额使用情况

[root@localhost ~]# xfs_quota -x -c 'report -abih'//查看所有可用分区的磁盘容量配额使用情况
User quota on /mnt (/dev/mapper/xiaobin-xiaobinn)
                        Blocks                            Inodes              
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
lisi         100M    80M   100M  00 [6 days]      1     40     50  00 [------]

Group quota on /mnt (/dev/mapper/xiaobin-xiaobinn)
                        Blocks                            Inodes              
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
---------- --------------------------------- --------------------------------- 
root            0      0      0  00 [------]      3      0      0  00 [------]
lisi         100M      0      0  00 [------]      1      0      0  00 [------]

查看磁盘配额

report常用选项:

-u对用户查看
-g对组查看
-a查看所有可用分区的配额使用报告
-b查看磁盘容量
-i查看文件数

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柏ぁ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值