第08章 存储管理2 (逻辑卷LVM)

1.逻辑卷LVM简介

(1)目的:

管理磁盘的一种方式,性质与基本磁盘无异

(2)特点:

随意扩张大小,缩减大小,快照备份。

(3)流程对比:

基本分区(MBR|GPT) ----> Filesystem ----> mount

逻辑卷   ----> Filesystem ----> mount

(4)工作原理:

名词

PV:物理卷(Physical volume)

VG:卷组(Volume Group)

LV:逻辑卷(Logical Volume)

PE:物理块(Physical Extent)

LE:逻辑块(Logical Extent)

图示:

2.创建LVM

(1)添加物理磁盘并查看

[root@server0 ~]# ll /dev/sd*   ----查看添加的物理磁盘
brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/sdc
brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/sdd

brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/sde

(2)创建物理卷PV

将物理磁盘,转换成物理卷-PV

[root@server0 ~]# pvcreate  /dev/sdc

查看PV信息

方法1:# pvscan

方法2 :  # pvs

方法3 :# pvdisplay

(3)创建卷组VG

创建卷组

[root@server0 ~]# vgcreate  vg1   /dev/sdc

查看卷组信息

第一种方法,查看卷组的摘要信息。卷组名,物理卷数量,逻辑卷数量,大小等。
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- 2.00g 2.00g

第二种方法,扫描卷组信息。
[root@server0 ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2

第三种方法。显示卷组详细信息。
[root@server0 ~]# 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 2.00 GiB                    //重点观察
PE Size 4.00 MiB                    //重点观察
Total PE 511                        //重点观察

Alloc PE / Size 0 / 0
Free PE / Size 511 / 2.00 GiB
VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V

(4)创建逻辑卷LV

[root@server0 ~]# lvcreate  -L  200M  -n  lv2  vg1

-L 是指 指定创建逻辑卷的大小位200M 

-n 是指定逻辑卷的名字为lv2

vg1是卷组的名字


查看逻辑卷LV

[root@server0 ~]# lvscan

ACTIVE '/dev/vg1/lv1' [400.00 MiB] inherit

ACTIVE '/dev/vg1/lv2' [200.00 MiB] inherit

(5)创建文件系统(格式化)并挂载


创建文件系统
[root@server0 ~]# mkfs.ext4  /dev/vg1/lv2
创建挂载点
[root@server0 ~]# mkdir  /mnt/lv2

方法一:手动挂载

挂载
[root@server0 ~]#mount /dev/vg1/lv2     /mnt/lv2

方法二:自动挂载

#vim  /etc/fstab

在/etc/fstab文件最后一行添加下列一行命令

/dev/vg1/lv1或UUID      /mnt/lv2       ext4      defaults     0     0

  磁盘分区 或UUID            挂载点        文件系统      属性    压缩  检测

#mount  -a    ----全部挂载( mount -a意思是将/etc/fstab的所有内容重新加载)

(6)查看挂载结果

# df   -hT


3.卷组VG管理

(1)==扩大VG vgextend==

第一步,创建PV。而后使用第二部,增加到VG中。

[root@server0 ~]# pvcreate /dev/sdd1

第二步:扩展VG(把创建的物理卷添加到卷组vg1中)

[root@server0 ~]# vgextend vg1 /dev/sdd1

第三步: 查看卷组的size变化

[root@server0 ~]# vgdisplay

VG Size 2.00 GiB                    //重点观察

PE Size 4.00 MiB                    //重点观察

Total PE 511                        //重点观察

  ==减小VG vgextend==

==减小VG ,命令虽少。但千万需要注意的是数据迁移

1.查看当前的VG中PV的使用情况

[root@server0 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sdc vg1 lvm2 a-- 2.00g 1.76g

/dev/sde vg1 lvm2 a-- 2.00g 2.00g

注意观察,PV的空间。一个是使用过的,一个是满的

2. pvmove,会将sdc中的数据,移动到sde中。
    [root@server0 ~]# pvmove /dev/sdc
                        /dev/sdc: Moved: 16.7%
                        /dev/sdc: Moved: 100.0%
                         可以看到移动过程。
3.再次查看,空间已经发生变化。
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree

  /dev/sda2  centos lvm2 a--  <19.00g     0

  /dev/sdc   vg1    lvm2 a--   <2.00g <2.00g

  /dev/sde   vg1    lvm2 a--   <2.00g  1.80g

4.vgreduce VG缩减。
    [root@server0 ~]# vgreduce vg1 /dev/sdd
     Removed "/dev/sdd" from volume group "vg1"

5.再次观察,VG中少了一个PV
    [root@server0 ~]# vgs
    VG #PV #LV #SN  Attr   VSize  VFree
    vg1   1      2     0 wz--n- 2.00g 1.80g
     观察,PV的数量变少了。

(2)逻辑卷lv扩容

1.查看VG空间。

[root@server0 ~]# vgs  -------------也可以使用  #df  -hT
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 1.88g 1.00g
请观察,VG是否有剩余空间。

2.扩容LV。

[root@server0 ~]# lvextend   -L   +100M   /dev/vg1/lv2

增加100M空间,给lv2

3.FS扩容---刷新一下,扩容更新 (把更改的大小写入到fs中,如果不执行这一步,扩容操作后用#df -hT 查看容量大小不会更新)

[root@server0 ~]# resize2fs   /dev/vg1/lv2

4.测试命令------->向逻辑卷中写东西

[root@server0 ~]# dd < /dev/zero  > /mnt/lv2/file.txt bs=2M count=300

  


逻辑卷lv减容

逻辑卷/dev/vg1/lv2,大小400M,并挂载到/mnt/lv2

需要先将lv卸载(umount),再进行减容操作。

1.首先查看磁盘使用情况-----#df  -hT

注意分区大小400M
/dev/mapper/vg1-lv2     ext4      380M  2.3M  356M    1% /mnt/lv2

2.卸载   ---------------#umount /dev/vg1/lv2

3.调整分区大小

    #e2fsck -f /dev/vg1/lv2 ------检测磁盘是否出错

    #resize2fs -p /dev/vg1/lv2 200M  -----把更新的大小的信息发送给FS文件系统进行刷新

4、设置空闲空间,减容

    #lvreduce -L 200M /dev/vg1/lv2

5、挂载上/mnt/lv2,查看磁盘使用情况
     #mount /dev/vg1/lv2  /mnt/lv2/
     #df -h
        看到分区大小已经200M
        /dev/mapper/vg1-lv2     ext4      186M  1.6M  171M    1% /mnt

   

注意

不要对已经挂载的LV进行兼容,会损坏文件系统。

千万注意,缩减后的LV大小,要大于存储数据的大小。

(重新格式化才能用)


更新XFS文件系统

如果您的文件系统,不是EXT4。那请用下列命令来更新XFS文件系统

 xfs的LVM不支持缩容,只可以扩容

 xfs文件系统扩容请注意,不同的文件系统,扩容指令不同。

    [root@server0 ~]# xfs_growfs /dev/vg1/lv1

4.命令归类汇总图

    VG减容时,数据迁移命令# pvmove    /dev/sdc(想迁移数据的磁盘) 

5.逻辑卷LVM卸载流程

lvm卸载流程  

 1.umount        #umount     /mnt/lv2(挂载点)
 2.删除LV。      #lvremove   /dev/vg1/lv2
 3.将PV从所在的VG中删除。

 4.删除VG。

6.LVM快照snapshot

(1)快照的目的

    快速-------备份数据。

(2)创建快照 (EXT4)

第一步:创建快照 卷(EXT4)

[root@server0 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2

或者这样看呢,创建LV,名字lv2-snap,根据lv2进行快照,大小128M

lvcreate -n lv2-snap  -s /dev/vg1/lv2  -L 128M           -s(snapshot快照)

注意:制作快照受VG大小的影响(VG要有足够的空间去创建这个快照)


第二步: 查询快照卷大小。

[root@server0 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 768.00m
lv2 vg1 owi-aos--- 512.00m
lv2-snap vg1 swi-aos--- 128.00m lv2 5.92

第三步:挂载快照卷,恢复数据(验证)
将快照卷挂载,拷贝出数据。可以用作回复数据使用了。
[root@server0 ~]# mkdir    /mnt/lv2-snap
[root@server0 ~]# mount -o  ro /dev/vg1/lv2-snap /mnt/lv2-snap/

注释:  -o ---options 来描述设备的挂载方式为只读readonly

            ro----readonly


注意:提示xfs文件系统快照注意事项
  
XFS:不识别uuid ,所以需要单独加上一个-o nouuid 来忽略掉。就可以使用xfs的快照了。
[root@server0 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/
                              挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据


7.交换分区管理 Swap

(1)作用:

"提升"内存的容量,防止OOM(Out Of Memory)

(2)swap大小

    推荐-------------设置交换分区大小为内存的2倍
    生产-------------大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
                              大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
                              大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。

(3)查看当前的交换分区

一、查看当前的交换分区

[root@server0 ~]# free   -m       ---->  m(以兆为单位查看)

total used free shared buff/cache available
Mem: 489 140 145 4 202 304

Swap: 0 0 0

二、增加交换分区----(可以是分区或者LVM或者File)

1. 准备分区

(准备将/dev/sde磁盘,划分为1G分区)

[root@server0 ~]# fdisk    /dev/sde        (按  t  转换分区的 ID 为82)
[root@server0 ~]# partprobe /dev/sde     ----刷新做好的分区
[root@server0 ~]# ll /dev/sde*       ----查看做好的分区
brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde
brw-rw----. 1 root disk 253, 17 12月 6 10:18 /dev/sde1

2.格式化

[root@server0 ~]# mkswap /dev/sde1


3.挂载

[root@server0 ~]# blkid /dev/sde1   ------查看/dev/sde1的UUID
/dev/sde1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap"

[root@server0 ~]# vim /etc/fstab   -------进开机默认启动文件,在最后一行添加

UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c"  swap   swap    defaults      0        0

                                                                                  挂载点  文件系统    属性   不压缩  不检测

4.查看

[root@server0 ~]# swapon -s
Filename          Type         Size      Used     Priority(优先级)
/dev/vdb1     partition    524284     0            1


扩展:对交换分区调优

1. swap分区的优先级(Priority)从高到低依次使用,最高32767,最低优先级是0

这样设置使得Linux并行的使用优先级相同的swap分区(Priority = 1的分区),这会大幅的提高对swap的读写。当这些分区满了,就会使用较低优先级swap分区(Priority = 0的分区)

2.多个交换分区分布在不同的磁盘
  挂载时,使用相同的优先级
[root@server0 ~]# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults,pri=1 0 0
UUID="ea5b1c77-e540-465c-9644-0d75457f8b45" swap swap defaults,pri=1 0 0
pri是优先级的意思,设置相同即可。

[root@server0 ~]# swapon -a   ------重新都挂载一遍,自动启动所有SWAP装置


[root@server0 ~]# swapon -s  -----查看设置的不同交换分区的优先级
Filename Type Size Used Priority
/dev/sdb1 partition 524284 0 1
/dev/sdc1 partition 524284 0 1


猜你喜欢

转载自blog.csdn.net/bijingzhao123/article/details/79858775