LVM邏輯卷管理

什么是LV邏輯卷?

邏輯卷是將一個或多個物理分區(qū)或塊設(shè)備整合在一起形成一種邏輯層。可以使獨立的硬盤,也可以是獨立的分區(qū)。

邏輯卷結(jié)構(gòu)視圖

邏輯卷生成拓?fù)鋱D

上圖畫的或許不是那么標(biāo)準(zhǔn),但是也能大體看出邏輯卷的結(jié)構(gòu)。下面從下而上簡單說明下:

1." ~]# " 表示命令提示符
2." #/ /# " 表示添加的注釋內(nèi)容

1.最下層是有一些硬盤或硬盤分區(qū)等組成;

2.下數(shù)第二層是物理卷(PV);pvcreate命令是生成物理卷的命令,后面跟那些物理分區(qū)或塊設(shè)備;

~]# pvcreate  /dev/sd{b1,c,d2,e}   #/ pvcreat 命令后面跟要做成物理卷的物理分區(qū)或塊設(shè)備 /#
~]# pvdisplay                      #/ "pvdisplay" 命令是詳細(xì)列出系統(tǒng)上面每個物理卷的信息 /#

3.下數(shù)第三層是卷組(VG);vgcreate命令是把物理卷做成卷組的命令,后面跟卷組名稱(按實際情況自定義)和物理卷名稱;

~]# vgcreate vg0 -s 16M /dev/sd{b1,c,d2,e}    #/ "vg0"是給卷組起的名稱;"-s 16M" 是PE值大小 /#
~]# vgdisplay                                 #/ 列出卷組的詳細(xì)信息 /#

4.最上面一層,就是我們的邏輯卷(LV);lvcreate是從卷組生成邏輯卷的命令,后面寫邏輯卷的名稱、邏輯卷的大小和卷組名稱;

~]# lvcreate -n lv0 -l 666 /dev/vg0      #/ "-n"后面跟邏輯卷的名稱;"-l"后面跟PE的個數(shù);最后是卷組名稱; /#
~]# lvcreate -n lv0 -L 20G /dev/vg0      #/ "-L"大寫的后面是邏輯卷容量大?。∕,G)/#
~]# lvdisplay                            #/ 列出邏輯卷的詳細(xì)信息 /#

上面差不多已經(jīng)講完了如何生成邏輯卷LV了!剩下的步驟不外乎就是:對LV做文件系統(tǒng)-->創(chuàng)建掛載點-->把LV掛載上去-->正常使用即可

~]# mkfs.ext4  /dev/vg0/lv0        #/ 特別注意:這里的邏輯卷名稱是LV的全名!為什么?請看lvdisplay結(jié)果 /#
~]# mkdir  /mnt/lv0                #/ 創(chuàng)建掛載邏輯卷的掛載點目錄 /#
~]# mount  /dev/vg0/lv0  /mnt/lv0  #/ 掛載邏輯卷 /#

為什么要用邏輯卷管理?

LVM的重點在于可以彈性調(diào)整文件系統(tǒng)的容量!或者說它有在線可擴(kuò)展性!

白話說的話,一個邏輯卷空間不夠了你可以從卷組中調(diào)出來一部分容量分給它;反過來也可以縮減它的空間大小等等可在線擴(kuò)展操作。

以下是從百度百科搬過來的關(guān)于LVM優(yōu)點的說法,說的很對我就借花獻(xiàn)佛了~

LVM與直接使用物理存儲相比,有以下優(yōu)點:
1. 靈活的容量
當(dāng)使用邏輯卷時,文件系統(tǒng)可以擴(kuò)展到多個磁盤上,你可以聚合多個磁盤或磁盤分區(qū)成單一的邏輯卷.
2.可伸縮的存儲池
你可以使用簡單的命令來擴(kuò)大或縮小邏輯卷大小,不用重新格式化或分區(qū)磁盤設(shè)備.
3.在線的數(shù)據(jù)再分配
你可以在線移動數(shù)據(jù),數(shù)據(jù)可以在磁盤在線的情況下重新分配.比如,你可以在線更換可熱插拔的磁盤.
4. 方便的設(shè)備命名
邏輯卷可以按你覺得方便的方式來起任何名稱.
5.磁盤條塊化.
你可以生成一個邏輯盤,它的數(shù)據(jù)可以被條塊化存儲在2個或更多的磁盤上.這樣可以明顯提升數(shù)據(jù)吞吐量
6.鏡像卷
邏輯卷提供方便的方法來鏡像你的數(shù)據(jù).
7.卷快照
使用邏輯卷,你可以獲得設(shè)備快照用來一致性備份或者測試數(shù)據(jù)更新效果而不影響真實數(shù)據(jù).

實驗:擴(kuò)展LV容量

面我做做一個在線擴(kuò)展LV的實驗體會體會LVM邏輯卷管理的特性還有相關(guān)命令的運用

1." ~]# " 表示命令提示符
2." #/ /# " 表示添加的注釋內(nèi)容

第一步:用lsblk命令查看有沒有空閑的硬盤可以讓我們拿來用于增加LV容量
~]#lsblk
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

#/---------此處省略----------/#

sdb                 8:16   0   20G  0 disk 
└─vgtest-lvtest   253:0    0   30G  0 lvm  
sdc                 8:32   0   50G  0 disk        #/ 發(fā)現(xiàn)sdc盤是50G的空間滿足實驗需求 /#
├─sdc1              8:33   0   10G  0 part 
│ └─vgtest-lvtest 253:0    0   30G  0 lvm  
└─sdc2              8:34   0    5G  0 part 
sdd                 8:48   0  100G  0 disk 
sr0                11:0    1  7.7G  0 rom  /run/media/root/CentOS 7 x86_64

看硬盤信息發(fā)現(xiàn)/dev/sdc硬盤滿足我們的實驗需求!


第二步:用fdisk命令增加一分區(qū)

在增加分區(qū)的時候需要注意標(biāo)記新增分區(qū)用途的類別

分區(qū)~

~]#fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p                               #/ 這是打印硬盤分區(qū)信息 /#

#/---------此處省略----------/#

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    20973567    10485760   8e  Linux LVM
/dev/sdc2        20973568    31459327     5242880   83  Linux

Command (m for help): u                              #/ "u"是切換扇區(qū)和柱面 /#
Changing display/entry units to cylinders (DEPRECATED!).

Command (m for help): n                              #/ "n"是開始分區(qū) /#                                              
Partition type:
   p   primary (2 primary, 0 extended, 2 free)       #/ 這里的"p"主分區(qū) /#
   e   extended                                      #/ 這里的"e"擴(kuò)展分區(qū) /#
Select (default p): p                                #/ 這里我分一個主分區(qū) /#
Partition number (3,4, default 3): 3                 #/ 選擇主分區(qū)編號為3 /#
First cylinder (1959-6527, default 1959): 
Using default value 1959
Last cylinder, +cylinders or +size{K,M,G} (1959-6527, default 6527): +10G    #/ 分10G大小 /#
Partition 3 of type Linux and of size 10 GiB is set

Command (m for help): t                              #/ 這是標(biāo)記分區(qū)類別 /#
Partition number (1-3, default 3): 3                 #/ 輸入第幾個分區(qū) /#
Hex code (type L to list all codes): L               #/ 大寫"L"可以查看各種分區(qū)類別編號 /#

#/---------此處省略----------/#
      
Hex code (type L to list all codes): 8e              #/ "8e"是用于邏輯卷的分區(qū)類別標(biāo)記 /#
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

#/---------此處省略----------/#

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1306    10485760   8e  Linux LVM
/dev/sdc2            1306        1959     5242880   83  Linux
/dev/sdc3            1959        3265    10488832   8e  Linux LVM 

Command (m for help): w                              #/ "w"是存盤退出 /#
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

步分區(qū)信息:用partprobe命令同步并用**`lsblk`**查看分區(qū)信息

~]#partprobe                                         #/ 把分區(qū)信息同步在內(nèi)存里 /#
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  
/dev/sr0 has been opened read-only.

~]#lsblk                                             #/ 查看硬盤信息,是否分區(qū)成功 /#
NAME              MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

#/---------此處省略----------/#

sdc                 8:32   0   50G  0 disk 
├─sdc1              8:33   0   10G  0 part 
│ └─vgtest-lvtest 253:0    0   30G  0 lvm  
├─sdc2              8:34   0    5G  0 part 
└─sdc3              8:35   0   10G  0 part 



第三步:用pvcreate命令把/dev/sd3生成物理卷并用pvdisplay查看物理卷詳細(xì)信息

生成物理卷~

~]#pvcreate /dev/sdc3
  Physical volume "/dev/sdc3" successfully created.

看物理卷詳細(xì)信息~

~]#pvdisplay 
  --- Physical volume ---

#/---------此處省略----------/#
   
  "/dev/sdc3" is a new physical volume of "10.00 GiB"     #/ 這里就是我們新生成的物理卷信息 /#
  --- NEW Physical volume ---
  PV Name               /dev/sdc3                         #/ 物理卷名稱 /#
  VG Name                                                 #/ 注意,這里的卷組信息還是空的,因為還沒劃分給卷組 /#
  PV Size               10.00 GiB                         #/ 新增物理卷大小 /#
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               81cHlt-osRn-I2Lc-faE6-36GN-ShzX-eHTfGJ

第四步:用vgextend命令把新的物理卷添加至卷組并用vgdisplay命令查看卷組詳細(xì)信息

始之前先看看卷組信息,可以可以做對比,這樣會更直接些。關(guān)鍵點我都有注釋的哦~

~]#vgdisplay 
  --- Volume group ---

#/---------此處省略----------/#

  VG Size               29.97 GiB                   #/ 卷組大小為30G /#
  PE Size               16.00 MiB
  Total PE              1918
  Alloc PE / Size       1918 / 29.97 GiB
  Free  PE / Size       0 / 0                       #/ 沒有可用PE /#
  VG UUID               kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9

現(xiàn)在我們開始用vdextend命令增加卷組容量~

vgextend命令用于動態(tài)擴(kuò)展LVM卷組,它通過向卷組中添加物理卷來增加卷組的容量。

~]#vgextend vgtest /dev/sdc3                       #/ 把物理卷"/dev/sdc3"添加至卷組"vgtest"中 /#
  Volume group "vgtest" successfully extended
~]#vgdisplay                                       #/ 查看卷組詳細(xì)信息 /#
  --- Volume group ---
  VG Name               vgtest
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               39.97 GiB                   #/ 可以看出眷組空間大小從之前只有30G變成目前的40G /#
  PE Size               16.00 MiB
  Total PE              2558
  Alloc PE / Size       1918 / 29.97 GiB
  Free  PE / Size       640 / 10.00 GiB             #/ 這里多出來10G的可用PE /#
  VG UUID               kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9

第五步:用lvextend命令增加邏輯卷的容量,并用lvdisplay查看邏輯卷詳細(xì)信息

樣在開始之前我們先看看邏輯卷信息,看看它大小是多少~

~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest        #/ 這才是邏輯卷的名稱 /#
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                5IMYwN-9JZS-4KB1-ofFq-WpVn-OVv6-XOCfhL
  LV Write Access        read/write
  LV Creation host, time CentOS7.Wxg, 2017-06-24 20:17:47 +0800
  LV Status              available
  # open                 0
  LV Size                29.97 GiB                  #/ 邏輯卷大小是30G /#
  Current LE             1918
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

現(xiàn)在我們開始用lvextend命令給邏輯卷增加容量就給他增加個5G容量吧

lvextend命令用于在線擴(kuò)展邏輯卷的空間大小,而不中斷應(yīng)用程序?qū)壿嬀淼脑L問

~]#lvextend -r -L +5G /dev/vgtest/lvtest            #/ 給LV新增加5G的容量,注意增加容量時要有"+"號 /#

      #/---------此處省略----------/#

~]#lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vgtest/lvtest
  LV Name                lvtest
  VG Name                vgtest
  LV UUID                5IMYwN-9JZS-4KB1-ofFq-WpVn-OVv6-XOCfhL
  LV Write Access        read/write
  LV Creation host, time CentOS7.Wxg, 2017-06-24 20:17:47 +0800
  LV Status              available
  # open                 0
  LV Size                34.97 GiB                 #/ 注意到?jīng)]有,從之前的30G變成現(xiàn)在的35G了 /#
  Current LE             2238
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

果還看不出差別的話,我回過頭去看看卷組的信息,看看自由PE值是否從10G減少到5G了~

~]#vgdisplay 
  --- Volume group ---
  VG Name               vgtest
               
 #/---------此處省略----------/#

  Alloc PE / Size       2238 / 34.97 GiB
  Free  PE / Size       320 / 5.00 GiB             #/ 注意到?jīng)]有,從之前的10G變成現(xiàn)在的5G了 /#
  VG UUID               kbBjKq-iFnA-fQSH-IK5w-EDFl-FFSL-uLSil9

結(jié)語:

過這個擴(kuò)展LV的實驗我們很直觀的體會到在線管理邏輯卷的優(yōu)勢,可以有效避免一些不必要的麻煩。

當(dāng)然邏輯卷管理除了擴(kuò)展LV還有很多其他功能,例如可以縮減LV避免不必要的空間浪費、可以移除PV及時更換老舊的硬盤、可以跨主機(jī)遷移LV不丟數(shù)據(jù)的前提下脫離老舊主機(jī)遷到新的主機(jī)上等等強(qiáng)大的功能都可以實現(xiàn)。在這我就不分別做實驗來證明啦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容