LINUX中LVM的建立,擴容,增減大小
LVM(Logical Volumn Manager):
總體思路:分割槽成LVM格式(8e)---PV建立--VG建立---LV建立---格式化分割槽---MOUNT分割槽----e2fsadm調整LV大小
幾個關鍵詞:
PV (Physical Volumn);VG(Volumn Group); LV(Logical Volumn);PE(Physical Extend物理塊 default 4M); LE(Logical Extend邏輯塊) PE:LE=1:1(Normal)
LVM的結構簡圖如下:
hda1 hdc1 sdc (PV:s 物理卷,一般為分割槽或整個硬碟)
| /
| /
diskvg (VG 卷組由物理卷組成)
/ |
/ |
usrlv rootlv varlv (LV:s 邏輯卷在卷組上建立)
| | |
ext2 reiserfs xfs (建立在邏輯捲上的檔案系統)
PV: 實體分割區(Partition)/dev/had...
VG: 虛擬硬碟 /dev/vg_name
LV: 虛擬分割區 /dev/vg_name/lv_name
LVM建立過程:
如有三個硬碟hda2(3G)/hdb2(3G)/hdc2(3G)/hdd2(3G)+hda1(100M boot分割槽)
1、建立分割槽:
fdisk /dev/hda(..hdb..hdc..hdd) -----p---n--t--8e---p--w--- reboot
(分出hda2/hdb2/hdc2/hdd2各3G的分割槽,分割槽格式為8e(lvm分割槽)
2、建立物理卷(PV):
pvcreate [-v] /dev/hda2 /dev/hdb2 /dev/hdc2 /dev/hdd2
***建立物理卷(PV)之前可以通過pvscan 檢視是否有物理卷及其資訊,如pvscan檢視到現有PV(如/dev/hdb1、/dev/hdc1)屬於VG (如VG0),則可以通過
pvdisplay /dev/hdb1檢視現有LVM的情況。
****-v顯示建立的全部過程,可以省略
3、建立卷組(VG):
vgcreate [-v] [-s 8M]vg01 /dev/hda2 /dev/hdb2 /dev/hdc2 /dev/hdd2
***建立卷組((VG)之前可以通過vgdisplay檢視現有卷組資訊;
*** -s 建立的VG的PE大小(如8M),預設省略不寫為4M,必須是4的整數倍;
***VG建立好後,自動就Active起來,若沒有自動Active則可以通過 vgchange -a y vg01啟用 VG;也可以通過vgchange -a n vg01 關閉Actice 的VG為Deactive;
***只有對Deactive 的VG才能進行更改、刪除;VG的重新命名不需要Deactive,如 vgrename old_vg_name new_vg_name;
***vgremove 刪除現有VG :vgremove vg_name;必須是Deactive VG.
***若在建立了LVM後發現硬碟空間不夠,則可以建立一個LVM分割槽,通過pvcreate啟用此分割槽,再通過vgextend加入到現有VG中以擴充空間。
pvcreate /dev/hde2 ; vgextend -v vg01 /dev/hde2 將hde2加入到現有vg01中以擴充空間。
***若要刪除VG中的PV,必須先確認此PV沒有被VG所使用:如/dev/hdd2,先檢視pvdisplay /dev/hdd2 中的PV Status,若為Not Availiable則可以刪除;
vgreduce -v vg01 /dev/hdd2
4、建立邏輯卷(LVM):
命令lvcreate的常用方法:
lvcreate [options] -n 邏輯卷名 卷組名
其中的常用可選項有:
"-i Stripes :採用交錯(striped)方式建立LV,其中Stripes指卷組中PV的數量。
"-I Stripe_size :採用交錯方式時採用的塊大小(單位為KB),Stripe_size必須為2的指數:2N ,N=2,3...9。
"-l LEs :指定LV的邏輯塊數。
"-L size :指定LV的大小,其後可以用K、M、G表示KB、MB、GB。
"-s :建立一已存在LV的snapshot卷。
"-n name :為LV指定名稱。
建立普通LV:
lvcreate -L 5G -n lv01 vg01 建立一個名為lv01的5G 虛擬分割槽在虛擬硬碟vg01上 /dev/vg01/lv01
lvcreate -i 4 -I 8 -L 4G -n lv02 vg01 [-i 是VG中組成PV的分割槽個數,-I 塊大小,-L LV的大小]
建立快照LV:
lvcreate -s -i 4 -I 16 -L 2G -n lv03_snapshot vg01
5、建立檔案系統:
mke2fs -j /dev/vg01/lv01 (mkfs.ext3 /dev/vg01/lv02; mkfs.ext3 /dev/vg01/lv_snapshot)
6、掛載:
mkdir /mnt/lv01 ;
mount -t ext3 /dev/vg01/lv01 /mnt/lv01;
7、增、減LV大小:
umount /lv01;
e2fsadm -L+100M(-100M) /dev/vg01/lv01
****
總結:
1) fdisk /dev/hd?--8e (/dev/hda2;/dev/hdb2;/dev/hdc2/;dev/hdd2)
2) pvcreate /dev/hda2 /dev/hdb2 /dev/hdc2
3)vgcreate vg01 /dev/hd2 /dev/hdb2 /dev/hdc2
4)lvcreate [-s] [-i pv_pation_count] [-I n*2k] -L 分割槽大小 [-n lv_name] vg01
5)mke2fs [-j] /vg01/lv_name
6) mkdir /mnt/mnt_point; mount -t ext3 /dev/vg01/lv_name /mnt/mnt_point;
增加硬碟已擴充分割槽容量:
1) pvcreate /dev/hdd2;
2) vgextend vg01 /dev/hdd2;
3)lvextend -L+100M /dev/vg01/lv_name; (線上擴充分割槽大小) lvreduce -L -100M /dev/vg01/lv_name (線上擴充分割槽大小)
若VG中有容量未分配可以通過以下方法增加(或減少)分割槽容量:
1) umount /mnt/mnt_point;
2) e2fsadm -L+100M /dev/vg01/lv_name
**以上擴充必須是LV中最後一個LV(如/dev/vg01/lv01;/dev/vg01/lv02; /dev/vg01/lv03)
只能正常、正確擴充最後一個LV :lv03;若擴充lv01、lv02可能會有問題發生。