目录
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扫描 | pvscan | vgscan | lvscan | create建立 | pvcreate | vgcreate | lvcreate | display显示 | pvdisplay | vgdisplay | lvdisplay | remove删除 | pvremove | vgremove | lvremove | extend扩展 | —— | vgextend | lvextend | reduce减少 | —— | vgreduce | lvreduce |
? ? ? ? ? ? ? ? ? ? ? ? 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 创建,必须独立出来。
|