一、邏輯卷管理器(LVM)
1、什麼是邏輯卷管理器(LVM)
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對捲進行操作的抽象層。
LVM是建立在硬盤和分區之上的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,從而提高磁盤分區管理的靈活性。
LVM允許在多個物理設備間重新組織文件系統,包括重新設定文件系統的大小。
2、LVM結構圖
3、LVM術語
1)物理卷
物理卷(physical volume, PV)在LVM系統中處理最底層;
物理卷可以是整個硬盤、硬盤上的分區或從邏輯上一磁盤分區具有同樣功能的設備(如:RIAD);
物理卷是LVM的基本存儲邏輯塊,單核基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
2)物理區域
每個物理卷被劃分爲基本單元(稱爲Physical Extent,PE),具有唯一編號的PE是可以被LVM尋址的最小存儲單元,實際的數據都是存儲在PE中的;
PE的大小可根據實際情況在創建物理卷時指定,默認爲4MB;
PE的大小一旦確定將布恩那個改變,同一個卷組中的所有物理卷的PE的大小需要一致。
3)卷組
卷組(Volume Group,VG)建立在物理卷之上,它由一個或多個物理卷組成;
卷組創建之後,可以動態添加物理捲到卷組中,在卷組上可以創建一個或多個“LVM分區”(邏輯卷);
一個LVM系統中可以只有一個卷組,也可以包含多個卷組
LVM的卷組類似於非LVM系統中的物理硬盤。
4)邏輯卷
邏輯卷(Logical Volume,LV)建立在卷組之上,邏輯卷相當於分區,只不過給分區時通過卷組劃分,卷組中可以存在很多物理區域,可以指定多少物理區域劃分給一個邏輯卷,也可以之間指定大小來劃分,劃分爲邏輯卷後就相當於劃分了分區,僅需要對LV進行格式化文件系統即可。
5)邏輯區域
邏輯卷也被劃分爲可被尋址的基本單元(稱爲 Logical Extent,LE);
在同一個卷組中,LE的大小和PE時相同的,並且一一對應。
4、LVM與文件系統之間的關係
/boot 分區不能位於卷組中,因爲引導裝載程序無法從邏輯卷中讀取;
如果你想把 / 分區放在邏輯捲上,必須創建一個與卷組分離的 /boot 分區
5、LVM的存儲機制
LV時從VG中劃分出來的,因此LV中的PE可能來自多個PV。因此LV存儲數據時,主要有兩種機制:
1)線性模式(Linear):先將數據存儲在屬於同一個PV的PE,然後再向下一個PV中的PE;
2)條帶模式(Striped):將一份數據拆分爲多份,分別寫入該LV對應的每個PV中,類似於RAID 0,因此讀寫性能會優於線性模式。
儘管條帶模式讀寫性能會比較好,但是LVM的重點時擴展容量二非性能,如果要實現讀寫性能還是推薦採用RAID方式實現。
6、PV - VG - LV 的設備名
含義 | 設備名 | |
PV | 物理卷:磁盤或分區 | /dev/sda? |
VG | 卷組:一組磁盤和 / 或 分區 | /dev/<VG name>/(目錄) |
LV | 邏輯卷:LVM 分區 | /dev/<VG name>/<LV name> |
7、LVM 常用命令集
任務 | PV | VG | LV |
創建 | pvcreate | vgcreate | lvcreate |
刪除 | pvremove | vgremove | lvremove |
顯示信息 | pvs | vgs | lvs |
掃描列表 | pvscan | vgscan | lvscan |
顯示屬性 | pvdisplay | vgdisplay | lvdisplay |
更改屬性 | pvchange | vgchange | lvchange |
擴展 | vgextend | lvextend / lvresize | |
縮減 | vgreduce | lvreduce / lvresize |
8、創建LVM系統的步驟
第一步:對新硬盤分區----創建LVM類型的分區
新硬盤分區參考:https://www.cnblogs.com/qiuyu666/p/11843634.html
使用 lsblk 命令查看需要測試的磁盤 sdb5、sdc5、sdd5、sde5:
第二步:對創建好的LVM類型分區----創建物理卷
創建物理卷(Physical Volume,PV):
指 令:pvcreate
語 法:pvcreate [選項] [參數]
功能介紹:pvcreate指令用於將物理硬盤分區初始化爲物理卷,以便被LVM使用
主要參數: -f 強制創建物理卷,不需要用戶確認
-u 指定設備的UUID
-y 所有的問題都回答“yes”
-Z 是否利用前4個扇區
查看新建好的物理卷:
指令:pvs、pvscan、pvdiplay
第三步:將新創建的物理卷添加到卷組
將物理卷添加到卷組(Volume Group,VG):
指 令:vgcreate
語 法:vgcreate [選項] [參數]
功能介紹:vgcreate指令用於創建LVM卷組。
主要參數:-l 卷組上允許創建的最大邏輯卷數
-p 卷組中允許添加的最大物理卷數
-s 卷組上的物理卷的PE大小
查看添加好的卷組:
指令:vgs、vgscan、vgdisplay
第四步:在卷組中創建邏輯卷
創建邏輯卷(Logical Volume,LV):
指 令:lvcreate
語 法:lvcreate [選項] [參數]
功能介紹:lvcreate指令用於創建LVM的邏輯卷。
主要參數:-L 指定邏輯卷的大小,單位爲“kKmMgGtT”字節
-l 指定邏輯卷的大小(LE數)
-n 後面跟邏輯卷名
-s 創建快照
查看創建好的邏輯卷:lvs、lvscan、lvdisplay
對邏輯捲進行擴展:lvextend / lvresize
指 令:lvextend
語 法:lvextend [選項] [參數]
功能介紹:lvextend指令用於在線擴展邏輯卷的空間大小,而不中斷應用程序對邏輯卷的訪問。
主要參數:-L 指定邏輯卷的大小,單位爲“kKmMgGtT”字節
-l 指定邏輯卷的大小(LE數)
第五步:在邏輯卷中創建文件系統----格式化操作
指 令:mkfs
使用權限:超級使用者
使用方式:mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable]
說 明: 建立 linux 檔案系統在特定的 partition 上
參 數:device : 預備檢查的硬盤 partition,例如:/dev/sda1
-V : 詳細顯示模式
-t : 給定檔案系統的型式,Linux 的預設值爲 ext2
-c : 在製做檔案系統前,檢查該partition 是否有壞軌
-l bad_blocks_file : 將有壞軌的block資料加到 bad_blocks_file 裏面
block : 給定 block 的大小
-L:建立lable
補充說明:mkfs本身並不執行建立文件系統的工作,而是去調用相關的程序來執行。例如,若在"-t" 參數中指定ext2,則mkfs會調用mke2fs來建立文件系統.使用時如省略指定【塊數】參數,mkfs會自動設置適當的塊數。
第六步:創建掛載點(必須爲空目錄),對格式化的文件系統----進行掛載操作
添加開機自動掛載: echo '/dev/testvg/testlv1 /testlv ext4 defaults 0 0 ' >> /etc/fstab
第七步:檢查掛載是否成功----使用mount命令檢查
9、刪除LVM系統的操作
第一步:先卸載掛載點並刪除 /etc/fstab 中的掛載記錄
指 令:umount
功能說明:卸除文件系統。
語 法:umount [-ahnrvV][-t <文件系統類型>][文件系統]
補充說明:umount可卸除目前掛在Linux目錄中的文件系統。
參 數: -a 卸除/etc/mtab中記錄的所有文件系統。
-h 顯示幫助。
-n 卸除時不要將信息存入/etc/mtab文件中。
-r 若無法成功卸除,則嘗試以只讀的方式重新掛入文件系統。
-t<文件系統類型> 僅卸除選項中所指定的文件系統。
-v 執行時顯示詳細的信息。
-V 顯示版本信息。
-l 懶惰的卸載。從文件系統層次分離文件系統,在不繁忙的情況下清理所有對文件系統的引用
[文件系統] 除了直接指定文件系統外,也可以用設備名稱或掛入點來表示文件系統。
第二步:刪除邏輯卷(LV)
指 令:lvremove
語 法:lvremove [選項] [參數]
功能介紹:lvremove指令用於刪除指定LVM邏輯卷。
參 數:-f 強制刪除
第三步:刪除卷組(VG)
指 令:刪除卷組
語 法:vgremove [選項] [參數]
功能介紹:vgremove指令用戶刪除LVM卷組。
參 數:-f 強制刪除
第四步:刪除物理卷(PV)
指 令:刪除指定物理卷
語 法:pvremove [選項] [參數]
功能介紹:pvremove指令用於刪除一個存在的物理卷。
主要參數:-d 調試模式
-f 強制刪除
-y 對提問回答“yes”
二、磁盤陣列(Redundant Arrays of Inexpensive Disks,RAID)
RAID(Redundant Arrays of Inexpensive Disks)容錯式廉價磁盤陣列。RAID技術可以通過軟件或硬件實現,將多個磁盤整合成爲一個較大的磁盤裝置,該裝置不僅有存儲功能,還具有數據保護的功能。RAID具有多個不同的等級,每個等級的對整合後的磁盤實現不同的功能。常用等級有RAID5。
1、磁盤陣列(RAID)的功能
1)整合現有的磁盤空間
2)提高磁盤讀取效率
3)提供容錯性
2、磁盤陣列的種類
1)硬件磁盤陣列:使用磁盤陣列控制卡或使用dmraid工具管理。
2)軟件磁盤陣列:由Linux的內核仿真磁盤陣列的功能或使用mdadm工具管理。
在Linux中常用的是使用mdadm工具管理來實現軟件RAID
3、磁盤陣列的級別
1)RAID 0:RAID 0又稱爲Stripe或Striping,他代表了所有RAID級別中存儲性能最高的。RAID 0提高存儲性能的原理是把連續的數據分散到多個磁盤上存取,這樣系統有數據請求就可以被多個磁盤並行的執行,每個磁盤執行屬於它自己的那部分數據請求。這種數據上的並行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。同時RAID 0的安全行最低,如果一個磁盤失效,將影響整個數據。因此RAID 0不可應有於需要數據高可用行的關鍵應用。
2)RAID 1:RAID 1又稱Mirrored,通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據。當原始數據損損毀時,可直接從鏡像拷貝中讀取數據,因此RAID 1安全性高。但RAID 1是磁盤陣列中應用成本最高的。特點是當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據。
3)RAID 5:RAID 5是一種存儲性能、數據安全和存儲成本兼顧的存儲解決方案。RAID 5可以理解爲是RAID 0和RAID 1的折中方案。RAID 5可以爲系統提供數據安全保障,但保障程度要比Mirror低,而磁盤空間利用率要比Mirror高。RAID 5具有和RAID 0相近似的數據讀取速度,只是多了一個奇偶效驗信息,寫入數據的速度比對單個磁盤進行寫入操作稍慢。同時由於多個數據對應一個奇偶效驗信息,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較低,是目前運用較多的一種解決方案。
4、創建軟RAID
1)確認操作系統是否安裝mdadm包
對於沒有安裝的,自行安裝mdadm包。
2)對進行需要創建軟件的硬盤進行分區並設置分區類型爲RAID
硬盤分區詳見:https://www.cnblogs.com/qiuyu666/p/11843634.html
fdisk 命令只適合小於2T的硬盤,如大於2T則需要使用parted。
3)使用mdadm創建RAID
命 令:mdadm 用於建設,管理和監控RAID陣列
用 法:mdadm --create device options... 用未使用的設備,創建raid選項,
mdadm --assemble device options... 合併先前創建的raid陣列。
mdadm --build device options... 創建或合並沒有元數據的一個raid。
mdadm --manage device options... 對現有陣列進行更改
mdadm --misc options... devices 報告或修改各種MD相關設備的。
mdadm --grow options device 調整以激活的raid陣列
mdadm --incremental device 從一個raid中,添加/刪除設備
mdadm --monitor options... 監視一個或多個raid陣列的變化
mdadm device options... --manage的簡寫
mdadm --create 主要參數
--auto=yes :決定建立後面接的軟體磁盤陣列設備,亦即/ dev/md0的,/ dev/md1上...
--raid-devices=N :使用幾個磁盤 (partition) 作爲磁盤陣列的設備
--spare-devices=N :使用幾個磁盤作用磁盤陣列的備用設備
--level=[015] :設置磁盤陣列的等級,常用0,1,5
mdadm --manage 主要參數
--add :會將後面的設備加入到這個MD中!
--remove :會將後面的設備由這個MD中移除
--fail :會將後面的設備設定成爲出錯的狀態
該命令中各參數說明:
-C/--create:新建陣列
-a/--auto:允許mdadm創建設備文件,一般常用參數-a yes一次性創建
-l/--levle:RAID模式,支持RAID0/1/4/5/6/10等
-n/--raid-devices=:創建陣列中活動磁盤的數量
/dev/md0:陣列的設備名稱
/dev/sd{b,c,d}1:創建陣列中的物理磁盤分區信息
4)創建md0配置文件
5)格式化RAID分區
6)添加開機自動掛載
5、刪除軟RAID
1)卸載掛載點
2)停止軟件RAID設備
3)刪除RAID中的磁盤
4)刪除mdadm配置文件
5) 刪除/etc/fstab中的掛載信息
注:如果取消掛載設備的時候,顯示設備正忙,可以使用 fuser -mv /mnt/xxx 看看是哪個進程在使用這個掛載點,然後殺死這個進程即可。
以上即是在Linux中常見的兩種將多個磁盤合併容量的方法,僅供爲參考。在顯示環境還是推薦使用硬件RAID,數據無價。