天天看點

Linux LVM簡明教程Linux LVM簡明教程

邏輯卷管理lvm是一個多才多藝的硬碟系統工具。無論在linux或者其他類似的系統,都是非常的好用。傳統分區使用固定大小分區,重新調整大小十分麻煩。但是,lvm可以建立和管理“邏輯”卷,而不是直接使用實體硬碟。可以讓管理者彈性的管理邏輯卷的擴大縮小,操作簡單,而不損壞已存儲的資料。可以随意将新的硬碟添加到lvm,以直接擴充已經存在的邏輯卷。lvm并不需要重新開機就可以讓核心知道分區的存在。

lvm使用分層結構,如下圖所示。

Linux LVM簡明教程Linux LVM簡明教程

圖中頂部,首先是實際的實體磁盤及其劃分的分區和其上的實體卷(pv)。一個或多個實體卷可以用來建立卷組(vg)。然後基于卷組可以建立邏輯卷(lv)。隻要在卷組中有可用空間,就可以随心所欲的建立邏輯卷。檔案系統就是在邏輯卷上建立的,然後可以在作業系統挂載和通路。

<a target="_blank"></a>

本文将介紹怎麼在linux中建立和管理lvm卷。我們将會分成兩個部分。第一個部分,我們首先要在一個硬碟上建立多個邏輯卷,然後将它們挂載在/lvm-mount目錄。然後我們将要對建立好的卷調整大小。而第二部分,我們将會從另外一塊硬碟增加額外的卷到lvm中。

通過使用fdisk,建立磁盤分區。我們需要建立3個1g分區,注意,并不要求分區的大小一緻。同樣,分區需要使用‘8e’類型來使他們可用于lvm。

# fdisk /dev/sdb

command (m for help): n ## 建立

command action

e extended

p primary partition (1-4)

p ## 主分區

partition number (1-4): 1 ## 分區号

first cylinder (1-1044, default 1): ## 回車用預設的1

last cylinder, +cylinders or +size{k,m,g} (1-1044, default 1044): +1g ## 大小

command (m for help): t ## 改變類型

selected partition 1

hex code (type l to list codes): 8e ## lvm 的分區代碼

changed system type of partition 1 to 8e (linux lvm)

重複上面的操作來建立其他兩個分區。分區建立完成後,我們應該有類似如下的輸出:

# fdisk -l

device boot start end blocks id system

/dev/sdb1 1 132 1060258+ 8e linux lvm

/dev/sdb2 133 264 1060290 8e linux lvm

/dev/sdb3 265 396 1060290 8e linux lvm

剛建立的分區是用來儲存實體卷的。lvm可以使用不同大小的實體卷。

# pvcreate /dev/sdb1

# pvcreate /dev/sdb2

# pvcreate /dev/sdb3

使用下列指令檢查實體卷的建立情況。下面截取部分輸出。"/dev/sdb2"是一個新的"1.01 gib"實體卷。

# pvdisplay

--- new physical volume ---

pv name /dev/sdb2

vg name

pv size 1.01 gib

allocatable no

pe size 0

total pe 0

free pe 0

allocated pe 0

pv uuid jszvzz-ena2-g5pd-irhv-t9wi-zfa3-0xo092

使用下列指令可以删除實體卷。

# pvremove /dev/sdb1

下列指令用來建立名為'volume-group1'的卷組,使用/dev/sdb1, /dev/sdb2 和 /dev/sdb3建立。

# vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3

使用下列指令可以來驗證卷組。

# vgdisplay

--- volume group ---

vg name volume-group1

system id

format lvm2

metadata areas 3

metadata sequence no 1

vg access read/write

vg status resizable

max lv 0

cur lv 0

open lv 0

max pv 0

cur pv 3

act pv 3

vg size 3.02 gib

pe size 4.00 mib

total pe 774

alloc pe / size 0 / 0

free pe / size 774 / 3.02 gib

vg uuid bwd2ps-fkaz-lgvz-qc7c-takv-ffuc-izgnbk

從輸出中,我們可以看見卷組的使用量/總量。實體卷給卷組提供空間。隻要在這個卷組中還有可用空間,我們就可以随意建立邏輯卷。

使用下列指令删除卷組。

# vgremove volume-group1

下列指令建立一個名為'1v1'、大小為100mb的邏輯卷。我們使用小分區減少執行時間。這個邏輯卷使用之前建立的卷組的空間。

# lvcreate -l 100m -n lv1 volume-group1

邏輯卷可使用lvdisplay指令檢視。

# lvdisplay

--- logical volume ---

lv name /dev/volume-group1/lv1

vg name volume-group1

lv uuid ynq1aa-qvt1-hej6-arjx-i1q4-y1h1-ofetlw

lv write access read/write

lv status available

# open 0

lv size 100.00 mib

current le 25

segments 1

allocation inherit

read ahead sectors auto

- currently set to 256

block device 253:2

現在邏輯卷已經準備好了,我們可以格式化和挂載邏輯卷,就像其它ext2/3/4分區一樣!

# mkfs.ext4 /dev/volume-group1/lv1

# mkdir /lvm-mount

# mount /dev/volume-group1/lv1 /lvm-mount/

一旦邏輯卷挂載,我們就可以到挂載點 /lvm-mount/ 上讀寫了。要建立和挂載其它的邏輯卷,我們重複這個過程。

最後,使用lvremove我們可以删除邏輯卷。

# umount /lvm-mount/

# lvremove /dev/volume-group1/lv1

調整邏輯卷大小的功能是lvm最有用的功能。這個部分會讨論我們怎麼樣擴充一個存在的邏輯卷。下面,我們将會擴充先前建立的邏輯卷‘lv1’擴大到200mb。

注意,調整邏輯卷大小之後,也需要對檔案系統調整大小進行比對。這個額外的步驟各不相同,取決于建立檔案系統的類型。在本文中,我們使用'lv1'建立了ext4類型的檔案系統,是以這裡的操作是針對ext4檔案系統的。(ext2/3檔案系統也類同)。指令的執行順序是很重要的。

首先,我們解除安裝掉lv1卷

然後,設定卷的大小為200m

# lvresize -l 200m /dev/volume-group1/lv1

接下來,檢查磁盤錯誤

# e2fsck -f /dev/volume-group1/lv1

運作以下指令擴充檔案系統以後,ext4資訊就更新了。

# resize2fs /dev/volume-group1/lv1

現在,這個邏輯卷應該已經擴充到200mb了。我們檢查lv的狀态來驗證。

lv uuid 9rtmmy-0riz-dq40-ysju-vmrj-f1es-7rxbwa

lv size 200.00 mib

current le 50

現在,這個邏輯卷可以再次挂載,同樣這個方法也可用于其他分區。

這章節介紹縮減lvm卷大小的方法。指令的順序同樣重要。并且,下列指令對ext2/3/4檔案系統同樣有效。

注意減少邏輯卷的大小值若小于儲存的資料大小,存儲在後面的資料會丢失。

首先,解除安裝掉卷。

# umount /dev/volume-group1/lv1

然後,檢測磁盤錯誤。

接下來縮小檔案系統,更新ext4資訊。

# resize2fs /dev/volume-group1/lv1 100m

完成以後,減少邏輯卷大小

# lvresize -l 100m /dev/volume-group1/lv1

warning: reducing active logical volume to 100.00 mib this may destroy your data (filesystem etc.) do you really want to reduce lv1? [y/n]: y reducing logical volume lv1 to 100.00 mib logical volume lv1 successfully resized

最後,驗證調整後的邏輯卷大小。

本節将讨論擴充卷組的方法,将一個實體卷添加到卷組。讓我們假設我們的卷組'volume-group1'已經滿了,需要擴大。手上的硬碟(sdb)已經沒有其他空閑分區,我們添加了另外一個硬碟(sdc)。我們将看到如何把sdc的分區添加到卷組以擴充。

檢測現在卷組狀态

# vgdisplay volume-group1

metadata sequence no 8

cur lv 1

alloc pe / size 25 / 100.00 mib

free pe / size 749 / 2.93 gib

首先,我們建立一個2gb分區sdc1,類型為lvm(8e),如教程前所述。

# fdisk /dev/sdc

command (m for help): n

p

partition number (1-4): 1

first cylinder (1-1044, default 1):

using default value 1

last cylinder, +cylinders or +size{k,m,g} (1-1044, default 1044): +2g

command (m for help): t

hex code (type l to list codes): 8e

command (m for help): w

the partition table has been altered!

然後,我們建立一個實體卷 /dev/sdc1

# pvcreate /dev/sdc1

現在,實體卷已經準備好了,我們可以簡單地将它增加到已存在的卷組'volume-group1'上。

# vgextend volume-group1 /dev/sdc1

使用vgdisplay來驗證(可以看到卷組大小已經增大)。

metadata areas 4

metadata sequence no 9

cur pv 4

act pv 4

vg size 5.03 gib

total pe 1287

free pe / size 1262 / 4.93 gib

注意,盡管我們使用一個單獨的磁盤做示範,其實隻要是‘8e’類型的磁盤分區都可以用來擴充卷組。

總結一下,lvm是一個非常給力的工具,用來建立和管理可變大小的分區。本文中,我們已經介紹了動态分區如何在lvm中建立和使用。我們也介紹了擴充/縮小邏輯卷和卷組的方法,和如何增加一個新的磁盤到lvm。

希望對你有幫助。

原文釋出時間:2014-06-18

本文來自雲栖合作夥伴“linux中國”

繼續閱讀