200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Linux之LVM与磁盘配额(quota)详解

Linux之LVM与磁盘配额(quota)详解

时间:2022-10-22 19:56:48

相关推荐

Linux之LVM与磁盘配额(quota)详解

什么是LVM?

LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的 分区加入其中,这样可以实现一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性,使用普通的磁盘分区,当一个磁盘的分区空间不够使用的时候,可 能就会带来很大的麻烦。使用LVM在一定程度上就可以解决普通磁盘分区带来的问题。

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。需要注意的是/boot分区不能基于LVM创建,必须独立出来。

LVM能够解决的需求痛点

传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变:

1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用;

2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中;或采用符号连接的方式使用其它分区的空间。

3.如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。

当采用LVM时,情况有所不同:

1.硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;

2.文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求;

3.文件系统建立在LVM上,可以跨分区,方便使用;

4.使用LVM方便管理、增加了系统的扩展性

名词解释

PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区

VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV

LV(Logical Volume):逻辑卷,建立在VG之上,相当于原来分区的概念。不过大小可以动态改变

磁盘配额介绍

quota软件设置的磁盘配额功能,只在指定的文件系统(分区)有效,磁盘配额的限制对象为系统中指定的用户账号、组账号进行限制。

磁盘配额的限制类型分为

磁盘容量:限制用户能够使用的磁盘数据块大小,也就是限制磁盘空间的大小,默认单位为KB。

文件数量:限制用户能够拥有的文件个数,在linux中每一个文件都有一个对应的数字标记,称为i节点号,这个编号在同一个文件系统内是唯一的。

磁盘配额的限制方法

软限制:指在固定期限内暂时允许这个用户超过这个限制(默认期限为7天超过7天后用户无法再写入数据),但是系统会给出警告。

硬限制:指绝对禁止用户超过此限制,硬限制的值不能小于软限制否则软限制失效。

实验环境介绍:

VMware Workstation虚拟机环境,Linux系统采用CentOS7

实验步骤:

首先添加两块新硬盘,重启主机(否则在系统中看不到新加的磁盘)

使用fdisk -l命令可以看到两块新加的盘/sdb,/sdc

[root@localhost ~]#fdisk -l

................

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

使用fdisk命令对两块磁盘进行分区,并更改磁盘文件系统格式为物理盘格式(8e)

会进入一个交互的模式,具体选择如下:

[root@localhost ~]#fdisk /dev/sdb #对sdb进行分区

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0x1ce46bfe 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n #按n 创建一个新的分区

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p #按p 选择创建主分区

分区号 (1-4,默认 1):1 #默认为第一分区

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):

将使用默认值 41943039

分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t #按t 进行文件系统格式的转换

已选择分区 1

Hex 代码(输入 L 列出所有代码):8e #输入8e 转换成LVM格式

已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p#按p 查看分区信息

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x1ce46bfe

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 41943039 20970496 8e Linux LVM #刚刚创建的分区/dev/sdb1

命令(输入 m 获取帮助):w #按w 保存设置并退出互动模式

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

第二块磁盘/dev/sdc创建分区过程相同

再次使用fdisk -l命令可以看到新磁盘创建好的分区

[root@localhost ~]# fdisk -l

..............

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0x1ce46bfe

设备 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

磁盘标识符:0x3dd2601b

设备 Boot Start End Blocks Id System

/dev/sdc1 2048 41943039 20970496 8e Linux LVM

创建PV物理卷

使用pvcreate进行创建,另外还可以使用pvscan,pvdisplay查看物理卷详细信息

[root@localhost ~]#pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created.

[root@localhost ~]#pvcreate /dev/sdc1

Physical volume "/dev/sdc1" successfully created.

[root@localhost ~]#pvscan

PV /dev/sdb1 lvm2 [<20.00 GiB]

PV /dev/sdc1 lvm2 [<20.00 GiB]

Total: 2 [<40.00 GiB] / in use: 0 [0 ] / in no VG: 2 [<40.00 GiB]

[root@localhost ~]#pvdisplay

"/dev/sdb1" is a new physical volume of "<20.00 GiB"

--- NEW Physical volume ---

PV Name/dev/sdb1

VG Name

PV Size <20.00 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID xZ0LQe-x27m-eaNv-bgw4-9RHu-wZ6C-hrRd4P

"/dev/sdc1" is a new physical volume of "<20.00 GiB"

--- NEW Physical volume ---

PV Name/dev/sdc1

VG Name

PV Size <20.00 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID 1oMWW7-HBje-o6Pg-UlXx-edxp-gk8B-ugMW0S

创建VG卷组,将PV物理卷/dev/sdb1,/dev/sdc1加入VG卷组benet

使用vgcreate进行创建,另外还可以使用vgscan,vgdisplay查看卷组详细信息

[root@localhost ~]#vgcreate benet /dev/sdb1 /dev/sdc1

Volume group "benet" successfully created

[root@localhost ~]#vgscan

Reading volume groups from cache.

Found volume group "benet" using metadata type lvm2

[root@localhost ~]#vgdisplay

--- Volume group ---

VG Name benet

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 39.99 GiB #组成的卷组benet大小

PE Size 4.00 MiB #每个PE的单位

Total PE 10238

Alloc PE / Size 0 / 0

Free PE / Size 10238 / 39.99 GiB

VG UUID e1gm4p-8Z2Y-WW1G-EpiH-4rNy-1JBi-NgcJAT

在VG卷组benet中创建LV逻辑卷

使用lvcreate进行创建,可以使用lvscan查看LV逻辑卷详情,也可使用lvextend进行扩容

其中的选项含义: -L 指定大小 -n 进行命名

[root@localhost ~]#lvcreate -L 15G -n lv01 benet #创建逻辑卷lv01,大小指定为15G

Logical volume "lv01" created.

[root@localhost ~]#lvcreate -L 15G -n lv02 benet #创建逻辑卷lv01,大小指定为15G

Logical volume "lv02" created.

[root@localhost ~]#lvscan #查看LV逻辑卷信息

ACTIVE '/dev/benet/lv01' [15.00 GiB] inherit

ACTIVE '/dev/benet/lv02' [15.00 GiB] inherit

[root@localhost ~]#lvextend -L +5G /dev/benet/lv01#将lv01进行扩容5G

Size of logical volume benet/lv01 changed from 15.00 GiB (3840 extents) to 20.00 GiB (5120 extents).

Logical volume benet/lv01 successfully resized.

[root@localhost ~]#lvscan

ACTIVE '/dev/benet/lv01' [20.00 GiB] inherit #再次查看,可看到lv01扩容成功

ACTIVE '/dev/benet/lv02' [15.00 GiB] inherit

格式化lv 挂载使用

在此我们将lv01格式化为EXT4格式,将lv02格式化为XFS

mkfs.ext4 /dev/benet/lv01

mkfs.xfs /dev/benet/lv02

[root@localhost ~]# mkdir /mnt1 /mnt2

[root@localhost ~]# mount /dev/benet/lv01 /mnt1

[root@localhost ~]# mount /dev/benet/lv02 /mnt2

[root@localhost ~]# df -h

.............

/dev/mapper/benet-lv01 20G 45M 19G 1% /mnt1

/dev/mapper/benet-lv02 15G 33M 15G 1% /mnt2

磁盘配额(quota)

使用yum安装quota软件包,关闭防火墙,关闭增强型功能(否则容易出问题)

yum install quota -y

setenforce 0

systemctl stop firewalld.service

设置开机自动挂载,将lv02挂载到/mnt2下

vim /etc/fstab

.............. #最后一行添加配置

/dev/benet/lv02 /mnt2 xfs defaults,usrquota,grpquota 0 0

[root@localhost ~]# mount -a

[root@localhost ~]#mount | grep lv02 #可以看到lv02拥有磁盘配额功能

/dev/mapper/benet-lv02 on /mnt2 type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

检查磁盘配额开启是否成功

[root@localhost ~]#quotaon -p /dev/benet/lv02

group quota on /mnt2 (/dev/mapper/benet-lv02) is on

user quota on /mnt2 (/dev/mapper/benet-lv02) is on

添加一个caiwu组,用户tom,并将tom的基本组设置为caiwu

[root@localhost ~]# groupadd caiwu

[root@localhost ~]# useradd -g caiwu tom

[root@localhost ~]# id tom

uid=1001(tom) gid=1001(caiwu) 组=1001(caiwu)

给用户tom设置配额,

第一组soft和hard是软、硬限制是空间的大小

第二组soft和hard是软、硬限制是文件数量

[root@localhost ~]# edquota -u tom

Disk quotas for user tom (uid 1001):

Filesystem blocks soft hard inodes soft hard

/dev/mapper/benet-lv02 0 1024 2048 0 2 4 #最多可写2M大小的文件,文件个数最大限额为4

给caiwu组做配额

[root@localhost ~]# edquota -g caiwu

Disk quotas for group caiwu (gid 1001):

Filesystem blocks soft hard inodes soft hard

/dev/mapper/benet-lv02 0 2048 4096 0 3 5 #最多可写4M大小的文件,文件个数最大限额为5

赋予普通用户读写执行权限

chmod 777 /mnt2

验证磁盘配额结果

切换到tom用户身份进行登录,在/mnt2目录下写入内容

[root@localhost ~]# su - tom

[tom@localhost ~]$ cd /mnt2

[tom@localhost mnt2]$dd if=/dev/zero of=test1 bs=1M count=1 #从/dev/zero中取1M大小的内容写入test1文件中,总共取1次

记录了1+0 的读入

记录了1+0 的写出

1048576字节(1.0 MB)已复制,0.00484565 秒,216 MB/秒

[tom@localhost mnt2]$dd if=/dev/zero of=test2 bs=1M count=1

记录了1+0 的读入

记录了1+0 的写出

1048576字节(1.0 MB)已复制,0.00335958 秒,312 MB/秒

[tom@localhost mnt2]$dd if=/dev/zero of=test3 bs=1M count=1 #超出了对tom用户设定的最大限额2M,因此写入文件内容失败

dd: 打开"test3" 失败: 超出磁盘限额

[tom@localhost mnt2]$ exit

登出

更改对tom用户的限额,将写入文件大小扩大为100M,caiwu组限额不变

[root@localhost ~]# edquota -u tom

Disk quotas for user tom (uid 1001):

Filesystem blocks soft hard inodes soft hard

/dev/mapper/benet-lv02 2048 10241024002 2 4

再次切换到tom身份进行验证

[root@localhost ~]# su - tom

上一次登录:日 9月 16 20:52:55 CST pts/0 上

[tom@localhost ~]$ cd /mnt2

[tom@localhost mnt2]$rm -rf * #将之前写入的内容删掉

[tom@localhost mnt2]$dd if=/dev/zero of=test1 bs=1M count=2

记录了2+0 的读入

记录了2+0 的写出

2097152字节(2.1 MB)已复制,0.00502173 秒,418 MB/秒

[tom@localhost mnt2]$dd if=/dev/zero of=test2 bs=1M count=2

记录了2+0 的读入

记录了2+0 的写出

2097152字节(2.1 MB)已复制,0.00540753 秒,388 MB/秒

[tom@localhost mnt2]$dd if=/dev/zero of=test3 bs=1M count=2 #可以看到文件大小超出caiwu组的限额,用户tom也不能进行写入操作

dd: 打开"test3" 失败: 超出磁盘限额

因此如果对组和用户同时设置磁盘配额的时候,磁盘配额小的优先生效

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。