1. 程式人生 > >Ubuntu LVM 分割槽實戰

Ubuntu LVM 分割槽實戰

一直想嘗試用LVM(Logical Volume Manager)分割槽實現動態分配….因為Linux的分割槽管理個人覺得還是很操蛋的,雖然軟體安裝和臨時檔案的目錄都做了嚴格的要求,但難免會出現分配了空間到時候出現某個掛載點空間不夠的現象。

插一句題外話:OPPO Find7 使用onmi ROM就可以支援LVM分割槽,不過我沒采用

目錄:

基本概念

1、 物理卷—–PV(Physical Volume)
物理卷在邏輯卷管理中處於最底層,它可以是實際物理硬碟上的分割槽,也可以是整個物理硬碟。

2、 卷組——–VG(Volumne Group)
卷組建立在物理卷之上,一個卷組中至少要包括一個物理卷,在卷組建立之後可動態新增物理捲到卷組中。一個邏輯卷管理系統工程中可以只有一個卷組,也可以擁有多個卷組。

3、 邏輯卷—–LV(Logical Volume)
邏輯卷建立在卷組之上,卷組中的未分配空間可以用於建立新的邏輯卷,邏輯卷建立後可以動態地擴充套件和縮小空間。系統中的多個邏輯卷要以屬於同一個卷組,也可以屬於不同的多個卷組。

4、 物理區域–PE(Physical Extent)
物理區域是物理卷中可用於分配的最小儲存單元,物理區域的大小可根據實際情況在建立物理卷時指定。物理區域大小一旦確定將不能更改,同一卷組中的所有物理卷的物理區域大小需要一致。

5、 邏輯區域―LE(Logical Extent)
邏輯區域是邏輯卷中可用於分配的最小儲存單元,邏輯區域的大小取決於邏輯卷所在卷組中的物理區域的大小。

6、 卷組描述區域—–(Volume Group Descriptor Area)
卷組描述區域存在於每個物理卷中,用於描述物理卷本身、物理卷所屬卷組、卷組中的邏輯卷及邏輯卷中物理區域的分配等所有資訊,卷組描述區域是在使用pvcreate建立物理卷時建立的。

操作環境

Xubuntu 18.04 LTS
Xfce 4

一、劃分LVM空間

首先為了簡單上手,先開啟GUI分割槽軟體GParted
這裡寫圖片描述
選擇要使用LVM動態管理的分割槽,格式化為lvm2pv(LVM To Physical Volume )物理分割槽格式。
這裡寫圖片描述
圖中/dev/sda2 是fat32格式,到時候做EFI分割槽用於UEFI引導。
此時我只做了一個lvm2pv分割槽,所以只有一個pv,可以使用sudo fdisk -l檢視
這裡寫圖片描述

我們還可以用 sudo pvscan 看看到底有哪些pv
這裡寫圖片描述

然後我們建立一個vg (Volume Group) 卷組,我個人的理解是:同一個vg中的空間大小是可以動態分配的,不論你插了多少個硬碟,只要他們在同一個vg中,就可以很簡單的進行空間的改動。(類似於raid)

vgcreate用法:vgcreate vg名字 需要加入這個vg的pv分割槽

sudo vgcreate disk_lvm /dev/sda1

這裡我建立了一個叫做disk_lvm的vg,並且加入了/dev/sda1這個pv分割槽
如果以後需要加入新的pv分割槽,可以使用:

sudo vgextend  vg名稱  pv分割槽

之後我們可以用vgdisplay看看這個vg的詳細內容

sudo vgdisplay

這裡寫圖片描述

二、對卷組進行分割槽

接下來的操作和普通的分割槽十分相似,只是我們現在是在一個vg裡面建立不同的lv (Logical Volume)邏輯卷。
我準備分為: / /home /usr /opt /swap

sudo lvcreate -L 分割槽大小+單位  -n  lv分割槽名稱   vg名稱  //建立分割槽
sudo lvremove 分割槽位置(/dev/disk_lvm/name)  //刪除分割槽

這玩意貌似沒有圖形化工具可以用…
分割槽名字一定要自己看到就能知道這是啥分割槽….不然到時候有你受的

sudo lvcreate -L 30g -n root disk_lvm  // 建立了30G待會掛載到 /
sudo lvcreate -L 50g -n usr disk_lvm   // 建立了50G待會掛在到 /usr
sudo lvcreate -L 50g -n home disk_lvm   // 建立了50G待會掛在到 /home
//再來一個swap吧....不過我個人習慣是 /swap 直接用一個檔案代替...不過lvm可以隨便調整大小,分一個也問題不大
sudo lvcreate -L 2g -n swap disk_lvm

這裡寫圖片描述
GParted裡面不會直接顯示lvm內的分割槽,但是能夠通過LVM所在的lvm2pv分割槽屬性中看到相應的邏輯卷
這裡寫圖片描述
當然,我們還是可以使用lvdisplay檢視資訊
這裡寫圖片描述

三、安裝系統

這個大家肯定都會了,就不再贅述了。網上教程也一大把。安裝的時候記得選擇其他選項
這裡寫圖片描述
不過我不知道如何選其他選項的時候能加密系統

進入磁碟分割槽介面:
這裡寫圖片描述
此時我們的硬碟分割槽已經不再是/dev/sda這種格式了,已經變成了/dev/mapper/vg名稱-lv名稱
順帶把之前空出來的200M點FAT32分割槽變成EFI分割槽(我是GPT+UEFI)
這裡寫圖片描述
這裡的/dev/sda1就是我們用作lvm2pv的磁碟,可以看到大小就是整個pv的大小
這裡寫圖片描述
和之前安裝一樣,根據需要設定不同的掛載點(因為大小可以隨時更改..所以我分的有點隨意)
這裡寫圖片描述

附錄.LVM常用命令

1、 物理卷命令

一般維護命令:

pvscan #在系統的所有磁碟中搜索已存在的物理卷
pvdisplay 物理卷全路徑名稱 #用於顯示指定物理卷的屬性。
pvdata 物理卷全路徑名稱 #用於顯示物理卷的卷組描述區域資訊,用於除錯目的。
pvchange Cx|--allocation {y|n} 物理卷全路徑名 #用於改變物理卷的分配許可設定物理卷的建立與刪除命令
pvcreate 裝置全路徑名 #用於在磁碟或磁碟分割槽上建立物理卷初始化資訊,以便對該物理捲進行邏輯卷管理。
pvmove 源物理卷全路徑我[目的物理卷全路徑名] #用於把某物理卷中的資料轉移到同卷組中其他的特刊卷中。

2、 卷組命令

一般維護命令

vgscan #檢測系統中所有磁碟
vgck [卷組名] #用於檢查卷組中卷組描述區域資訊的一致性。
vgdisplay [卷組名] #顯示卷組的屬性資訊
vgrename 原卷組名 新卷組名
vgchange -a y|n [卷組名] #改變卷組的相應屬性。是否可分配
vgchange -l 最大邏輯卷數 #卷組可容納最大邏輯卷數
vgchange -x y|n [卷組名] #卷是否有效
vgmknodes [卷組名|卷組路徑] #用於建立(重新建立)已有卷組目錄和其中的裝置檔案卷組配置的備份與恢復命令
vgcfgbackup [卷組名] #把卷組中的VGDA資訊備份到“/etc/lvmconf”目錄中的檔案
vgcfgrestore -n 卷組名 物理卷全路命名 #從備份檔案中必得指定物理卷的資訊卷組的建立與刪除命令
vgcreate 卷組名 物理卷全路徑名[物理卷全路徑名]
vgmove 卷組名

卷組的擴充與縮小命令

vgextend 卷組名 物理卷全路徑名[物理卷全路徑名]
vgreduce 卷組名 物理卷全路徑名[物理卷全路徑名]

卷組的合併與拆分

vgsplit 現有卷組 新卷組 物理卷全路徑名[物理卷全路徑名]

卷組的輸入與輸出命令

vgexport 卷組名
vgimport 卷組名 卷組中的物理卷[卷組中的物理卷]

3、 邏輯卷命令

一般命令

lvscan
lvdisplay 邏輯卷全路徑名[邏輯卷全路徑名]
lvrename 舊邏輯卷全路徑名 新邏輯卷全路徑名
lvrename 卷組名 舊邏輯卷名 新邏輯卷名
lvchange
e2fsadm -L +|- 邏輯卷增減量 邏輯卷全路徑名

邏輯卷的建立與刪除命令

lvcreate
lvremove

邏輯卷的擴充與縮小命令

lvextend -L|--size +邏輯卷大小增量 邏輯卷全路徑名
lvreduce q -L|--size +邏輯卷減小量 邏輯卷全路徑名

4、 邏輯卷管理命令

lvmdiskscan #檢測所有的SCSI、IDE等儲存裝置
lvmchange -R|--reset #復位邏輯卷管理器
lvmsadc [日誌檔案全路徑名] #收信邏輯卷管理器讀寫統計資訊,儲存到日誌檔案中。
lvmsar 日誌檔案全路徑名 #從lvmsadc命令生成的日誌檔案中讀取並報告邏輯卷管理器的讀寫統計資訊。