第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


發佈了34 篇原創文章 · 獲贊 2 · 訪問量 4455
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章