文章目录
- 前言
- 一:LVM概述
- 1.2:VG(Volume Group,卷组)
- 1.3:LV(Logical Volume,逻辑卷)
- 1.4:建立LVM分区管理机制的过程
- 二:管理LVM
- 2.1:PV物理卷管理
- 2.2:VG卷组管理
- 2.3:LV逻辑卷管理
- 三:LVM应用步骤
- 3.1:命令实操的演示
- 2.开始创建分区,同样的方法创建/dev/sdc
- 3.查看分区创建情况
- 4.创建物理卷
- 5.创建卷组
- 6.创建逻辑卷
- 7.格式化逻辑卷
- 8.创建挂载点,设置自动挂载
- 9.启用挂载
- 10.给逻辑卷扩容10G
- 11.使用xfs_growfs命令使Linux系统重新识别文件系统大小
- 四:磁盘配额
- 五. 创建pv ,vg ,lv 并永久挂载实验全过程
- 六.系统磁盘配额的设置 ,编辑用户和组帐号的配额设置实验全过程
前言
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制
每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精评估LVM和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。
虽然有很多动态调整磁盘的工具可以使用,例如Partition Magic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解 决问题。
因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,Logical Volume Manager)机制就是一个完美的解决方案。
一:LVM概述
在安装CentOS 系统的过程中选择自动分区,就会默认采用LVM分区方案。不需要再进行手动配置
动态调整磁盘容量,从而提高磁盘管理的灵活性
PS:“/boot”分区用于存放引导文件,不能基于LVM创建,必须独立出来
图形化管理界面:system-config
1.1:PV(Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。
创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(Physical Extent,PE),从而构成物理卷
物理卷一般直接使用设备文件名称,如/dev/sdb1 , /dev/sdb1, /dev/sdd等
对于转换成物理卷的普通分区,建议先使用fdisk工具将分区类型的ID标记号改为“8e”(8e表示LVM逻辑卷),若是整块硬盘,可以将所有磁盘空间划分为一个主分区后再做相对应调整
1.2:VG(Volume Group,卷组)
卷组:由一个或多个物理卷组成一个整体
在卷组中可以动态的添加或移除物理卷
许多个物理卷可以分别组成不同的卷组,卷组的名称由用户自定义
1.3:LV(Logical Volume,逻辑卷)
逻辑卷建立在卷组之上,与物理卷没有直接关系
对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷
使用mkfs等工具在逻辑卷上创建文件系统以后,就可以挂载到Linux系统中的目录下使用
1.4:建立LVM分区管理机制的过程
二:管理LVM
LVM管理命令主要包括三大类
PV物理卷管理
VG卷组管理
LV逻辑卷管理
对应的命令程序文件分别以“PV”“VG”“LV”开头
几个主要命令的格式
pvcreate 设备名1 [设备名2 ... ...]
vgcreate 卷组名 物理卷名1 物理卷名2
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvextend -L +大小 /dev/卷组名/逻辑卷名
2.1:PV物理卷管理
2.1.1:pvcreate命令
pvcreate用于将分区或整个硬盘转换为物理卷,主要是添加LVM属性并划分PE存储单元
该命令需要使用硬盘或分区的设备文件作为参数
例如
[root@localhost ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
2.1.2:pvscan命令
pvscan命令用于扫描系统中的所有物理卷,并输出相关信息。
例如
[root@localhost ~]# pvscan
PV /dev/sdd1 lvm2 [5.00 GiB]
Total: 3 [44.99 GiB] / in use: 2 [39.99 GiB] / in no VG: 1 [5.00 GiB]
2.1.3:pvdisplay命令
pvdisplay命令用于显示物理卷的详细信息
需要使用指定的物理卷作为命令参数,默认时将显示所有物理卷信息
例如
[root@localhost ~]# pvdisplay /dev/sdd1
"/dev/sdd1" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
2.1.4:pvremove命令
pvremove命令用于将物理卷还原成普通分区或磁盘,不再用于LVM体系
被移除的物理卷将无法被pvscan命令识别
例如
[root@localhost ~]# pvremove /dev/sd[b-c]1
Labels on physical volume "/dev/sdb1" successfully wiped.
Labels on physical volume "/dev/sdc1" successfully wiped.
[root@localhost ~]# pvscan
No matching physical volumes found
2.2:VG卷组管理
2.2.1:vgcreate命令
vgcreate命令用于将一个或多个物理卷创建为一个卷组
第一个命令参数用于设置新卷组的名称。然后依次指定需要加入到该卷组的物理卷作为参数
vgcreate命令基本格式
root@localhost ~]# vgcreate 卷组名称 物理卷
例如
[root@localhost ~]# vgscan 123 /dev/sdb1 /dev/sdd1
Command does not accept argument: 123.
2.2.2:vgscan命令
vgscan命令用于扫描系统中已建立的LVM卷组及相关信息
例如
[root@localhost ~]# vgscan
Reading volume groups from cache.
Found volume group "123" using metadata type lvm2
2.2.3:vgdisplay命令
vgdisplay命令用于显示系统中各卷组的详细信息
需要指定卷组名称作为命令参数(未指定卷组名称时将显示所有卷组的信息)
命令格式同pvdisplay
例如
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name 123
System ID
2.2.4:vgremove命令
vgremove命令用于删除指定的卷组,指定卷组名称作为参数即可
删除时应确保该卷组中没有正在使用的逻辑卷
例如
[root@localhost ~]# vgremove 123
Volume group "123" successfully removed
2.2.5:vgextend命令
vgextend命令用于扩展卷组的磁盘空间
当建立了新的物理卷,并需要将其添加到已有的卷组中时,就可以使用vgextend命令
vgextend命令第一个参数为需要扩展容量的卷组名称,其后为需要添加到该卷组中的各物理卷
例如
[root@localhost ~]# vgextend 123 /dev/sdd1
Volume group "123" successfully extended
2.2.6:vgreduce命令
vgreduce命令:从卷组中删除物理卷
vgreduce指令通过删除LVM卷组中的物理卷来减少卷组容量。
删除删除卷组中丢失的物理卷,使卷组恢复正常状态
vgreduce命令格式
vgreduce [选项] [参数]
例如
[root@localhost ~]# vgreduce 123 /dev/sdd1
Removed "/dev/sdd1" from volume group "123"
2.3:LV逻辑卷管理
2.3.1:lvcreate命令
lvcreate命令用于从指定的卷组中分割空间,以创建新的逻辑卷
需要指定逻辑卷大小,名称和所在的卷组名称作为参数
逻辑卷创建好以后,可以通过“/dev/卷组名/逻辑卷名”形式的设备文件进行访问(或/dev/mapper/卷组名-逻辑卷名)
lvcreate命令基本格式
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
例如
[root@localhost ~]# lvcreate -L 10G -n 111 123
Logical volume "111" created.
[root@localhost ~]# ls /dev/123/111
/dev/123/111 //逻辑卷111的连接文件
2.3.2:lvscan命令
lvscan命令用于扫描系统中已建立的逻辑卷及相关信息
例如
[root@localhost ~]# lvscan
ACTIVE '/dev/123/111' [10.00 GiB] inherit
2.3.3:lvdisplay命令
lvdisplay命令用于显示逻辑卷的详细信息
需要指定逻辑卷的设备文件作为参数,也可以使用卷组名作为参数(显示该卷组中的所有逻辑卷信息)
不指定参数则显示所有,同pvdisplay和vgdisplay
例如
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/123/111
LV Name 111
2.3.4:lvextend命令
lvextend命令用于动态扩展逻辑卷的空间,当目前使用的逻辑卷空间不足时,可以从所在卷组中分割额外的空间进行扩展
需要指定增加的容量大小和逻辑卷文件位置
前提是该卷组中还有尚未分配的磁盘空间,否则需要先扩展卷组容量
挂载文件系统后扩容,需要执行以下命令才能被系统识别
xfs格式的扩容需要输入这条命令
xfs_growfs /dev/卷组名/逻辑卷名
ext 4 格式的扩容需要输入这条命令
resize2fs /dev/卷组名/逻辑卷名
xfs 只支持扩容,不支持减少
ext 4 的更新形式。可以reduce
lvextend命令基本格式
lvextend -L +大小 /dev/卷组名/逻辑卷名
例如
[root@localhost ~]# lvextend -L +10G /dev/123/111
Size of logical volume 123/111 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
Logical volume 123/111 successfully resized.
2.3.5:lvremove命令
lvremove命令用于删除指定的逻辑卷
直接使用逻辑卷的设备文件作为参数即可
例如
[root@localhost ~]# lvremove /dev/123/111
Do you really want to remove active logical volume 123/111? [y/n]: y
Logical volume "111" successfully removed
Volume group "111" not found
Cannot process volume group 111
2.3.6:lvreduce命令
lvreduce命令用于减少LVM逻辑卷占用的空间大小。
使用lvreduce命令收缩逻辑卷的空间大小有可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。
例如
[root@localhost ~]# lvreduce -L -5G /dev/123/111
WARNING: Reducing active logical volume to 10.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce 123/111? [y/n]: y
Size of logical volume 123/111 changed from 15.00 GiB (3840 extents) to 10.00 GiB (2560 extents).
Logical volume 123/111 successfully resized.
三:LVM应用步骤
xfs 只支持扩容,不支持减少
ext 4 的更新形式。可以reduce
3.1:命令实操的演示
VMware软件中,在centos 7系统中添加两块磁盘,我们开始实操。
查看磁盘是否添加成功
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c1f00
扇区大小(逻辑/物理):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 字节
2.开始创建分区,同样的方法创建/dev/sdc
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x50f1e234 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e //分区ID改成8e,8e是lvm格式,我们保持前后格式相同
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3.查看分区创建情况
[root@localhost ~]# fdisk -l
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c1f00
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 12584959 6291456 83 Linux
/dev/sda2 12584960 54527999 20971520 83 Linux
/dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris
/dev/sda4 62916608 83886079 10484736 5 Extended
/dev/sda5 62918656 83886079 10483712 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x50f1e234
设备 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
磁盘标识符:0x6a90762a
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 8e Linux LVM
4.创建物理卷
[root@localhost ~]# pvcreate /dev/sd[b-c]1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvscan '//查看物理卷'
PV /dev/sdc1 lvm2 [<20.00 GiB]
PV /dev/sdb1 lvm2 [<20.00 GiB]
Total: 2 [<40.00 GiB] / in use: 0 [0 ] / in no VG: 2 [<40.00 GiB]
5.创建卷组
[root@localhost ~]# vgcreate mail_stor /dev/sd[b-c]1
Volume group "mail_stor" successfully created
[root@localhost ~]# vgscan '//扫描卷组'
Reading volume groups from cache.
Found volume group "mail_stor" using metadata type lvm2
[root@localhost ~]# vgdisplay '//查看卷组详细信息'
--- Volume group ---
VG Name mail_stor
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID iEKi0I-hg0i-it0a-cOwe-DfPj-FkXs-fnSP4N
6.创建逻辑卷
[root@localhost ~]# lvcreate -L 20G -n mbox mail_stor
Logical volume "mbox" created.
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/mail_stor/mbox
LV Name mbox
VG Name mail_stor
LV UUID VXD0B0-wxqV-wXgk-b7N4-GEPE-c1au-u6nGBs
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-11-04 14:45:59 +0800
LV Status available
open 0
LV Size 20.00 GiB
Current LE 5120
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
7.格式化逻辑卷
[root@localhost 1]# mkfs.xfs /dev/mail_stor/mbox
meta-data=/dev/mail_stor/mbox 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
8.创建挂载点,设置自动挂载
[root@localhost 1]# mkdir mailbox
[root@localhost 1]# vim /etc/fstab
9.启用挂载
[root@localhost 1]# mount -a
[root@localhost 1]# df -hT '//查看是否挂载成功'
10.给逻辑卷扩容10G
[root@localhost 1]# lvextend -L +10G /dev/mail_stor/mbox
Size of logical volume 1/11 changed from 20.00 GiB (5120 extents) to 30.00 GiB (7680 extents).
Logical volume 1/11 successfully resized.
11.使用xfs_growfs命令使Linux系统重新识别文件系统大小
[root@localhost 1]# xfs_growfs /dev/mail_stor/mbox
四:磁盘配额
磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单机用户来说意义不大。
4.1:磁盘配额概述
4.1.1:实现磁盘限额的条件
需要Linux内核支持
安装xfsprogs与quota软件包
quota软件包在7.0版本自动加入到xfsprogs,所以只需要安装xfsprogs就可以。
4.1.2:Linux磁盘限额的特点
作用范围:针对指定的文件系统(分区)
限制对象:用户账号,组账号
限制类型:磁盘容量,文件数量
限制方法:软限制,硬限制
软限制:可以超出限制,但是有时限期,如时限7天,超出时间就将多余的删除
软限制 小于等于 硬限制
4.1.3:磁盘配额步骤
临时设置(大部分都是通过命令实现),永久设置(都是通过源码文件中配置)
大部分命令设置都是临时生效,重启失效
配置文件是永久生效
编辑用户和组账号的配额设置:组的配额是固定的,
4.1.4:启动磁盘配额支持
添加usrquota,grpquota挂载参数
临时设置需要加上 -o 参数
4.2:磁盘配额管理
4.2.1:编辑用户和组账号的配额设置
使用xfs_quota命令编辑配额设置
基本格式
xfs_quota -x -c'limit -u bsoft =N bhard=N isoft=N ihard=N 用户名'挂载点
常用选项
-u //user
-g //group
-x //专家模式
-c //命令(command)
限制字段
bsoft //容量软限制
bhard //容量硬限制 (block 块)
isoft //数量软限制
ihard //数量硬限制 (inode 节点)
4.2.2:验证磁盘配额功能
切换到设置配额的分区(挂载目录)
创建指定数量的文件:使用touch命令,或cp命令
创建指定容量的文件:使用dd命令,或cp命令 (dd命令等同于复制,一般用于验证)
4.2.3:查看配额使用情况
命令格式
xfs_quota -x -c 'report 选项’挂载点
report常用选项
-a //all 所有
-i //节点,数量
-b //block 块,容量
-u //user
-g //group
查看所有用户配额
[root@localhost ~]# xfs_quota -x -c ‘report -a’ /挂载点
查看用户配额信息,看容量信息
[root@localhost ~]# xfs_quota -c ‘quota -uv 用户名’ /挂载点
查看用户配额信息,看节点信息
[root@localhost ~]# xfs_quota -c ‘quota -iuv 用户名’ /挂载点
连续复制文件(/mail/demo01.txt是自己刚刚创建的文件),每次复制1M,连续复制N次
[root@localhost ~]# dd if=/dev/zero of=/mail/demo01.txt bs=1M count=80
3.3:磁盘配额命令实操
mount 查看挂载信息
rpm -q xfsprogs 查看xfsprogs是否安装
五. 创建pv ,vg ,lv 并永久挂载实验全过程
六.系统磁盘配额的设置 ,编辑用户和组帐号的配额设置实验全过程