磁盘配额 —— 适当限制用户的硬盘容量,以妥善分配系统资源
磁盘配额一般用途
- 限制某一用户组所能使用的最大磁盘配额(使用用户组限制)
- 限制某一用户所能使用的最大磁盘配额(使用用户限制)
- 限制某一目录 ( directory,project )的最大磁盘配额
磁盘配额的规范设置选项 —— 针对 xfs 文件系统的限制选项
- 分别针对用户、用户组或个别目录(user/group/project)
- 容量限制或文件数量限制 (block 或 inode)
文件系统主要规划为存放属性的 inode 与 实际文件数据的 block 区块
- 限制 inode 使用量:管理用户可以建立的【文件数量】。
- 限制 block 使用量:管理用户磁盘容量的限制,较常见。
- 限制值 —— 软限制与硬限制 (soft / hard), hard(磁盘最大值) > soft(使用量低于soft ,可正常使用)
逻辑卷管理器 (LVM,Logical Volume Manager) —— 可以弹性地调整文件系统的容量
1 )LVM 的意义
- 物理卷 (PV,Physical Volume)
实际分区或 Disk 需要通过 fdisk 调整系统标识符 (system ID)成为 8e (LVM 的标识符),然后再经过 pvcreate 的命令将它转成 LVM 最底层的物理卷 (PV),之后才能将这些 PV 加以利用。
- 卷组 (VG,Volume Group)
卷组就是将许多的 PV 整合成的 VG ,这个 LVM 大磁盘。
- 物理扩展快 (PE,Physica Extent)
LVM 的最小存储单位,文件数据都是借由写入 PE 来完成的。
- 逻辑卷 (LV,Logical Volume)
LV 是最后可以被格式化使用的类似分区的东西,LV 是由 VG 分割出来的
2 )LVM 可以弹性地调整文件系统的容量的工作方式
- 通过【 交换 PE 】来进行数据转换,将原本 LV 内的 PE 转移到其他设备中以降低 LV 容量,或将其他设备的 PE 加到此 LV 中以加大容量
- VG 要扩充,加入其他的 PV 即可,而 LV 的扩充也是通过加入 VG 内没有使用的 PE 来扩充
LVM 实践流程
0 )Disk 阶段 (实际的磁盘)
- lsblk # 列出系统上的所有磁盘列表
- fdisk /dev/sdb # 磁盘分区
n —— p —— 分区编号 —— sector —— Size:分区的容量
t —— 分区编号 —— 8e (Code,更改分区文件系统类型 83 Linux- 8e Linux LVM )
wq # 保存分区后,离开 fdisk
- fdisk -l # 列出已知的分区文件系统类型
1 ) PV 阶段
PV 相关命令
- pvcreate:将物理分区建立成为 PV。
例:pvcreate /dev/sdb{2..3}
- pvscan:查找目前系统里面任何具有 PV 的磁盘。
- pvdisplay:显示出目前系统里面的 PV 状态。
- pvremove:将 PV 属性删除,让分区不具有 PV 属性。
2 ) VG 阶段
VG 相关命令
- vgcreate [ -s N[ mgt ] ] VG的名称:主要建立 VG 的命令。
-s:后面接 PE 的大小 (size),单位可以是 m、g、t (大小写均可)
例:vgcreate -s 10M westos_vg0 /dev/sdb2 # 将/dev/sdb2建成一个VG "westos_vg0",且指定 PE 大小为 10M
- vgscan:查找系统上面是否有 VG 状态。
- vgdisplay:显示出目前系统里面的 VG 状态。
- vgextend:在 VG 内增加额外的 PV 。
- vgreduce:在 VG 内删除 PV。
- vgchange:设置 VG 是否启动 (active)。
- vgremove:删除一个 VG。
3 ) LV 阶段 —— 将创造出的 VG "westos_vg0"大磁盘,通过 LV 进行分区
LV 相关命令
- lvcreate [ -L N[ m/g/t ] ] [ -n LV名称 ] VG名称:建立 LV。
- lvcreate [ -l N ] [ -n LV名称 ] VG名称
-L:后接容量,单位可以是m/g/t,注意最小单位为 PE 。
-l:后面接 PE 【个数】。
-n:后接 LV 名称。
例:
lvcreate -L 500M -n westos_lv0 westos_vg0 # 将 VG "westos_vg0"分 500M 给LV"westos_lv0"
- lvscan:查询系统上面的 LV 。
- lvdisplay:显示LV 状态。
- lvextend:在LV里面增加容量。
- lvreduce:在LV里面减少容量。
- lvremove:删除一个 LV 。
- lvresize:对 LV 进行容量大小的调整。
4 ) 文件系统阶段
格式化
- mkfs.xfs /dev/westos_vg0/westos_lv0 # 对LV 磁盘(/dev/westos_vg0/westos_lv0) .xfs 文件系统格式化
挂载
- mkdir /weixindata # 创建 挂载点
- mount /dev/westos_vg0/westos_lv0 /weixindata # 挂载
查看
- df -Th /weixindata # 查看挂载状态
放大 LV 容量
- VG 阶段需要有剩余容量:放大文件系统,即放大 LV,所以需要更多的 VG 容量 (加硬盘,将空余硬盘 pvcreate 及 vgextend 增加到该 VG 内)。
- LV 阶段产生更多的可用容量:如果 VG 的剩余容量足够,利用 lvresize 命令,将剩余容量加入所需 LV 设备中。
- 文件系统阶段的放大:可以支持放大的文件系统有 xfs 以及 ext 系列;支持缩小文件系统 仅有 ext 系列;
例:针对 /weixindata 在增大500M的容量
- vgdisplay westos_vg0 # 查看 VG "westos_vg0" 剩余容量是否充足
- lvresize -L +2500M /dev/westos_vg0/westos_lv0 # 利用 lvresize 命令 增加2500M 给 LV
- lvresize -L -500M /dev/westos_vg0/westos_lv0 # 利用 lvresize 命令 减少了 LV 500M 容量
- lvscan # 查看 LV —— LV 磁盘 容量 增大
- df -Th /weixindata # 查看 指定挂载点 /weixindata 的文件系统的整体磁盘使用量 —— 没有相应增加 !
文件系统的容量处理 (重要)
- xfs_growfs /weixindata # 使用 xfs_growfs 执行调整
- df -Th /weixindata # 查看 /weixindata 的文件系统的整体磁盘使用量 ,已相应增大
缩小 LV 容量 —— 仅 ext 系列 文件系统(如 ext4) 支持文件系统容量的缩小
实验环境:LV 磁盘 文件系统为 ext4 类型
- umount /weixindata # 将设备文件从挂载点 /weixindata 卸载
- mkfs.ext4 /dev/westos_vg0/westos_lv0 # 将 LV "/dev/westos_vg0/westos_lv0"磁盘格式化为 ext4 文件系统类型
- mount /dev/westos_vg0/westos_lv0 /weixindata # 挂载
- df -Th /weixindata # 查看挂载点 /weixindata 的文件系统的整体磁盘使用量
- resize2fs /weixindata # 使用 resize2fs 执行调整
- lvresize -L -1000M /dev/westos_vg0/westos_lv0 # 利用 lvresize 命令 缩小 LV 磁盘容量
- lvscan # 查看系统 LV ——LV 磁盘缩小
- df -Th /weixindata # 查看文件系统 容量并未改变
注意:
放大:先放大硬件(磁盘容量),再执行调整 软件(文件系统)
缩小:先执行调整 软件(文件系统),再缩小硬件(磁盘容量)
LVM 的 LV 磁盘快照
LVM 的删除
- umount /weixindata # 卸载
- lvremove /dev/westos_vg0/westos_lv0 # 删除 LV
- vgremove /dev/westos_vg0 # 删除 VG
- pvremove /dev/sdb{2..3} # 删除 PV
- fdisk /dev/sdb # 删除 LVM 磁盘分区
d —— 2 ; d —— 3