LVM及其使用

##LVM是什麼? LVM(Logical Volume Manager),即磁盤卷管理,是Linux環境下對磁盤分區進行管理的一種機制。經過LVM能夠很方便的實現:服務器

  • 在線擴容
  • 跨物理硬盤分區
  • 在線遷移
  • 快照

##LVM原理 LVM是磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上創建文件系統。 LVM架構以下: LVM架構架構

  • 物理存儲介質(PhysicalStorageMedia) 指系統的物理存儲設備:磁盤,如:/dev/hda、/dev/sda等,是存儲系統最底層的存儲單元。
  • 物理卷(Physical Volume,PV) 指磁盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
  • 卷組(Volume Group,VG) 相似於非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成。能夠在卷組上建立一個或多個LV(邏輯卷)。
  • 邏輯卷(Logical Volume,LV) 相似於非LVM系統中的磁盤分區,邏輯卷創建在卷組VG之上。在邏輯卷LV之上能夠創建文件系統(好比/home或者/usr等)。
    • 線性邏輯卷 (Linear Volumes) 一個線性邏輯卷聚合多個物理捲成爲一個邏輯卷.好比,若是你有兩個60GB硬盤,你能夠生成120GB的邏輯卷.
    • 條塊化的邏輯卷(Striped Logical Volumes) 當你寫數據到此邏輯卷中時,文件系統能夠將數據放置到多個物理卷中.對於大量鏈接讀寫操做,它能改善數據I/O效率.
    • 鏡像的邏輯卷(Mirrored Logical Volumes) 鏡像在不一樣的設備上保存一致的數據.數據同時被寫入原設備及鏡像設備.它提供設備之間的容錯。
    • 快照卷(Snapshot Volumes) 快照卷提供在特定瞬間的一個設備虛擬映像,當快照開始時,它複製一份對當前數據區域的改變,因爲它優先執行這些改變,因此它能夠重構當前設備的狀態。
  • 物理塊(Physical Extent,PE) 每個物理卷PV被劃分爲稱爲PE(Physical Extents)的基本單元,具備惟一編號的PE是能夠被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。因此物理卷(PV)由大小等同的基本單元PE組成。因此每個邏輯卷大小都是物理塊的整數倍。
  • 邏輯塊(Logical Extent,LE) LVM抽象模型 邏輯卷LV也被劃分爲可被尋址的基本單位,稱爲LE。在同一個卷組中,LE的大小和PE是相同的,而且一一對應。

建立LVM

如下操做前請肯定保存好硬盤中的數據。。。。app

  1. 首先安裝LVM(以Debian爲例)佈局

    sudo apt-get install lvm2性能

  2. 將硬盤初始化爲物理卷 在建立卷組前,首先要將硬盤初始化成物理卷已供LVM使用。code

    pvcreate /dev/sda /dev/sdb /dev/sdc2ip

能夠經過pvdisplay或者pvs來查看已經建立的物理卷信息。rem

  1. 建立卷組 將已經建立的物理卷整合成爲一個卷組get

    vgcreate mydisk /dev/sda /dev/sdb /dev/sdc2 vgcreate能夠經過-s選項來改變PE的默認大小,大小必須是2的階乘,最小爲1kb。 一樣能夠經過vgdisplay和vgs來查看卷組信息。 能夠發現/dev/多了一個mydisk文件夾效率

  2. 建立邏輯卷

    lvcreate -n MyRoot -L +14G mydisk

這樣就建立了名字爲MyRoot的邏輯卷,塊設備文件默認爲/dev/mydisk/MyRoot(其是一個鏈接,指向/dev/mapper/的同名文件)。 一樣可使用lvs和lvdisplay來查看邏輯卷的狀況。

PS 若是過須要條塊化,請參閱7

  1. 在邏輯捲上建立分區 邏輯卷建立完成後就能夠當成普通的塊文件來使用。

    mkfs.ext4 /dev/mydisk/MyRoot

  2. 掛載使用 掛載到合適的位置。 mount /dev/mydisk/MyRoot/ /mnt/MySecret

  3. 條塊化I/O LVM條塊化是LVM功能之一,該技術會跨多個磁盤寫入數據,而不是對單一物理卷持續寫入。條塊化優勢以下:

    • 它會改善磁盤性能。
    • 避免對單一硬盤的不斷的大量寫入。
    • 使用對多個硬盤的條塊化寫入,能夠減小硬盤填滿的概率。

建立lv的時候能夠加上-i[number]選項就可使用條塊化方法,若是須要可使用-I選項聲明條塊尺寸,一樣必須是2的階乘,可是不能超過PE的大小。

##LVM的伸展 LVM能夠實如今線擴大分區容量,也就是說,若是分區的空間不夠用了,能夠隨時擴大而不用下線。 從下至上

  1. 初始化要添加的物理分區或硬盤,同上。

  2. 擴展卷組 將一個硬盤或者物理分區添加到卷組之中。 vgextend mydisk /dev/sdd

  3. 擴展邏輯卷 擴大邏輯卷 lvextend -L +1G /dev/mydisk/MyRoot 注意擴大的單位可使用必定不要超過VG的剩餘空間。

  4. 更新文件系統 resizefs /dev/mydisk/MyRoot #ext二、ext三、ext4 xfs_growfs /dev/mydisk/MyRoot #XFS

簡單而優雅。

##LVM的縮小 LVM縮小操做必須離線,並且必定要備份數據 相比伸展,LVM的縮小操做就有必定的風險了,必定要當心。 自上而下

  1. 卸載LV umount /mnt/MySecret
  2. 縮小文件系統 resize2fs /dev/mydisk/MyRoot 1G #將文件系統改變爲1G,請肯定已存在的文件體積小於1G
  3. 檢查文件系統 e2fsck -f /dev/mydisk/MyRoot
  4. 縮小LV lvreduce -L -1G /dev/mydisk/MyRoot #將MyRoot縮小成1G
  5. 從新掛載 mount /dev/mydisk/MyRoot /mnt/MySecret 必定要當心謹慎。。

##縮小卷組 縮小卷組其實就是將物理硬盤移出卷組,移出前必定要保證移出的物理硬盤是空的。若是使用了條塊化I/O的化,備份數據吧(求大神指教)。 vgreduce mydisk /dev/sda vgreduck -a mydisk #自動移除空的卷

##刪除LVM 由上至下。。

1.刪除LV lvremove /dev/mydisk/MyRoot 2.刪除VG vgremove mydisk 3.刪除PV pvremove /dev/sda`

##LVM快照

LVM快照是以空間換時間時間的方式製做的lvm卷副本。它只在lvm中工做,並只在源邏輯捲髮生改變時佔用快照卷的空間。若是源卷的變化達到1GB這麼大,快照卷一樣也會產生這樣大的改變。於是,對於空間有效利用的最佳途徑,就是老是進行小的修改。若是快照將存儲空間消耗殆盡,咱們可使用lvextend來擴容。而若是咱們須要縮減快照所佔用卷的大小,可使用lvreduce。

說白了快照就是保存變化前的文件,因此快照不能用於備份,它並非完整的副本,因此當遇到硬盤物理損壞等非正常情況是沒法恢復的。

步驟:

  1. 查看卷組中是否有足夠剩餘空間(vgdisplay信息裏的Free PE/Size項)來建立快照,沒有的話請參考上面擴容部分擴容。

2.建立快照

lvcreate --size 1G --snapshot --name my_snap /dev/mydisk/MyRoot
  1. 驗證快照 使用lvs查看,會發現多了一個my_snap,而它的origin欄對應着MyRoot,這就是存放快照的卷,能夠經過df -Th來查看佔用的空間。

  2. 擴充快照 在使用過程當中可能發生空間不夠用的狀況,這時候請必定在空間佔慢前擴充快照的空間,也就是其邏輯卷的空間(參考上文)。

  3. 快照恢復 恢復操做是沒法在線的。 首先要卸載要回復的物理卷,而後在進行合併操做。

    umount /mnt/MyRoot lvconvert --merge /dev/mydisk/my_snap

在合併完成後,快照卷將被自動移除。

##LVM遷移

LVM遷移是LVM衆多優秀特性之一,經過它,咱們能夠遷移邏輯捲到一個新的磁盤而不會丟失數據,也不用關機操做。該特性的功能是將數據從舊磁盤移動到新磁盤。一般,咱們只是在一些磁盤發生錯誤時,纔將數據從一個磁盤遷移到另一個磁盤存儲。 特色:

  • 將邏輯卷從一個磁盤移動到另外一個磁盤。
  • 咱們可使用任何類型的磁盤,如SATA、SSD、SAS、SAN storage iSCSI或者FC。
  • 在線遷移磁盤,並且數據不會丟失。

###方法一:

  1. 確認磁盤情況,肯定要將數據從那個硬盤遷移,遷移到那個硬盤。 經過df -hlvdisplayvgdisplay查看磁盤和LVM狀態

2.在要遷移到的硬盤/分區上建立物理卷

`pvcreate /dev/sdc1`
  1. 添加到已有卷組

    ` vgextend mydisk /dev/sdc1`
     `vgs`
  2. 建立鏡像到新物理卷

    `lvconvert -m 1 /dev/mydisk/MyRoot /dev/sdc1`

-m爲--mirror的縮寫,數字是表示鏡像份數,過程時間稍長。。

  1. 驗證鏡像

    lvs -o+devices
  2. 刪除原鏡像 這時候MyRoot對應者/dev/sdc1的鏡像和對應原來的多個物理卷組成的鏡像。要將原來的移除,要先刪除原來的鏡像

    lvconvert -m 0 /dev/mydisk/MyRoot

0即移除。

  1. 將MyRoot從vg中移除,參考上面的刪除lv

###方法2 方法一第三步日後:直接使用`pvmove /dev/mydisk/MyRoot /dev/sdc1 方法一的意義在於,服務器環境LVM通常會有不少鏡像,相似raid 1,直接建立鏡像要快的多。(聽人說的,待肯定)

相關文章
相關標籤/搜索