【Linux命令】磁盘管理(逻辑卷与物理卷)

系统的磁盘管理方法

Linux和Windows都采用了MBR的磁盘管理方法,也就是先对一个硬盘进行分区,在对这个一般光盘进行格式化的方法;他们的区别是:Linux系统,是先进行磁盘分区,如果需要使用该分区,将其挂载到对应目录即可;而Windows则是自动将所有分区挂载好传统的磁盘管理的缺点:不方便进行分区扩充、容易导致文件系统崩溃、不适用于作为生产环境的服务器、拷贝分区的时候要求强制卸载磁盘分区,分区转移时耗费的时间长;

LVM磁盘管理技术是Linux环境下对磁盘管理的一种技术,是通过一个建立在硬盘和分区之上的逻辑层来提高磁盘分区的灵活性

物理卷(PV):就是真正的物理硬盘或物理分区
卷组(VG):是将多个物理硬盘整合到一起形成的逻辑卷组;也可以视作一块逻辑硬盘
逻辑卷(LV):卷组是一块逻辑硬盘,逻辑硬盘必须分区之后才能使用;逻辑卷可以视作是卷组的逻辑分区
物理扩展(PE):物理扩展是用来保存数据的最小单元


1586906683892.png

系统首先把物理硬盘合并为卷组;再通过卷组分区;将卷组(逻辑硬盘)分成逻辑分区(逻辑卷)进行使用;

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)
说明挂载成功

你可能感兴趣的:(【Linux命令】磁盘管理(逻辑卷与物理卷))