擴大硬盤的方法有二:
1 新增一個虛擬硬盤
2 擴大原有硬盤
第一: 新增硬盤並將其格式化爲lvm格式
第二: 擴大硬盤並利用分區工具,將擴大的部分添加到原有的分區中,再將該分區轉爲lvm格式
第三: 創建lvm卷組,並最終將文件系統掛載上去。
**********************************************
vmware-vdiskmanager.exe
建立一個新的磁盤:
vmware-vdiskmanager.exe //看看選項,也能夠增大原來的磁盤
vmware-vdiskmanager.exe -c -s 10Gb -a ide -t 0 Seconddisk.vmdk 在vmware-->setting-->選擇硬盤-->add-->....便可將新增一個磁盤。若是沒有以上這步,虛擬機下是識別不到用vdiskmanager建立的新的虛擬磁盤。這比較容易理解。
新增一個磁盤,比較簡單。進入虛擬機後。/sbin/fdisk -l 會發現有一個磁盤沒有掛載任何的文件系統。如/dev/hda
/sbin/fdisk /dev/hda來對這個磁盤進行分區,並選擇lvm類型的文件系統。以下
# /sbin/fdisk /dev/hda
The number of cylinders for this disk is set to 22192.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
將該盤設爲lvm格式,是爲了讓幾個lvm物理卷構成一個卷組,並最終都掛載到/目錄下。由於個人/空間滿了
這裏又是擴大硬盤容量,又是新增硬盤,主要是爲了實驗。圖方便的話,直接用其中一種方式皆可。
可是,從vmware setting 上擴大磁盤後,在linux下只會顯示硬盤大小改變了,可並無擴充文件系統啊。
能夠利用:resize2fs和parted分區工具。
參考: resize2fs
http://blog.chinaunix.net/u/6303/showart_407254.html
parted http://www.maycode.com/index.php/linux/34-linuxbase/1190-command.html
這種狀況下,對該磁盤,便是,已分區的並掛載文件系統的空間已經不夠,可是,該盤上還有未分區的空間。如何識別這些未分區的空間?
# /sbin/fdisk -l
Disk /dev/hda: 10.7 GB, 10737418240 bytes
15 heads(磁頭), 63 sectors(扇區)/track(磁道), 22192 cylinders(磁道柱面)
Units(單位) = cylinders of 945 * 512 = 483840 bytes
15*63=945
945*512=483840
注:22192*483840=10737418240,共有22192個柱面,每一個柱面的Units(大小單位)爲48380,因此總大小爲兩者的乘積
參考:http://www.xingtop.com/service/gaoji/hard/004.htm
Device Boot Start End Blocks Id System
/dev/hda1 1 22192 10485688+ 8e Linux LVM
Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 274 2096482+ 83 Linux
/dev/sda3 275 1305 8281507+ 8e Linux LVM
能夠看出,/dev/sda這個磁盤分爲三個區,柱面數小於總的柱面。即還有未分區的空間。
將1306至1958柱面加到/dev/sda3中。
1.首先,將1306-->1958的扇區新建上一個文件系統。
php
能不能使兩個不一樣的硬盤分區掛載在同一個目錄下面?
按以往的概念,那確定是不行的。如將兩分區:/dev/hda1 /dev/hda2 同時掛載到/home/me下,固然會提示出錯。不過用lvm,很方便地能夠獲得擴展。
準備工做上面都已經作好了:有以下資源
/dev/hda 完整的一塊盤10G,未掛載
/dev/sda4 5G的空間,未掛載
/dev/sda3 6G,掛載/
目標:
創建一個LV分區,將/掛載到該分區上。使/的空間增大的20G
開始:
1 /usr/sbin/pvcreate /dev/hda 初始化物理卷/dev/hda
2 /usr/sbin/pvcreate /dev/sda4 初始化物理卷/dev/sda4
3 /usr/sbin/vgextend VolGroup00 /dev/sda4
4 /usr/sbin/vgextend VolGroup00 /dev/hda
3,4步將新的卷添加到原有的卷組當中,其中 VolGroup00爲原有的物理卷組,該卷組下的邏輯卷是/dev/sda3,卷組上有LV邏輯分區:
# /usr/sbin/lvscan
ACTIVE '/dev/VolGroup00/LogVol00' [6.66 GB] inherit
ACTIVE '/dev/VolGroup00/LogVol01' [1.19 GB] inherit
掛載着整個的文件系統/及/home。內核2.4之後,基本上都是支持lvm的,這給系統硬盤的劃分帶來了很大的方便。
5 /usr/sbin/lvextend -L +15G /dev/VolGroup00/LogVol00 擴大邏輯卷
LogVol00,
即掛載/目錄的LV。將卷組
VolGroup00 上的Free PE / Size 空閒空間添加進來。可經過/usr/sbin/pvdisplay查看。
增長了邏輯卷的容量之後,就須要修改文件系統大小以實現利用擴充的空間
6 執行
文件
系統
檢查:
[root@server1 /]# e2fsck -f /dev/VolGroup00/LogVol00
e2fsck 1.39 (29-May-2006)
/dev/VolGroup00/LogVol00 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
/dev/VolGroup00/LogVol00: recovering journal
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/VolGroup00/LogVol00: ***** FILE SYSTEM WAS MODIFIED *****
/dev/VolGroup00/LogVol00: ***** REBOOT LINUX *****
/dev/VolGroup00/LogVol00: 114168/1048576 files (0.6% non-contiguous), 695530/1048576 block
7,執行resize2fs
[root@server1 /]# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2179072 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 2179072 blocks long.
8,從新查看lv信息和mount的信息 --mount 查看當前的掛載狀況
[root@server1 /]# lvdisplay
以上6--8步獲得http://tonykorn97.itpub.net/post/6414/471205的指點,否則還真不知道如何擴大根系統。
總結:
在虛擬機下,linux硬盤空間不夠時,可經過vmware-->setting-->add來增長一個新的硬盤,或者經過
vmware-vdiskmanager.exe來擴大原有的虛擬硬盤*.vmdk。
進入linux系統後,經過/sbin/fdisk -l 命令查看磁盤分區情況。發現,擴大的硬盤並無真正加到文件系統中。新增的硬盤也未創建文件系統。
將擴大的硬盤的空閒空間分隔成另外一個分區。利用 /sbin/fdisk,並設置成lvm的格式
將新增的硬盤也一樣處理。
利用/usr/sbin/pv* /usr/sbin/vg* /usr/sbin/lv* 等一系列lvm工具,將新的分區加到卷組VolGroup00中。此時,卷組VolGroup00中,空間已變大。然而,文件系統的空間並未發生變化,可經過命令df來查看。
利用文件系統檢查工具e2fsck來檢查文件系統/dev/VolGroup00/LogVol00 ,而且從新分配文件系統的大小:resize2fs。
至此,已經成功將根目錄的空間增大。
******************************************************************************
lvm可參考:http://blog.chinaunix.net/u3/93926/showart_1873239.html
LVM使用手冊 http://www.chinaunix.net/jh/4/36371.html
1 簡介
1.1 什麼是LVM?
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它由Heinz Mauelshagen在Linux 2.4內核上實現,目前最新版本爲:穩定版1.0.5,開發版 1.1.0-rc2,以及LVM2開發版。
與傳統的磁盤與分區相比,LVM爲計算機提供了更高層次的磁盤存儲。它使系統管理員能夠更方便的爲應用與用戶分配存儲空間。在LVM管理下的存儲 卷能夠按須要隨時改變大小與移除(可能需對文件系統工具進行升級)。LVM也容許按用戶組對存儲捲進行管理,容許管理員用更直觀的名稱(如 "sales'、 'development')代替物理磁盤名(如'sda'、'sdb')來標識存儲卷。
1.2 爲何使用LVM?
LVM一般用於裝備大量磁盤的系統,但它一樣適於僅有1、兩塊硬盤的小系統。
1.2.1 小系統使用LVM的益處
傳統的文件系統是基於分區的,一個文件系統對應一個分區。這種方式比較直觀,但不易改變:
1.不一樣的分區相對獨立,無相互聯繫,各分區空間很易利用不平衡,空間不能充分利用;
2.當一個文件系統/分區已滿時,沒法對其擴充,只能採用從新分區/創建文件系統,很是麻煩;或把分區中的數據移到另外一個更大的分區中;或採用符號鏈接的方式使用其它分區的空間。
3.若是要把硬盤上的多個分區合併在一塊兒使用,只能採用再分區的方式,這個過程須要數據的備份與恢復。
當採用LVM時,狀況有所不一樣:
1.硬盤的多個分區由LVM統一爲卷組管理,能夠方便的加入或移走分區以擴大或減少卷組的可用容量,充分利用硬盤空間;
2.文件系統創建在邏輯捲上,而邏輯卷可根據須要改變大小(在卷組容量範圍內)以知足要求;
3.文件系統創建在LVM上,能夠跨分區,方便使用;
1.2.2 大系統使用LVM的益處
在使用不少硬盤的大系統中,使用LVM主要是方便管理、增長了系統的擴展性。
在一個有不少不一樣容量硬盤的大型系統中,對不一樣的用戶的空間分配是一個技巧性的工做,要在用戶需求與實際可用空間中尋求平衡。
用戶/用戶組的空間創建在LVM上,能夠隨時按要求增大,或根據使用狀況對各邏輯捲進行調整。當系統空間不足而加入新的硬盤時,沒必要把用戶的數據 從原硬盤遷移到新硬盤,而只須把新的分區加入卷組並擴充邏輯卷便可。一樣,使用LVM能夠在不停服務的狀況下。把用戶數據從舊硬盤轉移到新硬盤空間中去。
2 LVM構成
LVM的結構簡圖以下:
hda1 hdc1 sdc (PV:s 物理卷,通常爲分區或整個硬盤)
\ | /
\ | /
diskvg (VG 卷組由物理卷組成)
/ | \
/ | \
usrlv rootlv varlv (LV:s 邏輯卷在卷組上建立)
| | |
ext2 reiserfs xfs (創建在邏輯捲上的文件系統)
2.1 卷組volume group (VG)
卷組是LVM中最高抽象層,是由一個或多個物理卷所組成的存儲器池。
2.2 物理卷physical volume (PV)
典型的物理卷是硬盤分區,但也能夠是整個硬盤或已建立的Software RAID 卷。
2.3 邏輯卷logical volume (LV)
邏輯卷至關於非LVM系統中的分區,它在卷組上創建,是一個標準的塊設備,能夠在其上創建文件系統。
2.4 物理塊physical extent (PE)
物理卷按大小相等的「塊」爲單位存儲,塊的大小與卷組中邏輯卷塊的大小相同。
2.5 邏輯塊logical extent (LE)
邏輯卷按「塊」爲單位存儲,在一卷組中的全部邏輯卷的塊大小是相同的。
2.6 總述
例子:有一個卷組VG1,它的物理塊大小爲4MB。在這個卷組中爲2個硬盤分區:/dev/hda1與/dev/hdb1,它們分別成爲物理卷 PV1與PV2。物理卷將按4MB爲單位分塊,如PV1與PV2分別可分爲99與248塊。在VG1上創建邏輯卷,它的大小可在1至347(99+ 248)塊之間。當創建邏輯卷時,會創建邏輯塊與物理塊的一一映射關係。
2.7 映射模式 (linear/striped)
在創建邏輯卷時,能夠選擇邏輯塊與物理塊映射的策略:
1.線性映射-將把必定範圍的物理塊按順序分配給邏輯卷,如 LV的LE 1 – 99映射到PV1,LE 100 – 347映射到PV2。
2.交錯模式-將把邏輯塊交錯映射到不一樣的物理卷中,如 LV的LE 1映射爲PV1的PE1,LE 2映射爲PV2的PE1,LE 3映射爲PV1的PE2...。這種方式能夠提升邏輯卷的性能,可是採用這種方式創建的邏輯卷將不能在它們所在的物理卷中擴展。
2.8 Snapshots (快照)
LVM提供了一個很是好的特性:snapshots。它容許管理員創建一個塊設備:該設備是一邏輯卷在某一時刻凍結的精確拷貝。這個特性一般用於 批處理過程(如備份)須要處理邏輯卷,但又不能中止系統。當操做完成時,snapshot設備能夠被移除。這個特性要求在創建snapshot設備時邏輯 卷處於相容狀態。
3 LVM的通常操做
3.1 創建PV
爲把一個磁盤或分區做爲PV,首先應使用 pvcreate 對其初始化,如對IDE硬盤/dev/hdb,
"使用整個磁盤,
# pvcreate /dev/hdb
這將在磁盤上創建VG的描述符。
"使用磁盤分區,如/dev/hdb1。
使用fdisk 的t 命令把/dev/hda1的分區類型設爲0x8e,而後運行:
# pvcreate /dev/hdb1
這將在分區/dev/hda1上創建VG的描述符。
PV初始化命令pvcreate的通常用法爲:
pvcreate PV1 [ PV2 ... ]
它的參數能夠是整個磁盤、分區,也能夠是一loop設備。
3.2 創建VG
在使用pvcreate 創建了PV後,能夠用vgcreate 創建卷組,若有PV一、PV2分別是/dev/hda1與/dev/hdb1,使用
# vgcreate testvg /dev/hda1 /dev/hdb1
將創建一個名爲testvg的卷組,它由兩個PV:/dev/hda1與/dev/hdb1組成。vgcreate的通常用法爲:
# vgcreate [options] VG_name PV1 [PV2 ...]
其中的可選項包括設置VG最大支持的LV數、PE大小(缺省爲4MB)等。
注意:當使用devfs系統時,應使用設備的全名而不能是Symbol Link,如對上例應爲:
# vgcreate testvg /dev/ide/host0/bus0/target0/lun0/part1\
/dev/ide/host0/bus0/target1/lun0/part1
3.3 激活VG
在被激活以前,VG與LV是沒法訪問的,這時可用命令:
# vgchange -a y testvg
激活所要使用的卷組。當再也不使用VG時,可用
# vgchange -a n testvg
使之再也不可用。
vgchange可用來設置VG的一些參數,如是否可用( -a [y|n]選項)、支持最大邏輯卷數等。
3.4 移除VG
在移除一卷組前應確認卷組中再也不有邏輯卷,首先休眠卷組:
# vgchange -a n testvg
而後可用vgremove移除該卷組:
# vgremove testvg
3.5 爲VG增長新PV
當卷組空間不足時,能夠加入新的物理捲來擴大容量,這時可用命令vgextend,如
# vgextend testvg /dev/hdc1
其中/dev/hdc1是新的PV,固然在這以前,它應使用pvcreate初始化。
3.6 從VG移除PV
在移除PV以前,應確認該PV沒用被LV使用,這可用命令pvdisplay查看,如:
# pvdisplay /dev/hda1
--- Physical volume ---
PV Name /dev/hda1
VG Name testvg
PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 499
Free PE 0
Allocated PE 499
PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
如這個PV仍在被使用,則應把數據傳移到其它PV上。在確認它未被使用後,可用命令vgreduce把它從VG中刪除,如:
# vgreduce testvg /dev/hda1
3.7 建立LV
在建立邏輯卷前,應決定LV使用哪些PV,這可用命令vgdisplay與pvdisplay查看當前卷組與PV的使用狀況。在已有的卷組上建立邏輯卷使用命令lvcreate,如:
# lvcreate -L1500 -ntestlv testvg
將在卷組testvg上創建一個1500MB的線性LV,其命名爲testlv,對應的塊設備爲/dev/testvg/testlv。
# lvcreate -i2 -I4 -l100 -nanothertestlv testvg
將在卷組testvg上創建名爲anothertestlv的LV,其大小爲100LE,採用交錯方式存放,交錯值爲2,塊大小爲4KB。
若是須要LV使用整個VG,可首先用vgdisplay 查找 Total PE 值,而後在運行lvcreate時指定,如:
# vgdisplay testvg | grep "Total PE"
Total PE 10230
# lvcreate -l 10230 testvg -n mylv
將使用卷組testvg的所有空間建立邏輯卷mylv。
在建立邏輯卷後,就可在其上建立文件系統並使用它。
命令lvcreate的經常使用方法:
lvcreate [options] -n 邏輯卷名 卷組名 [PV1 ... ]
其中的經常使用可選項有:
"-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指定名稱。
3.8 刪除LV
爲刪除一個邏輯卷,必須首先從系統卸載其上的文件系統,而後可用lvremove刪除,如:
# umount /dev/testvg/testlv
# lvremove /dev/testvg/testlv
lvremove -- do you really want to remove "/dev/testvg/testlv"? [y/n]: y
lvremove -- doing automatic backup of volume group "testvg"
lvremove -- logical volume "/dev/testvg/testlv" successfully removed
3.9 擴展LV
爲邏輯卷增長容量可用使用lvextend,便可以指定要增長的尺寸也能夠指定擴容後的尺寸,如
# lvextend -L12G /dev/testvg/testlv
lvextend -- extending logical volume "/dev/testvg/testlv" to 12 GB
lvextend -- doing automatic backup of volume group "testvg"
lvextend -- logical volume "/dev/testvg/testlv" successfully extended
將擴大邏輯卷testlv的容量爲12GB。
# lvextend -L+1G /dev/testvg/testlv
lvextend -- extending logical volume "/dev/testvg/testlv" to 13 GB
lvextend -- doing automatic backup of volume group "testvg"
lvextend -- logical volume "/dev/testvg/testlv" successfully extended
將爲LV testlv再增大容量1GB至13GB。
爲LV擴容的一個前提是:LV所在的VG有足夠的空閒存儲空間可用。
在爲LV擴容以後,應同時爲LV之上的文件系統擴容,使兩者相匹配。對不一樣的文件系統有相對應的擴容方法。
3.9.1 ext2/ext3
除非內核已有ext2online 補丁,不然在改變ext2/ext3文件系統的大小時應卸載它:
# umount /dev/testvg/testlv
# resize2fs /dev/testvg/testlv
# mount /dev/testvg/testlv /home
這裏假設testlv安裝點爲/home。在es2fsprogs-1.19或以上版本中包含resize2fs命令。
在LVM發行包中有一個稱爲e2fsadm的工具,它同時包含了lvextend與resize2fs的功能,如:
# e2fsadm -L+1G /dev/testvg/testlv
等價於下面兩條命令:
# lvextend -L+1G /dev/testvg/testlv
# resize2fs /dev/testvg/testlv
但用戶仍需首先卸載文件系統。
3.9.2 reiserfs
與ext2不一樣,Reiserfs沒必要卸載文件系統,如:
# resize_reiserfs -f /dev/testvg/testvl
3.9.3 xfs
SGI XFS文件系統必須在安裝的狀況下才可改變大小,而且要使用安裝點而不是塊設備,如:
# xfs_growfs /home
3.10 縮小LV
邏輯卷可擴展一樣也可縮小,但應在縮小LV以前首先減少文件系統,不然將可能致使數據丟失。
3.10.1 ext2/ext3
可使用LVM的工具e2fsadm操做,如:
# umount /home
# e2fsadm -L-1G /dev/testvg/testvl
# mount /home
若是採用resize2fs,就必須知道縮少後卷的塊數:
# umount /home
# resize2fs /dev/testvg/testvl 524288
# lvreduce -L-1G /dev/testvg/testvl
# mount /home
3.10.2 reiserfs
在縮小reiserfs時,應首先卸載它,如:
# umount /home
# resize_reiserfs -s-1G /dev/testvg/testvl
# lvreduce -L-1G /dev/testvg/testvl
# mount -treiserfs /dev/testvg/testvl /home
3.10.3 xfs
沒法實現。
3.11 在PV間轉移數據
若要把一個PV從VG中移除,應首先把其上全部活動PE中的數據轉移到其它PV上,而新的PV必須是本VG的一部分,有足夠的空間。如要把PV1:/dev/hda1上的數據移到PV2:/dev/sda1上可用命令:
# pvmove /dev/hdb1 /dev/sdg1
若是在該PV之上的LV採用交錯方式存放,則這個轉移過程不能被打斷。
建議在轉移數據以前備份LV中的數據。
3.12 系統啓動/關閉
"爲使系統啓動時可自動激活並使用LVM,可將如下幾行添加到啓動 rc 腳本中:
/sbin/vgscan
/sbin/vgchange -a y
這些行將瀏覽全部可用的卷組並激活它們。要注意的是,它們應在安裝卷組上的文件系統操做以前被執行,不然將沒法正常安裝文件系統。
"在系統關機時,要關閉LVM,這可將如下這行添加到關機 rc 腳本中,並確保它在卸裝了全部文件系統後執行:
/sbin/vgchange -a n
4 磁盤分區問題
4.1 一個磁盤上的多個分區
LVM容許PV創建在幾乎全部塊設備上,如整個硬盤、硬盤分區、Soft RAID:
# pvcreate /dev/sda1
# pvcreate /dev/sdf
# pvcreate /dev/hda8
# pvcreate /dev/hda6
# pvcreate /dev/md1
因此在一塊硬盤上能夠有多個PV/分區,但通常建議一塊硬盤上只有一個PV:
"便於管理,易於處理錯誤
"避免交錯方式中性能降低。LVM不能辨別兩個PV是否在同一硬盤上,故當採用交錯方式時,會致使性能更差。
但在某些狀況下可採用:
"把已存在的系統合併到LVM中。在一個只有少數硬盤的系統中,轉換爲LVM時需在在各分區之間轉移數據。
"把一個大硬盤分給不一樣的VG使用。
當一個VG的有不一樣的PV在同一硬盤時,建立交錯方式的LV時應注意使用哪個PV。
4.2 Sun disk labels
僅在SUN的SPARC系統中有此問題。
5 創建LVM用例
在本節中,將在3塊SCSI硬盤:/dev/sda,/dev/sdb,/dev/sdc上按步創建LVM。
5.1 準備分區
首先要作的是初始化硬盤,創建PV,這將會刪除硬盤上的原有數據。在此,用整個硬盤爲PV:
# pvcreate /dev/sda
# pvcreate /dev/sdb
# pvcreate /dev/sdc
pvcreate在每一個硬盤的起始端創建卷組描述區( volume group descriptor area, VGDA)。
5.2 建立卷組
利用上面三個PV創建卷組:
# vgcreate test_vg /dev/sda /dev/sdb /dev/sdc/
而後可用vgdisplay 查看/驗證卷組的信息:
# vgdisplay
--- Volume Group ---
VG Name test_vg
VG Access read/write
VG Status available/resizable
VG # 1
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 3
Act PV 3
VG Size 1.45 GB
PE Size 4 MB
Total PE 372
Alloc PE / Size 0 / 0
Free PE / Size 372/ 1.45 GB
VG UUID nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y
其中最重要的前三條要正確,且VS size是以上三個硬盤容量之和。
5.3 創建LV
在肯定卷組test_vg正確後,就可在其上建立LV。LV的大小可在VG大小範圍內任意選擇,如同在硬盤上分區。
5.3.1 創建線性方式LV
在test_vg上創建一個大小爲1GB的線性方式LV:
# lvcreate -L1G -ntest_lv test_vg
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/test_lv" successfully created
5.3.2 創建交錯方式LV
在test_vg上創建一個大小爲1GB的交錯方式LV,交錯參數爲4KB:
# lvcreate -i3 -I4 -L1G -ntest_lv test_vg
lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/test_lv" successfully created
注意:若是使用 -i2參數,則LV將僅使用test_vg中的兩塊硬盤。
5.4 創建文件系統
在LV test_lv建立後,就可在其上創建文件系統,
如,ext2/ext3系統:
# mke2fs /dev/test_vg/test_lv
如,reiserfs:
# mkreiserfs /dev/test_vg/test_lv
5.5 測試文件系統
安裝LV:
# mount /dev/test_vg/test_lv /mnt
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 1311552 628824 616104 51% /
/dev/test_vg/test_lv 1040132 20 987276 0% /mnt
則能夠經過/mnt訪問LV。
6 使用snapshot 作備份
例如咱們要對卷組"test_vg"每晚進行數據庫備份,就要採用snapshot類型的卷組。這種卷組是其它卷組的一個只讀拷貝,它含有在建立 snapshot卷組時原卷組的全部數據,這意味你能夠備份這個卷組而不用擔憂在備份過程當中數據會改變,也不須要暫時關閉數據庫卷以備份。
6.1 創建snapshot卷
一個snapshot卷可大可小,但必須有足夠的空間存放全部在本snapshot卷生存期間改變的數據,通常最大要求是原卷組的1.1倍。如空間不夠,snapshot卷將不能使用。
# lvcreate -L592M -s -n dbbackup /dev/test_vg/databases
lvcreate -- WARNING: the snapshot must be disabled if it gets full
lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/test_vg/dbbackup"
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/dbbackup" successfully created
6.2 安裝snapshot卷
如今能夠安裝該卷:
# mkdir /mnt/test_vg/dbbackup
# mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup
mount: block device /dev/test_vg/dbbackup is write-protected, mounting read-only
從上面能夠看出,snapshot卷是隻讀的。
當使用XFS文件系統時,mount命令要使用nouuid與norecovery選項:
# mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup -o nouuid,norecovery,ro
6.3 備份數據
如採用tar向磁帶備份:
# tar -cf /dev/rmt0 /mnt/test_vg/dbbackup
6.4 刪除snapshot 卷
在完成備份後,就可卸載並刪除snapshot卷。
# umount /mnt/test_vg/dbbackup
# lvremove /dev/test_vg/dbbackup
lvremove -- do you really want to remove "/dev/test_vg/dbbackup"? [y/n]: y
lvremove -- doing automatic backup of volume group "test_vg"
lvremove -- logical volume "/dev/test_vg/dbbackup" successfully removed
7 更換卷組硬盤
因爲某種緣由,須要用新的硬盤替代卷組中的舊硬盤,如用一SCSI硬盤替換IDE硬盤,其步驟爲:
7.1 準備/初始化新硬盤
首先用pvcreate命令初始化新的硬盤,如使用整個硬盤:
# pvcreate /dev/sdf
pvcreate -- physical volume "/dev/sdf" successfully created
7.2 加入卷組
把新硬盤加入卷組:
# vgextend test_vg /dev/sdf
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "test_vg"
vgextend -- volume group "test_vg" successfully extended
7.3 數據搬家
在移除舊硬盤前,要把其上的數據轉移到新硬盤上。在轉移數據時,不要求卸載文件系統,但建議在數據轉移前進行備份,以防轉移進程中意外致使數據丟失。
pvmove用來實現數據轉移,根據數據量的多少,它可能要使用大量的時間,並可下降邏輯卷的性能,所以要在系統不太忙時操做。
# pvmove /dev/hdb /dev/sdf
pvmove -- moving physical extents in active volume group "test_vg"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
7.4 移除未用硬盤
當數據被轉移到其它硬盤後,就能夠從卷組中刪除這塊再也不使用的硬盤:
# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "test_vg"
vgreduce -- volume group "test_vg" successfully reduced by physical volume:
vgreduce -- /dev/hdb
今後,卷組test_vg再也不使用IDE硬盤/dev/hdb,這塊硬盤能夠從機器中拆下或用做它途。
8 遷移卷組到其它系統
把一個卷組轉移到其它系統是很容易的(如更換服務器),這要用命令vgexport與vgimport。
8.1 卸載文件系統
爲總體搬遷卷組,應首先把它從文件系統中卸載,如:
# unmount /mnt/design/users
8.2 設置卷組爲非活動狀態
把卷組從內核中卸載,以免任何對它可能的操做:
# vgchange -an test_vg
vgchange -- volume group "test_vg" successfully deactivated
8.3 Export 卷組
這個操做不是必須的,便它能夠防止系統對卷組的訪問:
# vgexport test_vg
vgexport -- volume group "test_vg" sucessfully exported
當機器關機後,構成卷組的硬盤就可被轉移到新的服務器上。
8.4 Import 卷組
在新的服務器上,可用pvscan查看卷組狀況,如在這臺計算機上,硬盤新的設備爲/dev/sdb,使用pvscan可有:
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1" is in EXPORTED VG "test_vg" [996 MB / 996 MB free]
pvscan -- inactive PV "/dev/sdb2" is in EXPORTED VG "test_vg" [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
現能夠import卷組test_vg (同時也激活它)以安裝其上的文件系統
# vgimport test_vg /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "test_vg"
vgimport -- volume group "test_vg" successfully imported and activated
8.5 安裝文件系統
# mkdir -p /mnt/design/users
# mount /dev/test_vg/users /mnt/design/users
在完成以上操做後,原卷組在新的服務器上就可以使用了。
9 分割卷組
這種狀況是:須要在系統中加入新的卷組,但沒有其它可用新硬盤,而已有的卷組中還有大量空間可用。如向系統加入一個"design"卷組。
9.1 檢查可用空間
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE PV "/dev/sda" of VG "dev" [1.95 GB / 0 free]
pvscan -- ACTIVE PV "/dev/sdb" of VG "sales" [1.95 GB / 1.27 GB free]
pvscan -- ACTIVE PV "/dev/sdc" of VG "ops" [1.95 GB / 564 MB free]
pvscan -- ACTIVE PV "/dev/sdd" of VG "dev" [1.95 GB / 0 free]
pvscan -- ACTIVE PV "/dev/sde" of VG "ops" [1.95 GB / 1.9 GB free]
pvscan -- ACTIVE PV "/dev/sdf" of VG "dev" [1.95 GB / 1.33 GB free]
pvscan -- ACTIVE PV "/dev/sdg1" of VG "ops" [996 MB / 432 MB free]
pvscan -- ACTIVE PV "/dev/sdg2" of VG "dev" [996 MB / 632 MB free]
pvscan -- total: 8 [13.67 GB] / in use: 8 [13.67 GB] / in no VG: 0 [0]
咱們決定把/dev/sdg1與/dev/sdg2分配組design,但首先要把其上的物理塊移到其它卷的空閒空間中(如把卷組dev移到/dev/sdf,卷組ops移到/dev/sde)。
9.2 從選定硬盤移出數據
因爲硬盤上的邏輯卷仍在使用,故首先要轉移它們的數據。
把全部在使用的物理塊從/dev/sdg1上轉移到/dev/sde,及從/dev/sdg2轉移到/dev/sdf。
# pvmove /dev/sdg1 /dev/sde
pvmove -- moving physical extents in active volume group "ops"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "ops"
pvmove -- 141 extents of physical volume "/dev/sdg1" successfully moved
# pvmove /dev/sdg2 /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "dev"
pvmove -- 91 extents of physical volume "/dev/sdg2" successfully moved
9.3 建立新卷組
如今把/dev/sdg2從卷組dev從分割出並加入到新卷組design中。咱們可用vgreduce與vgcreate完成工做,但vgsplit此時更方便:
# vgsplit dev design /dev/sdg2
vgsplit -- doing automatic backup of volume group "dev"
vgsplit -- doing automatic backup of volume group "design"
vgsplit -- volume group "dev" successfully split into "dev" and "design"
9.4 移除剩餘的卷
接下來的工做 把/dev/sdg1從卷組ops中分出並加入卷組design:
# vgreduce ops /dev/sdg1
vgreduce -- doing automatic backup of volume group "ops"
vgreduce -- volume group "ops" successfully reduced by physical volume:
vgreduce -- /dev/sdg1
# vgextend design /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "design"
vgextend -- volume group "design" successfully extended
9.5 創建新邏輯卷及文件系統
在卷組design上創建邏輯卷,爲從此的方便,現只使用一部分空間:
# lvcreate -L750M -n users design
lvcreate -- rounding up size to physical extent boundary "752 MB"
lvcreate -- doing automatic backup of "design"
lvcreate -- logical volume "/dev/design/users" successfully created
# mke2fs /dev/design/users
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
96384 inodes, 192512 blocks
9625 blocks (5.00<!-- ) reserved for the super user
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mkdir -p /mnt/design/users
# mount /dev/design/users /mnt/design/users/
如今就可以使用卷組design。爲方便使用,可把下面一行加入文件/etc/fstab中:
/dev/design/user /mnt/design/users ext2 defaults 1 2
10 轉變根文件系統爲LVM
注意:強烈要求在進行下面的操做前對系統進行備份,而且把/文件系統創建在LVM上會致使系統升級很複雜。
在下面的例子中,系統除了/boot外都安裝在同一個分區中,文件系統的狀況爲:
/dev/hda1 /boot
/dev/hda2 swap
/dev/hda3 /
進行轉換的一個必要條件是硬盤上還有足夠的空間給分區/dev/hda4創立LVM並把/分區的內容都複製到LVM上,不然:
1./分區還有至少一半空間空閒,能夠縮減/分區,並把分出的空間劃分到分區/dev/hda4;
爲方即可用GNU parted工具:ftp://ftp.gnu.org/pub/gnu/parted;它可縮減帶有文件系統的分區。一樣也可用resize2fs與fdisk完成這個操做;
2.硬盤上已無足夠空間,必須使用第二塊硬盤,如/dev/hdb。
在完成以上準備及備份系統後,可繼續如下步驟:
1.確認使用的Linux內核支持LVM,而且在編譯時設置了 CONFIG BLK DEV RAM 與 CONFIG BLK DEV INITRD 。
2.設置/dev/hda4分區類型爲LVM(8e):
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Unknown)
Command (m for help): w
3.設置LVM:
"初始化LVM (vgscan)
# vgscan
"轉變分區爲PV:
# pvcreate /dev/hda4
"創建卷組:
# vgcreate vg /dev/hda4
"創建邏輯卷用以存放根系統:(這裏假設空間爲250MB)
# lvcreate -L250M root vg
4.在邏輯捲上創建文件系統並把系統複製到其上:
# mke2fs /dev/vg/root
# mount /dev/vg/root /mnt/
# find / -xdev | cpio -pvmd /mnt
5.修改新系統的fstab文件/mnt/etc/fstab,使/安裝到/dev/vg/root:
/dev/hda3 / ext2 defaults 1 1
改變爲:
/dev/vg/root / ext2 defaults 1 1
6.建立LVM初始化RAM盤:
# lvmcreate_initrd
此處要確認爲lvmcreate_init給出正確的initrd image文件名,它應在/boot/ 目錄下。
7. 在/etc/lilo.conf 中爲LVM加入新入口項,其形式以下:
image = /boot/KERNEL_IMAGE_NAME
label = lvm
root = /dev/vg/root
initrd = /boot/INITRD_IMAGE_NAME
ramdisk = 8192
此處 KERNEL IMAGE NAME是支持LVM的內核,INITRD IMAGE NAME 指由lvmcreate_initrd創建 的initrd image。若是LVM的配置不少,能夠把ramdisk設置的大一些:此處爲8192,缺省爲4096。在 lvmcrate_initrd的輸出中有以下一行:
lvmcreate_initrd -- making loopback file (6189 kB)
其中括號中的數值爲實際所需大小。
8.運行LILO,設置BOOT扇區:
# lilo
9.重啓計算機,在LILO提示符處輸入"lvm" 啓動計算機,此時系統的根文件系統是新創建的邏輯卷。此後可在LILO配置文件/etc/lilo.conf中加入如下一行:
default=lvm
並運行lilo設置缺省啓動項爲lvm。
若是系統未能正常啓動,可能的緣由是內核不支持LVM、initrd image不正確等等。
10.在正常啓動後,就可把硬盤其它分區:/dev/hda3加入LVM。
"首先設置分區類型爲 8e(LVM)
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Unknown)
Command (m for help): w
"把它初始化爲PV,並加入卷組中:
# pvcreate /dev/hda3
# vgextend vg /dev/hda3
11 共享LVM卷
LVM不支持物理共享訪問,這會致使數據的丟失。
在使用fibre-channel 或shared-SCSI 的環境中,多臺計算機以物理方式直接訪問一組硬盤,因而可使用LVM把這些硬盤分爲不一樣的邏輯卷。若是須要共享數據,則應使用GFS。
12 參考文獻
AJ Lewis,LVM HOWTO,(http://tldp.org/HOWTO/LVM-HOWTO/),Sistina Software, Inc。
********************************************************************************html