- 論壇徽章:
- 0
|
注:LVM現(xiàn)在有LVM1,LVM2兩種版本,本文使用的是LVM2
什么是 LVM ? (Logical Volume Manager(邏輯卷管理))
LVM為計算機提供了更高層次的磁盤存儲。
它使系統(tǒng)管理員可以更方便的為應(yīng)用與用戶分配存儲空間。
在LVM管理下的存儲卷可以按需要隨時改變大小與移除
(可能需對文件系統(tǒng)工具進行升級)。LVM也允許按用戶組對存儲卷進行管理,
允許管理員用更直觀的名稱(如"sales'、'development')代替物理磁盤名
(如'sda'、'sdb')來標(biāo)識存儲卷。
簡單的說就是LVM管理介于物理介質(zhì)(hda,md,loop)和文件系統(tǒng)(ReiserFS)之間
使用LVM可以靈活的管理分區(qū),在需要時,方便的增加或減小分區(qū)的大小
不用重新"格式化",甚至不用重新啟動系統(tǒng),這對于服務(wù)器系統(tǒng)來說很實用。
對于個人用戶也是分區(qū)管理的絕佳選擇,例如用幾十G的空間來裝linux
分區(qū)是很頭疼的,簡單的分成 "/","SWAP" 太過草率,也不利于管理,而分出/usr
/var /opt .... 對于每個分區(qū)大小要評估的準(zhǔn)確,不然以后使用中出現(xiàn)
空間不夠的情況,可能就需要轉(zhuǎn)移數(shù)據(jù),重新分區(qū),很麻煩。
而使用LVM管理,就容易多了,可以先按照當(dāng)前需要分配空間,當(dāng)不夠用的時候再增加
而這一切只是簡單的幾條命令就可以完成,甚至不用重新啟動就可以使用擴展后的空間了。
使用LVM2需要三件事:
1. 安裝device-mapper庫
2. 安裝lvm2 tools
3. 在內(nèi)核中支持device-mapper
注意:以下方法僅適用于2.6.x內(nèi)核,使用udev或devps管理設(shè)備文件。
2.4.x內(nèi)核請詳細查看device-mapper的INSTALL文件。
首先下載device-mapper庫以及l(fā)vm2 tools:
http://sources.redhat.com/lvm2/
這里會得到lvm2相關(guān)資源信息
ftp://sources.redhat.com/pub/dm/
這里下載device-mapper庫
ftp://sources.redhat.com/pub/lvm2/
這里下載lvm2 tools
我使用的版本是:LVM2.0-stable.tgz device-mapper-stable.tgz
安裝device-mapper庫,lvm2 tools :
device-mapper-stable.tgz使用如下命令安裝:
tar zxvf device-mapper-stable.tgz &&
cd device-mapper.1.00.21/ &&
./configure && make && make install
安裝好device-mapper后安裝lvm2.0-stable.tgz :
tar zxvf LVM2.0-stable.tgz &&
cd LVM2.2.00.33 &&
./configure && make install
內(nèi)核中支持device-mapper :
就是這里,害我編譯內(nèi)核十幾次,我使用的是2.6.10-mm3支持ReiserFS 4.0的內(nèi)核
代碼:
Device Drivers --->
Multiple devices driver support (RAID and LVM) ---->
Device mapper support
Crypt target support
Snapshot target (EXPERIMENTAL)
Mirror target (EXPERIMENTAL)
Zero target (EXPERIMENTAL)
只是支持了Device mapper,沒有選擇其他的特性。
編譯安裝好device-mapper lvm-tools 后,使用pvcreate,vgcreate成功的創(chuàng)建了
物理卷(PV),卷組(VG),當(dāng)使用lvcreate創(chuàng)建邏輯卷(LV)時,出現(xiàn)了"segment fault"
首先懷疑是因為gcc的CFLAGS,CXXFLAGS(優(yōu)化參數(shù))造成的,于是unset CFLAGS CXXFLAGS
重新編譯device-mapper lvm2,仍然出現(xiàn)錯誤。
難道是內(nèi)核錯誤?重新編譯內(nèi)核......
將Device mapper support 下面的全部選擇,編譯進核心,仍然錯誤。。。。
編譯內(nèi)核去掉CFLAGS,CXXFLAGS再編譯,還是錯誤。。。。 莫非是整個環(huán)境問題?
換到未優(yōu)化的lfs中,編譯。。安裝。。。。錯誤。。。
![]()
不甘心,換到Mandrake 使用標(biāo)準(zhǔn)2.6.10內(nèi)核,另一個.config編譯,安裝。。
竟然成功了?把這個內(nèi)核作為兩個lfs的內(nèi)核啟動,竟然都正常了!
把成功的.config 拿到2.6.10-mm3中,編譯。。。。安裝。。。又出錯了。。
難道只有在MDK環(huán)境編譯出來的才可用?
不應(yīng)該,沒道理。 內(nèi)核版本問題??
mv過來標(biāo)準(zhǔn)的2.6.10內(nèi)核,編譯。。。安裝。。。。成功了。
faint...竟然是2.6.10-mm3內(nèi)核的問題。。。lvm+ReiserFS 4.0 是不可以了
![]()
所以這里建議最好使用標(biāo)準(zhǔn)的內(nèi)核,不容易出問題。。。。。。。
最終我只選擇了 Device mapper support 如果希望使用其他特性
比如pvmove 就要選擇Mirror target的支持. 這些特性請查看相關(guān)文檔.
![]()
編譯好內(nèi)核,udev/devps就應(yīng)該會根據(jù)/proc/misc中的"Num device-mapper"
在/dev/下 建立mapper目錄,并且在目錄中建立control這個字符設(shè)備。
其設(shè)備號由Num決定,如:我的/proc/misc中是:63 device-mapper
則control應(yīng)該為:
crw------- 1 root root 10, 63 2005-02-10 09:22 /dev/mapper/control
如果你沒有這個control就需要手動建立一個:
[root@NEWLFS ~]#cat /proc/misc | grep device-mapper | awk '{print $1}'
得到control的設(shè)備號,我的是63.
[root@NEWLFS ~]#mkdir /dev/mapper
[root@NEWLFS ~]#mknod /dev/mapper/control c 10 設(shè)備號
基本使用udev/devps管理設(shè)備,都會自動建立好這些的。
現(xiàn)在已經(jīng)編譯好了內(nèi)核,安裝好了device-mapper lvm2,一切準(zhǔn)備就緒,開始動工
![]()
先說一下幾個需要知道的概念:
來看看LVM的組成:
代碼:
hda1 hdc1 (PV:s on partitions or whole disks)
/
/
diskvg (VG)
/ |
/ |
usrlv rootlv varlv (LV:s)
| | |
ext2 reiserfs xfs (filesystems)
PV (Physical Volume物理卷):
物理卷可以是整個硬盤(hda),也可以是某個分區(qū)(hda1),md(software raid),loop設(shè)備....
VG (Volume Group 卷組):
卷組是LVM中最高抽象層,是由一個或多個物理卷所組成的存儲器池。
從圖中可以看出,卷組是由一個或幾個物理卷組成,然后分支成若干個LV.
LV (Logical Volume 邏輯卷):
邏輯卷相當(dāng)于非LVM系統(tǒng)中的分區(qū),它在卷組上建立
是一個標(biāo)準(zhǔn)的塊設(shè)備,可以在其上建立文件系統(tǒng)。
代碼:
+-- Volume Group --------------------------------+
| |
| +----------------------------------------+ |
| PV | PE | PE | PE | PE | PE | PE | PE | PE | |
| +----------------------------------------+ |
| . . . . |
| . . . . |
| +----------------------------------------+ |
| LV | LE | LE | LE | LE | LE | LE | LE | LE | |
| +----------------------------------------+ |
| . . . . |
| . . . . |
| +----------------------------------------+ |
| PV | PE | PE | PE | PE | PE | PE | PE | PE | |
| +----------------------------------------+ |
| |
+------------------------------------------------+
PE (Physical Extent物理塊):
物理卷按大小相等的"塊"為單位存儲,塊的大小與卷組中邏輯卷塊的大小相同。
LE (Logical Extent 邏輯塊):
邏輯卷按"塊"為單位存儲,在一卷組中的所有邏輯卷的塊大小是相同的。
OK,基本概念已經(jīng)了解了,使用lvm基本流程就是:
初始化物理卷---> 創(chuàng)建卷組,將PV加入到卷組中--->創(chuàng)建邏輯卷---->創(chuàng)建文件系統(tǒng)
1. 初始化物理卷 :
在初始化物理卷之前,我已經(jīng)清空了/dev/hda5,并且標(biāo)識分區(qū)類型為83(linux分區(qū))
在LVM1中,必須將分區(qū)類型標(biāo)識為8E(LVM分區(qū))才可以使用,lvm2中沒有這個限制。
在創(chuàng)建之前,先修改下/etc/lvm/lvm.conf :
# Exclude the cdrom drive
filter = [ "r|/dev/cdrom|" ]
找到上面兩行,將filter前面的#去掉,這樣創(chuàng)建LV時就不會搜尋/dev/cdrom了。
不然也很煩,總是提示/dev/cdrom錯誤。修改好后,執(zhí)行vgscan命令使生效.
[root@NEWLFS LVM2.2.00.33]#vgscan
使用pvcreate PV1 [PV2.....] 創(chuàng)建物理卷:
[root@NEWLFS mnt]#pvcreate /dev/hda5
Physical volume "/dev/hda5" successfully created
[root@NEWLFS mnt]#
使用 pvdisplay 查看PV詳細信息:
[root@NEWLFS mnt]#pvdisplay
代碼:
--- Physical volume ---
PV Name /dev/hda5
VG Name lvm_vg
PV Size 20.85 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 5338
Free PE 4076
Allocated PE 1262
PV UUID y5LlEs-iBIY-t3PU-gTaT-ZIUt-iDmE-b9J9aC
[root@NEWLFS mnt]#
2.創(chuàng)建卷組,并將PV加入到卷組中:
使用vgcreate VGNAME PV1 [PV2......]創(chuàng)建卷組
[root@NEWLFS mnt]#vgcreate lvm_vg /dev/hda5
Volume group "lvm_vg" successfully created
[root@NEWLFS mnt]#
使用vgdisplay 查看VG詳細信息:
[root@NEWLFS mnt]#vgdisplay
代碼:
--- Volume group ---
VG Name lvm_vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 20.85 GB
PE Size 4.00 MB
Total PE 5338
Alloc PE / Size 1262 / 4.93 GB
Free PE / Size 4076 / 15.92 GB
VG UUID TFjqOG-5aHq-6SUz-q96N-Lu20-GrrP-Qvh2WM
[root@NEWLFS mnt]#
當(dāng)重新啟動或執(zhí)行vgchange -a n 后,需要重新激活VG,才可以訪問VG,LV
[root@NEWLFS mnt]#vgchange -a y lvm_vg
1 logical volume(s) in volume group "lvm_vg" now active
[root@NEWLFS mnt]#
當(dāng)關(guān)機或不再使用VG時,使用 vgchage -a n VGNAME 使VG不可用。
[root@NEWLFS mnt]#vgchange -a n lvm_vg
0 logical volume(s) in volume group "lvm_vg" now active
[root@NEWLFS mnt]#
3. 創(chuàng)建邏輯卷:
使用lvcreate -L Size -n NAME VGNAME 創(chuàng)建邏輯卷:
[root@NEWLFS ~]#lvcreate -L 2G -n lv_home lvm_vg
Logical volume "lv_home" created
[root@NEWLFS ~]#
使用lvdisplay 查看LV詳細信息:
[root@NEWLFS mnt]#lvdisplay
代碼:
--- Logical volume ---
LV Name /dev/lvm_vg/lv_usr
VG Name lvm_vg
LV UUID zrpaw1-vMdI-KvT2-4XlA-2TxZ-4iV8-38fN88
LV Write Access read/write
LV Status NOT available
LV Size 2.93 GB
Current LE 750
Segments 1
Allocation inherit
Read ahead sectors 0
--- Logical volume ---
LV Name /dev/lvm_vg/lv_home
VG Name lvm_vg
LV UUID spGvLc-8lOM-CgAi-8XvI-E5Jt-xCce-l4B54K
LV Write Access read/write
LV Status available
# open 0
LV Size 2.00 GB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0
[root@NEWLFS mnt]#
由于我之前已經(jīng)創(chuàng)建了一個lv_usr 所以這里顯示兩個LV
最后一步,創(chuàng)建文件系統(tǒng)。這里我使用ReiserFS 3.6.19 :
[root@NEWLFS mnt]#mkreiserfs /dev/lvm_vg/lv_home
代碼:
..........略
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
Tell your friends to use a kernel based on 2.4.18 or later,
and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.
ReiserFS is successfully created on /dev/lvm_vg/lv_home.
[root@NEWLFS mnt]#
創(chuàng)建掛載點,掛載它:
[root@NEWLFS mnt]#mkdir lvm_usr lvm_home
[root@NEWLFS mnt]#mount -t reiserfs /dev/lvm_vg/lv_home lvm_home/
[root@NEWLFS mnt]#df
代碼:
Filesystem Size Used Avail Use% Mounted on
/dev/md0 5.4G 2.8G 2.7G 51% /
/dev/hda1 6.4G 4.0G 2.5G 62% /mnt/C
/dev/hda6 25G 22G 3.6G 86% /mnt/E
/dev/hda7 9.7G 3.7G 5.6G 40% /mnt/lfs
/dev/hda8 99M 18M 76M 20% /boot
/dev/hda10 6.7G 2.9G 3.4G 46% /mnt/mdk
/dev/mapper/lvm_vg-lv_home
2.0G 33M 2.0G 2% /mnt/lvm_home
[root@NEWLFS mnt]#
OK,現(xiàn)在已經(jīng)成功的創(chuàng)建好了邏輯卷,并且使用了ReiserFS,可以投入使用啦。
下一部分說一下 如何管理LVM
Have Fun !
![]()
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/3166/showart_12661.html |
|