Linux逻辑卷LVM和磁盘配额

Linux逻辑卷LVM和磁盘配额

  • 一、LVM逻辑卷
    • 1.1 LVM概述
    • 1.2 LVM的组成结构
    • 1.3 LVM的管理命令
    • 1.4 创建LVM过程实例演示
      • 1.4.1 在硬盘中分区,分别在sdb,sdc,sdd中创建sdb1,sdc1,sdd1
      • 1.4.2 创建物理卷,将sdb1,sdc1,sdd1创建为物理卷
      • 1.4.3 创建卷组
      • 1.4.4 创建逻辑卷
      • 1.4.5 创建文件系统
      • 1.4.6 挂载
    • 1.5 LVM扩容
  • 二、磁盘配额
    • 2.1 概述及实现条件
    • 2.2 特点
    • 2.3 演示案例
      • 2.3.1 查看软件是否安装;若没有,就安装软件
      • 2.3.2 以支持磁盘配额的方式挂载
      • 2.3.3 创建用户
      • 2.3.4 磁盘配额
      • 2.3.5 给/data赋权
      • 2.3.6 验证磁盘配额
      • 2.3.7 取消磁盘限额

一、LVM逻辑卷

1.1 LVM概述

LVM:逻辑卷,能够在保持现有数据不变的情况下动态调整磁盘的容量

是一个可动态扩展。快速创建和方便管理的逻辑上的磁盘,而不用考虑实际的硬件分区

LVM可方便的对存储空间进行管理,如动态增加或缩减逻辑卷大小,移动逻辑卷备份和恢复逻辑卷,以实现热备份等

tips:

热备份:不停机备份,实时备份,有多少备份多少

冷备份:停机备份,只能备份当前数据,开机后的新数据不再备份

LVM的作用:

  1. 打破了分区只能单个挂载,单个使用的限制
  2. 打破了磁盘分区大小的限制(扩容)
  3. 打破了磁盘分区必须是连续空间的限制

注意:/boot分区存放引导文件,不能创建LVM

1.2 LVM的组成结构

PV物理卷:真正的物理硬盘或分区,由不同的硬盘提供真实的存储空间

VG卷组:把不同分区的硬盘打包在一起,形成一个逻辑上的硬盘

LV逻辑卷:分区,格式化,挂载

PE:是用来保存数据的最小单位,大小可改,默认4MB

1.3 LVM的管理命令

功能 物理卷管理 卷组管理 逻辑卷管理
Scan 扫描 pvscan vgscan lvscan
Create 建立 pvcreate vgcreate lvcreate
Display 显示 pvdisplay vgdisplay lvdisplay
Remove 删除 pvremove vgremove lvremove
Extend 扩展 ————— vgextend lvextend
Reduce 减少 ————— vgreduce lvreduce

1.4 创建LVM过程实例演示

1.4.1 在硬盘中分区,分别在sdb,sdc,sdd中创建sdb1,sdc1,sdd1

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

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

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

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

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

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

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

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

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

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

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

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0  953M  0 part /boot
└─sda2            8:2    0 51.2G  0 part 
  ├─centos-root 253:0    0 46.6G  0 lvm  /
  └─centos-swap 253:1    0  4.7G  0 lvm  [SWAP]
sdb               8:16   0   40G  0 disk 
└─sdb1            8:17   0   10G  0 part 
sdc               8:32   0   20G  0 disk 
└─sdc1            8:33   0   10G  0 part 
sdd               8:48   0   20G  0 disk 
└─sdd1            8:49   0   10G  0 part 
sr0              11:0    1 1024M  0 rom  

1.4.2 创建物理卷,将sdb1,sdc1,sdd1创建为物理卷

[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdd1" successfully created.

1.4.3 创建卷组

[root@localhost ~]# vgcreate yun /dev/sdb1 /dev/sdc1 /dev/sdd1			//创建卷组名为yun的卷组
  Volume group "yun" successfully created
  [root@localhost ~]# vgdisplay yun					//查看卷组情况
  --- Volume group ---
  VG Name               yun
  System ID             
  Format                lvm2
  Metadata Areas        3
  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                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       0 / 0   
  Free  PE / Size       7677 / <29.99 GiB
  VG UUID               hN1Mkr-FOLL-t3zI-5P5V-XwAu-G9h1-UdLfxO

1.4.4 创建逻辑卷

lvcreate -L 逻辑卷大小 -n 逻辑卷名称 卷组名称
		-L:指定逻辑卷的大小,单位为M,G,T
		-n:指定逻辑卷的名称
		-l:按照PE个数指定逻辑卷大小,需要换算容量,太麻烦
[root@localhost ~]# lvcreate -L 10G -n jisuan yun		//创建大小为10G,逻辑卷名为jisuan的逻辑卷
  Logical volume "jisuan" created.
[root@localhost ~]# lvdisplay /dev/yun/jisuan 			//查看逻辑卷情况
  --- Logical volume ---
  LV Path                /dev/yun/jisuan
  LV Name                jisuan
  VG Name                yun
  LV UUID                iTIUZt-FCxY-BFQs-02ng-p89h-Y58s-M6Ynvq
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-09 02:04:19 +0800
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

1.4.5 创建文件系统

							  /目录/卷组名/逻辑卷名
[root@localhost ~]# mkfs.xfs /dev/yun/jisuan 
meta-data=/dev/yun/jisuan        isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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

1.4.6 挂载

[root@localhost /]# mkdir data
[root@localhost /]# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost ~]# blkid
/dev/mapper/centos-root: UUID="1871dac0-5ec8-4132-a7ab-f3f9c29f4825" TYPE="xfs" 
/dev/sda2: UUID="VNY0Qc-0Q7z-7FM2-ST8T-ApMY-SZWn-5ELzv3" TYPE="LVM2_member" 
/dev/sda1: UUID="fa602757-026a-4b15-9bdb-05bf9c751ed8" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="b2c1d539-9794-4d64-b70d-61da5cea4ae0" TYPE="swap" 
/dev/sdb1: UUID="D0HrSm-vNMs-E2od-EDmo-2gxj-2znF-fSb79Z" TYPE="LVM2_member" 
/dev/sdc1: UUID="ECvOfU-DV9d-4Gv8-1mzi-ZeE1-718V-ROHNBT" TYPE="LVM2_member" 
/dev/sdd1: UUID="d1kEb9-qhb1-4Lr9-J8Fa-l9N2-uXuV-OJlwNK" TYPE="LVM2_member" 
/dev/mapper/yun-jisuan: UUID="3f966bff-86da-47bd-a33f-108e99baed5b" TYPE="xfs" 
[root@localhost ~]# vim /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Apr 26 00:42:50 2023
#
# 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=fa602757-026a-4b15-9bdb-05bf9c751ed8 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0


UUID=3f966bff-86da-47bd-a33f-108e99baed5b /data xfs defaults 0 0

:wq
[root@localhost /]# mount -a			//刷新

1.5 LVM扩容

[root@localhost /]# lvextend -L +12G /dev/yun/jisuan -r			//扩容12G逻辑卷
  Size of logical volume yun/jisuan changed from 10.00 GiB (2560 extents) to 22.00 GiB (5632 extents).
  Logical volume yun/jisuan successfully resized.
meta-data=/dev/mapper/yun-jisuan isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2621440, 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 2621440 to 5767168
[root@localhost /]# lvdisplay /dev/yun/jisuan 
  --- Logical volume ---
  LV Path                /dev/yun/jisuan
  LV Name                jisuan
  VG Name                yun
  LV UUID                iTIUZt-FCxY-BFQs-02ng-p89h-Y58s-M6Ynvq
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-05-09 02:04:19 +0800
  LV Status              available
  # open                 1
  LV Size                22.00 GiB			//扩容成功
  Current LE             5632
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
   

当卷组空间不够逻辑卷扩容是,添加卷组

①在硬盘中分区

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

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


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

命令(输入 m 获取帮助):w
[root@localhost /]# partprobe 
[root@localhost /]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0  953M  0 part /boot
└─sda2            8:2    0 51.2G  0 part 
  ├─centos-root 253:0    0 46.6G  0 lvm  /
  └─centos-swap 253:1    0  4.7G  0 lvm  [SWAP]
sdb               8:16   0   40G  0 disk 
├─sdb1            8:17   0   10G  0 part 
│ └─yun-jisuan  253:2    0   22G  0 lvm  /data
└─sdb2            8:18   0   15G  0 part 
sdc               8:32   0   20G  0 disk 
└─sdc1            8:33   0   10G  0 part 
  └─yun-jisuan  253:2    0   22G  0 lvm  /data
sdd               8:48   0   20G  0 disk 
└─sdd1            8:49   0   10G  0 part 
  └─yun-jisuan  253:2    0   22G  0 lvm  /data
sr0              11:0    1 1024M  0 rom  

②添加新的分区到卷组中

[root@localhost /]# vgextend yun /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.
  Volume group "yun" successfully extended
[root@localhost /]# vgdisplay /dev/yun
  --- Volume group ---
  VG Name               yun
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               44.98 GiB				//添加成功
  PE Size               4.00 MiB
  Total PE              11516
  Alloc PE / Size       5632 / 22.00 GiB
  Free  PE / Size       5884 / 22.98 GiB
  VG UUID               hN1Mkr-FOLL-t3zI-5P5V-XwAu-G9h1-UdLfxO
   

二、磁盘配额

2.1 概述及实现条件

磁盘配额:磁盘配额是 Linux 系统中用来限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的。

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

2.2 特点

  • 作用范围:针对指定的文件系统
  • 限制对象:用户账号,组账号
  • 限制类型:磁盘容量(对磁盘空间的限制),文件数量(对inode号的限制)
  • 限制方法:软限制,硬限制 □≤ ≤□

2.3 演示案例

2.3.1 查看软件是否安装;若没有,就安装软件

[root@localhost /]# rpm -q xfsprogs quota
xfsprogs-4.5.0-12.el7.x86_64
quota-4.01-14.el7.x86_64			//已有,不用安装

2.3.2 以支持磁盘配额的方式挂载

[root@localhost /]# umount /dev/yun/jisuan /data/			//如果之前挂载了,需要先解挂载
[root@localhost /]# mount -o usrquota,grpquota /dev/yun/jisuan /data/
					以支持磁盘配额的方式挂载

2.3.3 创建用户

[root@localhost /]# useradd ky29
[root@localhost /]# passwd ky29
更改用户 ky29 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

2.3.4 磁盘配额

[root@localhost /]# xfs_quota -x -c 'limit -u bsoft=80M bhard=100M ky29' /data/
限制磁盘空间
[root@localhost /]# xfs_quota -x -c 'limit -u isoft=4 ihard=6 ky29' /data/
限制文件数量

常用选项:

  • -x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
  • -c:表示直接调用管理命令。
  • -u:指定用户账号对象。
  • -g:指定组账号对象。

限制字段:

  • bsoft:设置磁盘容量的软限制数值(默认单位为KB)。
  • bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
  • isoft:设置磁盘文件数的软限制数值。
  • ihard:设置磁盘文件数的硬限制数值。

2.3.5 给/data赋权

[root@localhost /]# chmod 777 /data/			//设置所有人对/data都有读写执行的权限

2.3.6 验证磁盘配额

使用命令

dd:是一个设备转换和连续复制命令
“if=” 指定输入设备(或文件)
"of="指定输出设备(或文件)
"bs=" 指定读取数据块的大小
"count=”指定读取数据块的数量
/dev/zero “零"设备文件,可以无限的提供空字符。常用来生成-一个特定大小的文件

验证

验证磁盘容量
[root@localhost /]# su - ky29
上一次登录:二 59 03:16:07 CST 2023pts/3 上
[ky29@localhost ~]$ dd if=/dev/zero of=/data/123.txt bs=10M count=12
dd: 写入"/data/123.txt" 出错: 超出磁盘限额
记录了11+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.0597864 秒,1.8 GB/秒
[ky29@localhost ~]$ cd /data
[ky29@localhost data]$ rm -rf *
[ky29@localhost data]$ touch {1..10}.txt
touch: 无法创建"7.txt": 超出磁盘限额
touch: 无法创建"8.txt": 超出磁盘限额
touch: 无法创建"9.txt": 超出磁盘限额
touch: 无法创建"10.txt": 超出磁盘限额

2.3.7 取消磁盘限额

[root@localhost /]# xfs_quota -x -c 'disable -up' /data
[root@localhost /]# su - ky29
上一次登录:二 59 03:17:16 CST 2023pts/3 上
[ky29@localhost ~]$ dd if=/dev/zero of=/data/123.txt bs=10M count=12
记录了12+0 的读入
记录了12+0 的写出
125829120字节(126 MB)已复制,0.0478918 秒,2.6 GB/秒
[ky29@localhost ~]$ cd /data/
[ky29@localhost data]$ ls
123.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt
[ky29@localhost data]$ touch {1..10}.txt
[ky29@localhost data]$ ls
10.txt  123.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

若要再次设置磁盘配额,需要重新以支持磁盘配额的方式挂载

你可能感兴趣的:(linux,运维,服务器)