系统的磁盘管理方法
Linux和Windows都采用了MBR的磁盘管理方法,也就是先对一个硬盘进行分区,在对这个一般光盘进行格式化的方法;他们的区别是:Linux系统,是先进行磁盘分区,如果需要使用该分区,将其挂载到对应目录即可;而Windows则是自动将所有分区挂载好传统的磁盘管理的缺点:不方便进行分区扩充、容易导致文件系统崩溃、不适用于作为生产环境的服务器、拷贝分区的时候要求强制卸载磁盘分区,分区转移时耗费的时间长;
LVM磁盘管理技术是Linux环境下对磁盘管理的一种技术,是通过一个建立在硬盘和分区之上的逻辑层来提高磁盘分区的灵活性
物理卷(PV):就是真正的物理硬盘或物理分区
卷组(VG):是将多个物理硬盘整合到一起形成的逻辑卷组;也可以视作一块逻辑硬盘
逻辑卷(LV):卷组是一块逻辑硬盘,逻辑硬盘必须分区之后才能使用;逻辑卷可以视作是卷组的逻辑分区
物理扩展(PE):物理扩展是用来保存数据的最小单元
系统首先把物理硬盘合并为卷组;再通过卷组分区;将卷组(逻辑硬盘)分成逻辑分区(逻辑卷)进行使用;
LVM建立流程
把物理硬盘分成分区,也可以使用一整块的物理硬盘;把物理硬盘分区建立为物理卷(PV)也可以把整块物理硬盘都建立为物理卷;把刚刚划分的物理卷合为卷组(VG)卷组就已经可以动态的调整大小了,最后把卷组划分成逻辑卷,其中逻辑卷也是可以随时划分大小的
物理卷(PV)操作流程
pvcreate:创建物理卷
pvcreate命令在系统中一般用于创建物理卷;
语法结构
pvcreate /指定的物理硬盘分区
也可以通过:pvcreate /指定的物理硬盘分区{多个编号}、的形式同时创建多个物理卷
在使用这个命令的时候不要对存放Linux系统的盘符进行进行使用;我们在创建物理卷的时候都是对逻辑分区进行创建的;扩展分区(Extend)不能进行创建物理卷
[root@2017120008ls /]# pvcreate /dev/sda1
# 不能对系统存放的磁盘进行物理卷的创建
Can't open /dev/sda1 exclusively. Mounted filesystem?
Can't open /dev/sda1 exclusively. Mounted filesystem?
[root@2017120008ls /]# pvcreate /dev/sdb2
Device /dev/sdb2 excluded by a filter.
# 不能在扩展分区创建物理卷
[root@2017120008ls /]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created.
# 物理卷创建成功我们可以看到提示
[root@2017120008ls /]# pvcreate /dev/sdb{6,7}
Physical volume "/dev/sdb6" successfully created.
Physical volume "/dev/sdb7" successfully created.
# 可以用{}存放名称相同的对应盘符序号,从而实现一次性创建多个物理卷
[root@2017120008ls /]# pvscan
PV /dev/sda2 VG centos_promote lvm2 [<59.00 GiB / 4.00 MiB free]
PV /dev/sdb7 lvm2 [100.00 GiB]
PV /dev/sdb5 lvm2 [100.00 GiB]
PV /dev/sdb6 lvm2 [100.00 GiB]
Total: 4 [<359.00 GiB] / in use: 1 [<59.00 GiB] / in no VG: 3 [300.00 GiB]
# 可以使用 pvscan 命令对当前分区进行简单的查看,最后一行表示的是所有分区的总结
pvdisplay :显示创建的物理卷
pvdisplay 命令用于查看当前的分区情况
语法格式以及常用参数:
pvdisplay
pvdiplay /对应盘符的目录
参数 -s 查看精简信息(不过一般不用,都直接用pvscan)
查看我们刚刚创建的物理卷
[root@2017120008ls /]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos_promote
PV Size <59.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 15103
Free PE 1
Allocated PE 15102
PV UUID qTVdk0-qy1W-R21m-OqMQ-VLz7-r7S9-mokr45
"/dev/sdb7" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb7
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID w0yBZN-7PbP-XUe8-4gh5-6XAP-MxcA-JC3YMk
...# 信息较多,出示部分
# 也可以加上对应磁盘的盘符目录,查看某个磁盘的信息
[root@2017120008ls /]# pvdisplay /dev/sda2
--- Physical volume ---
PV Name /dev/sda2
VG Name centos_promote
PV Size <59.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 15103
Free PE 1
Allocated PE 15102
PV UUID qTVdk0-qy1W-R21m-OqMQ-VLz7-r7S9-mokr45
# 最后我们发现 参数 -s 不如 pvscan方便使用
[root@2017120008ls /]# pvdisplay -s
Device "/dev/sda2" has a capacity of 4.00 MiB
Device "/dev/sdb7" has a capacity of 100.00 GiB
Device "/dev/sdb5" has a capacity of 100.00 GiB
Device "/dev/sdb6" has a capacity of 100.00 GiB
[root@2017120008ls /]# pvscan
PV /dev/sda2 VG centos_promote lvm2 [<59.00 GiB / 4.00 MiB free]
PV /dev/sdb7 lvm2 [100.00 GiB]
PV /dev/sdb5 lvm2 [100.00 GiB]
PV /dev/sdb6 lvm2 [100.00 GiB]
Total: 4 [<359.00 GiB] / in use: 1 [<59.00 GiB] / in no VG: 3 [300.00 GiB]
pvremove :删除物理卷
pvremove命令常用于删除对应的物理卷
语法结构:
pvremove /对应盘符的目录名称
pvremove /对应盘符的目录名称{多个盘符序号}:和创建(pvcreate)一样也可以删除多个盘符
删除我们刚刚创建的物理卷
[root@2017120008ls /]# pvremove /dev/sdb5
Labels on physical volume "/dev/sdb5" successfully wiped.
[root@2017120008ls /]# pvremove /dev/sdb{6,7}
Labels on physical volume "/dev/sdb6" successfully wiped.
Labels on physical volume "/dev/sdb7" successfully wiped.
# 有成功删除的提示
卷组(VG)操作流程
vgcreate:创建卷组
vgcreate 命令的作用是将一个或多个物理卷整合成一个卷组;在创建卷组之前我们需要保证系统中有足够的除系统存放卷本身的物理卷(使用pvscan查看)需要注意的是,存放Linux的系统物理卷不能被划分到自定义卷组中、常用参数:-s:设定PE(最小物理存储单元)的大小、-l:最大逻辑卷数量、-p:允许存在的最大物理卷数量
语法结构:
vgcreate 卷组名称 /对应物理卷目录名称
vgcreate 卷组名称 /对应物理卷目录名称{多个参数逗号隔开}:实现将多个物理卷添加到一个卷组中
将我们刚刚创建物理卷添加到卷组之中
[root@2017120008ls /]# vgcreate vg1 /dev/sdb5
Volume group "vg1" successfully created
[root@2017120008ls /]# vgcreate vg2 -s 16M /dev/sdb{6,7}
# 将两个物理卷添加到一个卷组之中,并设定PE大小(添加多个物理卷也可以通过 : /物理卷一 /物理卷二 (空格隔开的方式进行添加))
Volume group "vg2" successfully created
[root@2017120008ls /]# vgscan
Reading volume groups from cache.
Found volume group "vg1" using metadata type lvm2
Found volume group "centos_promote" using metadata type lvm2
Found volume group "vg2" using metadata type lvm2
vgdisplay:查看创建的卷组
vgdisplay 这个命令可以用来查看我们创建的卷组;常见的参数 -s 卷组信息以短格式输出;vgdisplay可以查看对应卷组的简短信息,所以相对于pvdisplay用处又大了那么一点
语法格式:
vgdisplay [参数] 卷组名称
查看刚刚创建的卷组和某一个卷组的信息
[root@2017120008ls /]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size <100.00 GiB
PE Size 4.00 MiB
Total PE 25599
Alloc PE / Size 0 / 0
Free PE / Size 25599 / <100.00 GiB
VG UUID UnPMgz-ERzq-qt54-LMpO-92zP-5PAj-P9o1wC
--- Volume group ---
VG Name centos_promote
...显示部分
[root@2017120008ls /]# vgdisplay vg2
# 查看对应卷组的信息只要在命令后加上对应的卷组名称即可
--- Volume group ---
VG Name vg2
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 <199.97 GiB
PE Size 16.00 MiB
Total PE 12798
Alloc PE / Size 0 / 0
Free PE / Size 12798 / <199.97 GiB
VG UUID 19DLAw-7epb-93ZI-Fodi-CcaF-3NJx-yXIiff
[root@2017120008ls /]# vgdisplay -s vg2
# -s 参数可以用于查看对应卷组的简短信息
"vg2" <199.97 GiB [0 used / <199.97 GiB free]
同样:vgscan 命令也可以查看当前卷组使用情况的简短信息
vgremove:删除卷组
vgremove 命令的作用是删除指定的卷组
语法结构:
vgremove 卷组名称
删除我们刚刚创建的卷组
[root@2017120008ls /]# vgscan
# 首先查看我们当前的系统中存在多少卷组
Reading volume groups from cache.
Found volume group "vg1" using metadata type lvm2
Found volume group "centos_promote" using metadata type lvm2
Found volume group "vg2" using metadata type lvm2
[root@2017120008ls /]# vgremove vg1
# 删除卷组之后会有成功提示
Volume group "vg1" successfully removed
[root@2017120008ls /]# vgremove vg2
Volume group "vg2" successfully removed
注意:当删除含有逻辑卷的卷组的时候系统会提示是否删除对应卷组和对应逻辑卷,只有在两个都输入:y之后系统才会删除对应的卷组
逻辑卷(LV)操作流程
lvcreate:创建逻辑卷
lvcreate 命令作用是在一个指定的卷组中创建一块逻辑卷,前提是要求有指定的卷组;常用参数:-L:规定创建的逻辑卷大小(直接写大小就可以)、-l:通过PE划分逻辑卷的大小(后面接的数字是PE的个数)
语法结构:
lvcreate 卷组名称(没有指定命名的逻辑卷系统会进行自动命名)
在指定的卷组里创建逻辑卷
[root@2017120008ls /]# vgdisplay -s
# 首先我么需要查看系统中是否有对应的卷组
"centos_promote" <59.00 GiB [58.99 GiB used / 4.00 MiB free]
"vg2" 199.99 GiB [0 used / 199.99 GiB free]
"vg1" <100.00 GiB [0 used / <100.00 GiB free]
[root@2017120008ls /]# lvcreate -L 500M vg1
# 创建逻辑卷,并直接设定大小
Logical volume "lvol0" created.
[root@2017120008ls /]# lvcreate -l 150 vg1
# 创建逻辑卷,并通过PE值设定逻辑卷的大小数值是PE的个数(默认一个PE是4M)
Logical volume "lvol1" created.
[root@2017120008ls /]# lvcreate -L 500M -n lvtest vg1
# 创建一个逻辑卷,并设定名称
Logical volume "lvtest" created.
[root@2017120008ls /]# lvscan
ACTIVE '/dev/centos_promote/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos_promote/home' [<18.70 GiB] inherit
ACTIVE '/dev/centos_promote/root' [<38.30 GiB] inherit
ACTIVE '/dev/vg1/lvol0' [500.00 MiB] inherit
ACTIVE '/dev/vg1/lvol1' [600.00 MiB] inherit
ACTIVE '/dev/vg1/lvtest' [500.00 MiB] inherit
lvdisplay:查看逻辑卷
lvdisplay 命令可用于查看逻辑卷的详细信息,也可以用来查看指定逻辑卷的详细信息参数:-m:查看对应逻辑卷的挂载信息
语法结构:
lvdisplay 如果不加参数,直接显示逻辑卷信息
lvdisplay /逻辑卷所在目录名称 (显示的是对应逻辑卷的信息)
检查指定的逻辑卷,并查看指定逻辑卷的挂载信息:
[root@2017120008ls /]# lvdisplay -m /dev/vg1/lvtest
--- Logical volume ---
LV Path /dev/vg1/lvtest
LV Name lvtest
VG Name vg1
LV UUID iP4c8s-k6HV-xAHQ-18xm-DLA1-3XPc-5DMlig
LV Write Access read/write
LV Creation host, time 2017120008ls, 2020-04-15 09:59:27 +0800
LV Status available
# open 0
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:5
--- Segments ---
Logical extents 0 to 124:
Type linear
Physical volume /dev/sdb5 # 这里显示的是逻辑卷的物理挂载信息
Physical extents 275 to 399
管理逻辑卷大小
管理逻辑卷大小的常用命令是lvextend 命令和 lvreduce 命令分别表示逻辑卷大小的扩充和减少,其中lvextend命令表示逻辑卷大小扩充,常用参数 -L(指的是扩充的具体大小)、-l(指的是扩充的LE块数量);lvextend命令表示逻辑卷大小的减小,常用参数-L(指的是减小的具体大小)、-l(指的是减小的LE块数量)
语法结构:
lvextend [选项](大小/数量) /对应逻辑卷的目录名称
lvreduce [选项](大小/数量) /对应逻辑卷的目录名称
对我们指定的两个逻辑卷分别进行容量的增加和减少,并挂载对应的逻辑卷
[root@2017120008ls /]# lvscan
ACTIVE '/dev/centos_promote/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos_promote/home' [<18.70 GiB] inherit
ACTIVE '/dev/centos_promote/root' [<38.30 GiB] inherit
ACTIVE '/dev/vg1/lvol0' [5.00 GiB] inherit
ACTIVE '/dev/vg1/lvol1' [2.00 GiB] inherit
# 先使用lvscan的方式扫描磁盘,检查对应的逻辑卷大小
[root@2017120008ls /]# lvextend -L +2048M /dev/vg1/lvol1
Size of logical volume vg1/lvol1 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
Logical volume vg1/lvol1 successfully resized.
# 使用增加容量的命令,增加成功后会有成功提示
[root@2017120008ls /]# lvreduce -L -1024M /dev/vg1/lvol0
WARNING: Reducing active logical volume to 4.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lvol0? [y/n]: y
Size of logical volume vg1/lvol0 changed from 5.00 GiB (1280 extents) to 4.00 GiB (1024 extents).
Logical volume vg1/lvol0 successfully resized.
# 使用减少逻辑卷容量的命令,系统会询问是否减少对应的逻辑卷容量
[root@2017120008ls /]# lvscan
ACTIVE '/dev/centos_promote/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos_promote/home' [<18.70 GiB] inherit
ACTIVE '/dev/centos_promote/root' [<38.30 GiB] inherit
ACTIVE '/dev/vg1/lvol0' [4.00 GiB] inherit
ACTIVE '/dev/vg1/lvol1' [4.00 GiB] inherit
# 检查我们修改过后的逻辑卷容量,都是4GB
[root@2017120008ls /]# mkfs -t xfs /dev/vg1/lvol0
meta-data=/dev/vg1/lvol0 isize=512 agcount=4, agsize=262144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1048576, 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@2017120008ls /]# mkdir mnt/vg1
# 创建逻辑卷的挂载目录
[root@2017120008ls /]# mount /dev/vg1/lvol0 /mnt/vg1/
[root@2017120008ls /]# mount
检查结果:/dev/mapper/vg1-lvol0 on /mnt/vg1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
说明挂载成功