引言
:当你在使用linux系统时也许会遇到这样的困境;如何精确评估和分配各个硬盘分区的容量,如果当初估计不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,因此为满足应用系统的需要用LVM就能解决这类的磁盘管理问题。同时磁盘配额也是为了减小磁盘爆满的可能性用来限制一个或者多个用户可以使用的磁盘空间的功能。
一.LVM概述
1.逻辑卷管理
能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性
/boot分区用于存放引导文件,不能基于LVM创建
2. LVM机制的基本概念
2.1 PE(Physical Extend)
卷的最小单位,默认4M大小,就像我们的数据是以页的形式存储一样,卷就是以PE的形式存储
2.2 PV (Physical Volume, 物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(PE),从而构成物理卷
2.3VG (Volume Group, 卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷
2.4 LV (Logical Volume, 逻辑卷)
从卷组中分割出的一块空间,形成逻辑卷。使用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流程
1.添加俩块磁盘,之后关机或打此命令(无需重启)
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
**再打fdisk -l 看看**
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000e6563
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 976895 487424 83 Linux
/dev/sda2 976896 125829119 62426112 8e Linux LVM
磁盘 /dev/mapper/centos-root:48.3 GB, 48318382080 字节,94371840 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-home:7012 MB, 7012876288 字节,13697024 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdc:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
2.使用fdisk工具将磁盘设备/dev/sdb、 /dev/sdc划分出主分区sdb1、sdc1, 并且把分区类型的ID标记号改为“8e"
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x92f842ed 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-125829119,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):=^H+^[[D
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+20G
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):L
0 空 24 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
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x92f842ed
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 8e Linux LVM
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (41945088-125829119,默认为 41945088):
将使用默认值 41945088
Last 扇区, +扇区 or +size{K,M,G} (41945088-125829119,默认为 125829119):+20G
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x92f842ed
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 8e Linux LVM
/dev/sdb2 41945088 83888127 20971520 83 Linux
命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xe9101101 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-125829119,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+20G
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (41945088-125829119,默认为 41945088):
将使用默认值 41945088
Last 扇区, +扇区 or +size{K,M,G} (41945088-125829119,默认为 125829119):+20G
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdc:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe9101101
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 41945087 20971520 83 Linux
/dev/sdc2 41945088 83888127 20971520 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (83888128-125829119,默认为 83888128):
将使用默认值 83888128
Last 扇区, +扇区 or +size{K,M,G} (83888128-125829119,默认为 125829119):
将使用默认值 125829119
分区 3 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdc:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe9101101
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 41945087 20971520 8e Linux LVM
/dev/sdc2 41945088 83888127 20971520 8e Linux LVM
/dev/sdc3 83888128 125829119 20970496 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
3.创建物理卷
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
4.创建卷组(组名为dzy)
[root@localhost ~]# vgcreate dzy /dev/sdb1 /dev/sdc1
Volume group "dzy" successfully created
5.创建逻辑卷(卷名dzyhah,容量30G,生成路径为 /dev/dzy/dzyhah)
[root@localhost ~]# lvcreate -L 30G -n dzyhah dzy
Logical volume "dzyhah" created.
--- Logical volume ---
LV Path /dev/dzy/dzyhah
LV Name dzyhah
VG Name dzy
LV UUID uISEFe-XbOg-9Xui-NSOu-s2cC-0G1x-ZXJKUE
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2021-08-11 23:54:57 +0800
LV Status available
# open 0
LV Size 30.00 GiB
Current LE 7680
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
6.对逻辑卷进行格式化,创建XFS文件系统,并挂载到/dzy_class/目录下
[root@localhost ~]# mkfs.xfs /dev/mapper/dzy-dzyhah
meta-data=/dev/mapper/dzy-dzyhah isize=512 agcount=4, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=7864320, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
```挂载
[root@localhost /]# mount /dev/mapper/dzy-dzyhah /dzy_class/
[root@localhost /]# mount -a
[root@localhost /]#
[root@localhost /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 45G 3.6G 42G 8% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 9.1M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 473M 170M 303M 36% /boot
/dev/mapper/centos-home 6.6G 38M 6.5G 1% /home
tmpfs 378M 20K 378M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/big/CentOS 7 x86_64
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/dzy-dzyhah 30G 33M 30G 1% /dzy_class
``
`扩容
[root@localhost dzy_class]# vgextend dzy /dev/sdc2
Volume group "dzy" successfully extended
Size of logical volume dzy/dzyhah changed from 30.00 GiB (7680 extents) to 50.00 GiB (12800 extents).
Logical volume dzy/dzyhah successfully resized.
再刷新下
[root@localhost dzy_class]# xfs_growfs /dev/mapper/dzy-dzyhah
[root@localhost dzy_class]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 45G 3.6G 42G 8% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 9.1M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 473M 170M 303M 36% /boot
/dev/mapper/centos-home 6.6G 38M 6.5G 1% /home
tmpfs 378M 20K 378M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/big/CentOS 7 x86_64
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/dzy-dzyhah 50G 33M 50G 1% /dzy_class
四.磁盘配额
1.实现磁盘配额的条件
需要Linux内核支持 安装xfsprogs与quota软件包
2.Linux磁盘限额的特点
作用范围:针对指定的文件系统(分区) 限制对象:用户账号、组账号 限制类型:磁盘容量、文件数量 限制方法:软限制、硬限制 硬限制:是指对资源节点和数据块的绝对限制,在任何情况下都不允许用户超过这个限制 软限制:是指用户可以在一定时间范围内超过软限制的额度,在硬限制的范围内继续申请资源,同时系统会在用户登录时给出警告信息和仍可继续申请资源剩余时间.如果达到时间期限,用户的硬盘使用仍超过软限制的额度,则系统将不允许用户再申请硬盘资源 注:(默认时间为一周)
3.编辑基本命令,选项及步骤
CentOS7中设置磁盘配额步骤步骤 1、检查是否已安装xfsprogs和xfs_ quota软件包
rpm -q xfsprogs quota
yum install -y xfsprogs quota
2**.以支持配额功能的方式挂载文件系统**
[root@localhost /]# umount /dzy_class/ 先卸载因为不符合条件
输入mount(刷新所有挂载),后找到原因,添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持,而此没有,所以要卸载
/dev/mapper/dzy-dzyhah on /dzy_class type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
临时挂载
[root@localhost dzy_class]# mount -O usrquota,grpquota /dev/dzy/dzyhah /dzy_class
[root@localhost /]# vim /etc/fstab
进行永久挂载
/etc/fstab
# Created by anaconda on Wed Aug 11 22:50:32 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=2bc13e94-93e0-4e76-af2a-eebf5c5076b3 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/mapper/dzy-dzyhah /dzy_class xfs defaults,usrquota,grpquota 0 0
~
~
或使用此命令进行永久挂载
[root@localhost dzy_class]# echo "/dev/mapper/dzy-dzyhah" /dzy_class/ xfs defaults 0 0
编辑用户和组账号的配额设置
[root@localhost /]# xfs_quota -x -c 'limit -u bsoft=80m bhard=100m isoft=8 ihard=10 gxh' /dzy_class/
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。 -c: 表示直接调用管理命令。 -u: 指定用户账号对象 -g: 指定组账号对象 bsoft: 设置磁盘容量的软限制数值(默认单位为KB)。 bhard:设置磁盘容量的硬限制数值(默认单位为KB)。 isoft:设置磁盘文件数的软限制数值。 ihard:设置磁盘文件数的硬限制数值。 验证磁盘配额的命令
useradd zhangsan
passwd zhangsan
xfs_ quota -x -c ' limit -u bsoft=80M bhard=10QM isoft=40 ihard=50 zhangsan' /opt/
#仅限制磁盘容量
xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M zhangsan' /opt/
#仅限制文件数
xfs_ quota -x -c 'limit -u isoft=4 ihard=5 zhangsan' /opt/
#仅限制磁盘容量
xfs_ quota -x -C ' limit -u bsoft=80M bhard=100M zhangsan' /opt/
#仅限制文件数
xfs quota -x -c 'limit -u isoft=4 ihard=5 zhangsan' /opt/
#查看zhangsan磁盘容量限制
xfs_ quota -C ' quota -uv zhangsan' /opt/
#查看zhangsan文件数限制
xfs quota -C 'quota -i -uv zhangsan' /opt/
3验证磁盘配额功能
命令 | 说明 |
---|
dd | 是一个设备转换和连续复制的命令 | if | 指定输入设备(或文件) | of | 指定输出设备(或文件 | bs | 指定读取数据块的大小 | count | 指定读取数据块的数量 | /dev/zero | ‘零’设备文件,可以无限的提供空字符,常用来生成一个特定大小的文件。用于测试。 |
chmod 777 /opt
#给权限
su zhangsan
cd /opt
#验证磁盘容量超限
dd if=/dev/ zero of=/opt/ddtest. txt bs=10M count=12
#验证磁盘文件数超限
touch {aa,bb, cc,dd,ee, ff} . txt
4.查看磁盘配额使用情况
#查看所有可用分区的磁盘容量配额使用情况
xfs_quota -X -C ' report -a'
#查看磁盘容量和文件数的报告
xfs_quota-X -C 'report -abih '
补充 停止配额
xfs_quota -x -c 'off -u' /配额的目录
xfs_quota -x -c 'off -g' /配额的目录
xfs_quota -x -c 'off -p' /配额的目录
删除配额
xfs_quota -x -c 'remove -u' /配额目录
xfs_quota -x -c 'remove -g' /配额目录
xfs_quota -x -c 'remove -p' /配额目录
总结
如何在虚拟机的环境下添加硬盘 如何用fdlisk在新盘上建立分区 如何按要求格式化分区并挂载 如何进行磁盘配额
|