每一個Linux使用者在安裝Linux時都會遇到這樣的困境:在爲系統分區時,如何精確評估和分配各個硬盤分區的容量,由於系統管理員不但要考慮到當前某個分區須要的容量,還要預見該分區之後可能須要的容量的最大值。由於若是估計不許確,當遇到某個分區不夠用時管理員可能甚至要備份整個系統、清除硬盤、從新對硬盤分區,而後恢復數據到新分區。web
雖然如今有不少動態調整磁盤的工具可使用,例如Partation Magic等等,可是它並不能徹底解決問題,由於某個分區可能會再次被耗盡;另一個方面這須要從新引導系統才能實現,對於不少關鍵的服務器,停機是不可接受的,並且對於添加新硬盤,但願一個能跨越多個硬盤驅動器的文件系統時,分區調整程序就不能解決問題。服務器
所以完美的解決方法應該是在零停機前提下能夠自如對文件系統的大小進行調整,能夠方便實現文件系統跨越不一樣磁盤和分區。幸運的是Linux提供的邏輯盤卷管理(LVM,Logical Volume Manager)機制就是一個完美的解決方案。網絡
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是創建在硬盤和分區之上的一個邏輯層,來提升磁盤分區管理的靈活性。經過LVM系統管理員能夠輕鬆管理磁盤分區,如:將若干個磁盤分區鏈接爲一個整塊的卷組(volume group),造成一個存儲池。管理員能夠在卷組上隨意建立邏輯卷組(logical volumes),並進一步在邏輯卷組上建立文件系統。管理員經過LVM能夠方便的調整存儲卷組的大小,而且能夠對磁盤存儲按照組的方式進行命名、管理和分配,例如按照使用用途進行定義:"development"和"sales",而不是使用物理磁盤名"sda"和"sdb"。並且當系統添加了新的磁盤,經過LVM管理員就沒必要將磁盤的文件移動到新的磁盤上以充分利用新的存儲空間,而是直接擴展文件系統跨越磁盤便可。app
============工具
前面談到,LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上創建文件系統。首先咱們討論如下幾個LVM術語:佈局
· 物理存儲介質(The physical media)spa
這裏指系統的存儲設備:硬盤,如:/dev/hda一、/dev/sda等等,是存儲系統最低層的存儲單元。code
· 物理卷(physical volume)server
物理卷就是指硬盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。blog
· 卷組(Volume Group)
LVM卷組相似於非LVM系統中的物理硬盤,其由物理卷組成。能夠在卷組上建立一個或多個"LVM分區"(邏輯卷),LVM卷組由一個或多個物理卷組成。
· 邏輯卷(logical volume)
LVM的邏輯卷相似於非LVM系統中的硬盤分區,在邏輯卷之上能夠創建文件系統(好比/home或者/usr等)。
· PE(physical extent)
每個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具備惟一編號的PE是能夠被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。
· LE(logical extent)
邏輯卷也被劃分爲被稱爲LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,而且一一對應。
首先能夠看到,物理卷(PV)被由大小等同的基本單元PE組成。
一個卷組由一個或多個物理卷組成。
從上圖能夠看到,PE和LE有着一一對應的關係。邏輯卷創建在卷組上。邏輯卷就至關於非LVM系統的磁盤分區,能夠在其上建立文件系統。
下圖是磁盤分區、卷組、邏輯卷和文件系統之間的邏輯關係的示意圖:
和非LVM系統將包含分區信息的元數據保存在位於分區的起始位置的分區表中同樣,邏輯卷以及卷組相關的元數據也是保存在位於物理捲起始處的VGDA(卷組描述符區域)中。VGDA包括如下內容:PV描述符、VG描述符、LV描述符、和一些PE描述符 。
系統啓動LVM時激活VG,並將VGDA加載至內存,來識別LV的實際物理存儲位置。當系統進行I/O操做時,就會根據VGDA創建的映射機制來訪問實際的物理位置。
==========
首先肯定系統中是否安裝了lvm工具:
[root@physical /]# rpm –qa | grep lvm
若是命令結果輸出rpm版本,那麼說明系統已經安裝了LVM管理工具;若是命令沒有輸出則說明沒有安裝LVM管理工具,則須要從網絡下載或者從光盤裝LVM rpm工具包。
【注意】安裝了LVM的RPM軟件包之後,要使用LVM還須要配置內核支持LVM。RedHat默認內核是支持LVM的,若是須要從新編譯內核,則須要在配置內核時,進入Multi-device Support (RAID and LVM)子菜單,選中如下兩個選項:
Multiple devices driver support (RAID and LVM)
<*> Logical volume manager (LVM) Support
而後從新編譯內核,便可將LVM的支持添加到新內核中。
爲了使用LVM,要確保在系統啓動時激活LVM,幸運的是在RedHat7.0之後的版本,系統啓動腳本已經具備對激活LVM的支持,在/etc/rc.d/rc.sysinit中有如下內容:
# LVM initialization if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then $"Setting up Logical Volume Management:" action /sbin/vgscan && /sbin/vgchange -a y fi
其中關鍵是兩個命令,vgscan命令實現掃描全部磁盤獲得卷組信息,並建立文件卷組數據文件/etc/lvmtab和/etc/lvmtab.d/*;vgchange -a y命令激活系統全部卷組。
=========
(1) 對磁盤sdb進行分區:
命令:fdisk /dev/sdb
若是不知道 fdisk 裏面的具體操做,可輸入 m 進行幫助。最經常使用的是 n(新建)d(刪除)p(打印)q(退出)t(修改系統標識符)w(寫入並退出)
[root@QiMingServer /]# fdisk /dev/sdb
(2) 改變系統標識符:
輸入 t 改變分區1的屬性
輸入 L 查看有個屬性對應的命令
輸入 8e 改變分區1爲 Linux LVM格式
輸入 p 打印分區狀況,發現創建的分區 /dev/sdb1 爲 Linux LVM 格式
再次使用 fdisk -l 查看系統內磁盤狀況發現 /dev/sdb上已有一個 Linux LVM 格式的 /dev/sdb1分區
(3) 使kernel從新讀取分區表
命令:partprobe
對於 /dev/sda 的警告不予理會
[root@QiMingServer /]# partprobe
===============
建立PV物理卷:
掃面系統PV:pvscan
建立PV:pvcreate /dev/sdb1
查看PV:pvdisplay
這樣咱們就建立了一個1TB的PV,注意 Allocatable 爲 NO
【注意】如下內容屬於獨立部分,即經過外掛存儲爲已有卷組擴容。
啓明服務器安裝系統的時候,建立的卷組vg_qimingserver
查看卷組名
物理卷加如卷組
把上面建立的物理卷/dev/sdb1加入到已經有的邏輯卷組(vg_qimingserver)
這裏要注意,1T的硬盤空間轉換爲邏輯卷後,可用的空間大小可能會小於1T,此時最好用 vgdisplay vg_qimingserver 看看還剩餘多少空間,看 free那個選項,格式以下:
擴展邏輯卷
本次擴展的邏輯卷是vg_qimingserver-vg_venusbig_lv_home
邏輯卷都放在/dev/mapper
· 如今爲vg_qimingserver-vg_venusbig_lv_home邏輯卷增長剛纔咱們新加入的空間
[root@QiMingServer /]# lvextend -L +1T /dev/mapper/vg_qimingserver-vg_venusbig_lv_home
· 此時加好後還不會生效,還要執行一條命令
[root@QiMingServer /]# resize2fs -p /dev/mapper/vg_qimingserver-vg_venusbig_lv_home
【注意】擴展邏輯卷,是將物理卷直接加入邏輯卷組,而後將加入邏輯卷組的物理卷的空間(free),擴充到原邏輯卷中。
=========
建立卷組的命令爲vgcreate
# vgcreate web_document /dev/hdb1 /dev/hdb
vgcreate命令第一個參數是指定該卷組的邏輯名:web_document。後面參數是指定但願添加到該卷組的全部分區和磁盤。vgcreate在建立卷組 web_document 之外,還設置使用大小爲4 MB的PE(默認爲4MB),這表示卷組上建立的全部邏輯卷都以 4 MB 爲增量單位來進行擴充或縮減。因爲內核緣由,PE大小決定了邏輯卷的最大大小,4 MB 的PE決定了單個邏輯卷最大容量爲 256 GB,若但願使用大於256G的邏輯卷則建立卷組時指定更大的PE。PE大小範圍爲8 KB 到 512 MB,而且必須老是 2 的倍數(使用-s指定,具體請參考man vgcreate)。
=========
爲了當即使用卷組而不是從新啓動系統,可使用vgchange來激活卷組:
# vgchange -a y web_document
================
當系統安裝了新的磁盤並建立了新的物理卷,而要將其添加到已有卷組時,就須要使用vgextend命令:
# vgextend web_document /dev/hdc1
這裏/dev/hdc1是新的物理卷。
================
要從一個卷組中刪除一個物理卷,首先要確認要刪除的物理卷沒有被任何邏輯卷正在使用,就要使用pvdisplay命令察看一個該物理卷信息:
若是某個物理卷正在被邏輯卷所使用,就須要將該物理卷的數據備份到其餘地方,而後再刪除。刪除物理卷的命令爲vgreduce:
# vgreduce web_document /dev/hda1
===========
建立邏輯卷的命令爲lvcreate:
# lvcreate -L1500 –nwww1 web_document
該命令就在卷組web_document上建立名字爲www1,大小爲1500M的邏輯卷,而且設備入口爲/dev/web_document/www1(web_document爲卷組名,www1爲邏輯卷名)。若是但願建立一個使用所有卷組的邏輯卷,則須要首先察看該卷組的PE數,而後在建立邏輯卷時指定:
# vgdisplay web_document| grep "Total PE" Total PE 45230 # lvcreate -l 45230 web_document -n www1
============
筆者推薦使用exit4文件系統,來替代ext2和ext3:
建立了文件系統之後,就能夠加載並使用它:
# mkdir /data/wwwroot # mount /dev/web_document/www1 /data/wwwroot
若是但願系統啓動時自動加載文件系統,則還須要在/etc/fstab中添加內容:
/dev/web_document/www1 /data/wwwroot reiserfs defaults 1 2
=============
刪除邏輯卷之前首先須要將其卸載,而後刪除:
# umount /dev/web_document/www1 # lvremove /dev/web_document/www1 lvremove -- do you really want to remove "/dev/web_document/www1"? [y/n]: y lvremove -- doing automatic backup of volume group "web_document" lvremove -- logical volume "/dev/web_document/www1" successfully removed
=============
LVM提供了方便調整邏輯卷大小的能力,擴展邏輯卷大小的命令是lvcreate:
# lvextend -L12G /dev/web_document/www1 lvextend -- extending logical volume "/dev/web_document/www1" to 12 GB lvextend -- doing automatic backup of volume group "web_document " lvextend -- logical volume "/dev/web_document/www1" successfully extended
上面的命令就實現將邏輯卷www1的大小擴招爲12G。
# lvextend -L+1G /dev/web_document/www1 lvextend -- extending logical volume "/dev/web_document/www1" to 13 GB lvextend -- doing automatic backup of volume group "web_document " lvextend -- logical volume "/dev/web_document/www1" successfully extended
上面的命令就實現將邏輯卷www1的大小增長1G。
增長了邏輯卷的容量之後,就須要修改文件系統大小以實現利用擴充的空間。筆者推薦使用reiserfs文件系統來替代ext2或者ext3。所以這裏僅僅討論reiserfs的狀況。Reiserfs文件工具提供了文件系統大小調整工具:resize_reiserfs。對於但願調整被加載的文件系統大小:
# resize_reiserfs -f /dev/web_document/www1
通常建議最好將文件系統卸載,調整大小,而後再加載:
# umount /dev/web_document/www1 # resize_reiserfs /dev/web_document/www1 # mount -treiserfs /dev/web_document/www1 /data/wwwroot
對於使用ext2或ext3文件系統的用戶能夠考慮使用工具:ext2resize。
=============
使用lvreduce便可實現對邏輯卷的容量,一樣須要首先將文件系統卸載:
# umount /data/wwwroot # resize_reiserfs -s-2G /dev/web_document/www1 # lvreduce -L-2G /dev/web_document/www1 # mount -treiserfs /dev/web_document/www1 /data/wwwroot
歡迎點贊與轉發分享支持哦!