目录
一.LVM逻辑卷概述
- LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制
- LVM是建立在硬盘和分区之上,文件系统之下的一个逻辑层
- LVM逻辑卷可以保持现有数据不变的情况下动态调整磁盘容量,提高磁盘管理的灵活性
- CentOS系统在安装时自动分区,会默认采用LVM分区,不需要手工配置,另外“/boot”分区不能基于LVM创建,必须独立出来
- PV物理卷,是LVM机制的基本存储设备,通常对应一个普通分区或整个硬盘,且创建物理卷时,会在分区或者硬盘的头部创建一个保留分区,来记录LVM的属性。此外,物理卷的基本单位是大小为4MB,叫做PE。一般物理卷直接使用设备文件名称,/dev/sdb1、/dev/sdd等
- VG卷组,由一个或者多个物理卷组成一个整体,在卷组中可以动态的添加或移除物理卷,卷组名由用户自定义
- LV逻辑卷,逻辑卷创建在卷组上和物理卷无直接关系,逻辑卷就是从卷组这个整体中分出来的一块
二.创建逻辑卷
- 对于已经分好区的硬盘,其中必须使用fdisk工具将分区类型的ID标记号改为8e,先将分区创建为物理卷,再把各个物理卷组成卷组,最后基于卷组,创建逻辑卷。对于逻辑卷用户可以格式化且挂载使用。
- 常用的LVM管理命令
功能 | PV管理命令 | VG管理命令 | LV管理命令 |
---|---|---|---|
扫描(scan) | pvscan | vgscan | lvsacn |
建立(create) | pvcreate | vgcreate | lvcreste |
显示(display) | pvdisplay | vgdisplay | lvdisplay |
移除(remove) | pvremove | vgremove | lvremove |
扩展(extend) | vgextend | lvextend | |
减少(reduce) | vgreduce | lvreduce |
注:物理卷不在命令上可以扩展和减少
- 创建LVM卷的步骤
- 添加三个新的硬盘,并用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 字节
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 33556479 10485760 83 Linux
/dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris
/dev/sda4 41945088 83886079 20970496 5 Extended
/dev/sda5 41947136 62918655 10485760 83 Linux
[root@localhost ~]#
- 对这三个磁盘进行分区,并且把分区类型的ID标记号改为8e(fdisk /dev/sdb 选择n创建主分区 默认 选择t修改ID标记号 )
[root@localhost ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe3ad9fe5
设备 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
磁盘标识符:0x9111388c
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 8e Linux LVM
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7aae2e1b
设备 Boot Start End Blocks Id System
/dev/sdd1 2048 41943039 20970496 8e Linux LVM
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 33556479 10485760 83 Linux
/dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris
/dev/sda4 41945088 83886079 20970496 5 Extended
/dev/sda5 41947136 62918655 10485760 83 Linux
[root@localhost ~]#
- 把这三个分区创建为物理卷
[root@localhost ~]# pvscan
No matching physical volumes found
[root@localhost ~]# pvcreate /dev/sd[b-d]1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdd1" successfully created.
[root@localhost ~]# pvdisplay /dev/sd[b-d]1
"/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 sPJc3c-Oxdd-bq9V-N0la-G1l2-Vakq-iCNwdY
"/dev/sdd1" is a new physical volume of "<20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdd1
VG Name
PV Size <20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID r82AWI-1IDd-0a8c-4MI7-F4Ec-hWQW-dEIzP5
"/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 XHggtF-rSZf-HioB-NRpE-wfaR-VkM7-QCDOMo
[root@localhost ~]#
注:其中pv命令的使用可以在命令后面一个一个加上设备目录用空格隔开,如果是连续的分区号可以用上述命令实现
- 把物理卷创建为卷组
[root@localhost ~]# vgscan
Reading volume groups from cache.
[root@localhost ~]# vgcreate aaa /dev/sd[b-d]1
Volume group "aaa" successfully created
[root@localhost ~]# vgdisplay aaa
--- Volume group ---
VG Name aaa
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 <59.99 GiB
PE Size 4.00 MiB
Total PE 15357
Alloc PE / Size 0 / 0
Free PE / Size 15357 / <59.99 GiB
VG UUID NdfS3h-V8Pk-nxOx-sCMp-BE0j-fvg3-a74uSZ
[root@localhost ~]#
- 从卷组中创建一个大小为30G的逻辑卷
[root@localhost ~]# lvscan
[root@localhost ~]# lvcreate -L 30G -n bbb aaa
Logical volume "bbb" created.
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/aaa/bbb
LV Name bbb
VG Name aaa
LV UUID Nuvrdt-mxbA-qrCg-kpsN-FrEt-1b1p-zrbvn1
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-11-02 15:15:04 +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:0
[root@localhost ~]#
注:使用lvcreate命令时,需要跟参数 -L代表容量大小,-n代表逻辑卷名
基本格式为:lvcreate -L 容量大小 -n 逻辑卷名 卷组名
- 对逻辑建卷进行格式化
[root@localhost ~]# mkfs.xfs /dev/aaa/bbb
meta-data=/dev/aaa/bbb 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 ~]#
注:mkfs格式化工具的两种基本格式
mkfs.文件系统类型 逻辑卷的路径
mkfs -t 文件系统类型 逻辑卷的路径
- 对逻辑卷进行挂载并且使用该逻辑卷
[root@localhost ~]# mkdir ccc
[root@localhost ~]# mount /dev/aaa/bbb ./ccc
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 3.3G 6.8G 33% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 481M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/aaa-bbb xfs 30G 33M 30G 1% /root/ccc
[root@localhost ~]#
- 对逻辑卷进行扩容
[root@localhost ~]# lvextend -L +10G /dev/aaa/bbb
Size of logical volume aaa/bbb changed from 30.00 GiB (7680 extents) to 40.00 GiB (10240 extents).
Logical volume aaa/bbb successfully resized.
[root@localhost ~]# lvdisplay /dev/aaa/bbb
--- Logical volume ---
LV Path /dev/aaa/bbb
LV Name bbb
VG Name aaa
LV UUID Nuvrdt-mxbA-qrCg-kpsN-FrEt-1b1p-zrbvn1
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-11-02 15:15:04 +0800
LV Status available
# open 1
LV Size 40.00 GiB
Current LE 10240
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
- 当我们扩容时,会发现使用df -hT命令,没有扩展的容量,这是因为对于新的逻辑卷没有格式化
- 可以用xfs_growfs命令对扩容的部分进行更新识别
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 3.3G 6.8G 33% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 481M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/aaa-bbb xfs 30G 33M 30G 1% /root/ccc
[root@localhost ~]# xfs_growfs /dev/aaa/bbb
meta-data=/dev/mapper/aaa-bbb isize=512 agcount=4, agsize=1966080 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=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 bsize=4096 blocks=3840, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7864320 to 10485760
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 3.3G 6.8G 33% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 481M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/aaa-bbb xfs 40G 33M 40G 1% /root/ccc
[root@localhost ~]#
注:使用xfs_growfs可以更新LVM的扩容。使用resize2fs可以更新raid和ext4的扩容
三.磁盘配额的概述
- 磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
- 在Linux中实现磁盘限额,需要Linux内核支持,安装xfsprgs与quota软件包
- Linux磁盘配额针对指定的文件系统,限制对象是用户账号和组账号,限制类型包括磁盘容量,文件数量,而且分为软限制和硬限制,软限制是时效限制一般是7天,而且硬限制的优先级大于软限制
四.磁盘配额的步骤和相关命令
- 磁盘配额的具体步骤:1,以支持配额功能的方式挂载文件系统;2,编辑用户和组账号的配额设置;3,验证磁盘功能;4,查看磁盘配额的使用情况
- 用命令进行临时磁盘配额设置(当重启之后失效)
1.以配额方式挂载文件系统
mount -o usrquota,grpquota 分区路径 挂载点
2.提供这个挂载点在其他用户的权限
chmod 777 挂载点
3.编辑配额设置(-x进入专家模式,-c进入命令模式,-u进入用户,-g进入组,bsoft容量软限制,
bhard容量硬限制,isoft数量软限制,ihard数量硬限制)
xfs_quota -x -c 'limit -u bsoft=50M bhard=100M isoft=4 ihard=5 用户账号' 挂载点
4.查看用户配额(容量和文件数量)设置
xfs_quota -c 'quota -uv 用户账号' 挂载点
xfs_quota -c 'quota -iuv 用户账号' 挂载点
- 用vi编辑器进行永久磁盘配额设置
1.进入vi编辑器
vim /etc/fstab
2.在vi编辑器里(配额挂载)
分区路径 挂载点 xfs defaults,usrquota,grpquota 0 0
3.使用这条命令启用挂载功能
mount -a
4.给其他用户权限
chmod 777 挂载点
5.编辑配额设置(-x进入专家模式,-c进入命令模式,-u进入用户,-g进入组,bsoft容量软限制,
bhard容量硬限制,isoft数量软限制,ihard数量硬限制)
xfs_quota -x -c 'limit -u bsoft=50M bhard=100M isoft=4 ihard=5 用户账号' 挂载点
6.查看用户配额(容量大小和文件数量)
xfs_quota -c 'quota -uv 用户账号' 挂载点
xfs_quota -c 'quota -iuv 用户账号' 挂载点
五.磁盘配额的具体实例
- 在新加磁盘上创建一个分区,并格式化
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 33556479 10485760 83 Linux
/dev/sda3 33556480 41945087 4194304 82 Linux swap / Solaris
/dev/sda4 41945088 83886079 20970496 5 Extended
/dev/sda5 41947136 62918655 10485760 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbee39d8f
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, 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 ~]#
- 在vi编辑器里以配额方式挂载该分区
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# mount -a
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 10G 3.3G 6.8G 33% /
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 7.2M 481M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 37M 10G 1% /home
/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 xfs 20G 33M 20G 1% /mnt
[root@localhost ~]#
- 给其他账户权限
[root@localhost ~]# chmod 777 /mnt
[root@localhost ~]#
- 编辑配额设置并且查看配额功能和情况
[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=50M bhard=100m isoft=4 ihard=5 zh
[root@localhost ~]# xfs_quota -c 'quota -uv zhangsan' /mnt
Disk quotas for User zhangsan (1000)
Filesystem Blocks Quota Limit Warn/Time Mounted on
/dev/sdb1 0 51200 102400 00 [--------] /mnt
[root@localhost ~]# xfs_quota -c 'quota -iuv zhangsan' /mnt
Disk quotas for User zhangsan (1000)
Filesystem Files Quota Limit Warn/Time Mounted on
/dev/sdb1 0 4 5 00 [--------] /mnt
[root@localhost ~]#
- 进入zhangsan用户文件数量功能
[root@localhost ~]# su - zhangsan
上一次登录:三 10月 23 14:24:42 CST 2019:1 上
[zhangsan@localhost ~]$ cd /mnt
[zhangsan@localhost mnt]$ touch test{1..6}.txt
touch: 无法创建"test6.txt": 超出磁盘限额
[zhangsan@localhost mnt]$ ls
test1.txt test2.txt test3.txt test4.txt test5.txt
[zhangsan@localhost mnt]$
- 进入zhangsan用户容量大小功能
[zhangsan@localhost mnt]$ dd if=/dev/zero of=/mnt/test1.txt bs=1M count=120
dd: 写入"/mnt/test1.txt" 出错: 超出磁盘限额
记录了101+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,0.140316 秒,747 MB/秒
[zhangsan@localhost mnt]$ ls -lh
总用量 100M
-rw-rw-r--. 1 zhangsan zhangsan 100M 11月 2 17:13 test1.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test2.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test3.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test4.txt
-rw-rw-r--. 1 zhangsan zhangsan 0 11月 2 17:09 test5.txt
[zhangsan@localhost mnt]$
注:必须在root用户中就给其他用户以权限。另外,Linux中的磁盘配额不会因为磁盘配额限制而不传送数据,而是创建硬限制下的最大容量和数量,一般在软限制下的最大限度,但是软限制时限一般是7天。当两个限制有一个超出之后,另一个就无法创建