国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
LVM (Logical Volume Manager) 詳細(xì)講解 - Linux高級(jí)應(yīng)用...

[推薦] LVM (Logical Volume Manager) 詳細(xì)講解

1. 緒論
歡迎你,親愛的讀者。

寫這個(gè)文檔的目的是為了告訴你什么是LVM,它怎樣工作,你怎樣運(yùn)用它使你的生活變得更容易。雖然有一份LVM FAQ,但仍是德文的,它是從不同的角度來描寫的。它是一份“真的”HOWTO,在傳授理解(有希望的)的時(shí)候也是非常內(nèi)行的。

我要說清楚我不是一個(gè)Linux邏輯卷管理器(Logical Volume Manager)的作者。我向那些作者表示敬意,同時(shí)我希望能和他們合作。

不可思議的是我甚至不知道LVM的開發(fā)者。我希望這種情況不久會(huì)改變。我事先向他們表示道歉。

1.1 免責(zé)聲明 & 許可
分發(fā)這個(gè)文檔是希望它對(duì)你有用,但是不提供任何擔(dān)保,也沒有銷售或適應(yīng)特殊目的的隱含擔(dān)保。

如果你的磁盤融化了,你公司解雇了你--這決不是我們的錯(cuò)。對(duì)不起。請(qǐng)記得經(jīng)常做備份,在沒有重要數(shù)據(jù)的系統(tǒng)上做實(shí)驗(yàn)。

此外,Richard Allen不代表他老板說話。

Linux是Linus Torvalds的注冊(cè)商標(biāo)。

英文原文(若翻譯有誤,以原文為準(zhǔn))

This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If your disks melt and your company fires you - its never our fault. Sorry. Make frequent backups and do your experiments on non-mission critical systems.

Furthermore, Richard Allen does not speak for his employer.

Linux is a registered trademark of Linus Torvalds.

1.2 預(yù)備知識(shí)
不是太多。如果你曾經(jīng)安裝過Linux和創(chuàng)建過文件系統(tǒng)(fdisk/mkfs),那你就準(zhǔn)備就緒了。但因?yàn)榭偸且詒oot身份操作,所以一定要小心謹(jǐn)慎!錯(cuò)誤的命令或操作設(shè)備文件都可能損壞已經(jīng)存在的數(shù)據(jù)。

如果你知道怎樣配置HP/UX LVM,那你幾乎都完成了,Linux工作得很象HP上的處理。

1.3 注意事項(xiàng)
關(guān)于這份文檔有幾點(diǎn)需要注釋。雖然我寫了大部分,但我真的不希望它停步。我堅(jiān)決相信Open Source,我鼓勵(lì)你反饋、更新、打補(bǔ)丁等等。不要不愿意告訴我們有關(guān)排版或普通的老錯(cuò)誤。

如果你感覺你更有資格來維護(hù)一部分,或者你認(rèn)為你能創(chuàng)作和維護(hù)一個(gè)新的部分,歡迎你。這個(gè)HOWTO的SGML格式是通過CVS可用的。我預(yù)想這會(huì)是個(gè)合作計(jì)劃。

這份文檔里,你會(huì)發(fā)現(xiàn)許多FIXME的通知。補(bǔ)丁總是歡迎的!無論你在哪里發(fā)現(xiàn)FIXME,你都要明白你正踩在未知的領(lǐng)域。這不是說其他地方?jīng)]有錯(cuò)誤,而是說這里是要特別注意的地方。如果你已經(jīng)驗(yàn)證了什么,請(qǐng)告訴我,我好刪除這FIXME通知。

1.4 訪問,CVS & 更新
這份HOWTO的規(guī)范定位在 這里。

我們現(xiàn)在有匿名的CVS訪問,對(duì)全世界普遍有效。這使你更容易獲得最新版的HOWTO,并提供改變和增強(qiáng)。

如果你想通過CVS獲得這份HOWTO,下面教你怎樣做:

$ export CVSROOT=:pserver:anon@outpost.ds9a.nl:/var/cvsroot
$ cvs login
CVS password: [enter cvs (without s)]
$ cvs co lvm-howto
cvs server: Updating lvm-howto
U lvm-howto/lvm-howto.sgml


如果你發(fā)現(xiàn)錯(cuò)誤,或者想增加什么,本地修復(fù)它,并運(yùn)行“cvs diff -u”,同時(shí)將結(jié)果發(fā)給我們。

提供了一個(gè)Makefile文件來幫助你創(chuàng)建postscript,dvi,pdf,html 和 plain text格式。你可能需要安裝sgml-tools,ghostscript 和 tetex 以獲得所有格式。

1.5 這份文檔的編排
我們將首先解釋一些需要的基本知識(shí)。我們盡量設(shè)法包括例子來幫助理解。


2. 什么是LVM?
傳統(tǒng)上,一個(gè)分區(qū)大小是靜態(tài)的。這要求一個(gè)系統(tǒng)安裝人員必須考慮的不是“我要在這個(gè)分區(qū)上存儲(chǔ)多少數(shù)據(jù)”,而是“我‘究竟’要在這個(gè)分區(qū)上存儲(chǔ)多少數(shù)據(jù)”。當(dāng)一個(gè)用戶在這個(gè)分區(qū)上沒有空間了,他要么不得不重新分區(qū)(這可能要求整個(gè)操作系統(tǒng)重裝),要么象符號(hào)連接一樣使用組裝機(jī)。

一個(gè)分區(qū)就是物理磁盤上一系列連續(xù)數(shù)據(jù)塊的概念已經(jīng)演變了。多數(shù)類Unix系統(tǒng)現(xiàn)在有能力分解物理磁盤到許多單元。多個(gè)驅(qū)動(dòng)器上的存儲(chǔ)單元可以匯聚成一個(gè)“邏輯卷”,它們可以分配給分區(qū)。另外,單元可以隨著空間要求的改變而從分區(qū)中添加和刪除。

這就是基本的邏輯卷管理器(LVM)

例如,假設(shè)你有一個(gè)1GB的磁盤,并且創(chuàng)建“/home”分區(qū)花了600MB。設(shè)想你沒有空間了,于是決定“/home”需要1GB。用傳統(tǒng)的分區(qū)觀念,你不得不有另外一個(gè)至少1GB大小的驅(qū)動(dòng)器。接著增加這個(gè)磁盤,創(chuàng)建新的/home,并且將現(xiàn)有的數(shù)據(jù)拷貝過去。

然而,用LVM配置,你僅僅只需要增加400MB(或更大)的磁盤,并將它的存儲(chǔ)單元添加到“/home”分區(qū)中。其他工具可以讓你調(diào)整原來文件系統(tǒng)的大小,所以你僅僅只需要調(diào)整“/home”大小來使用更大的分區(qū),接著返回到商務(wù)中。

一個(gè)非常特殊的處理,LVM甚至可以做它自身的“快照”,這使你能對(duì)不可移動(dòng)的目標(biāo)做備份。我們返回到這個(gè)激動(dòng)人心的可能中,稍后,有許多另外的真實(shí)應(yīng)用。

以下章節(jié)中,我們解釋了LVM的基本要素,和它使用中的許多概要。


3. 基本原理
Ok,不要因?yàn)榭謶侄V?,但是LVM有許多你要明白的術(shù)語,以免你危及你的文件系統(tǒng)。

我們從下面開始,或多或少。

物理介質(zhì) The physical media
你應(yīng)該感受“物理”這個(gè)單詞有極大的延伸,雖然我們剛開始假設(shè)它僅僅是一個(gè)硬盤,或者一個(gè)分區(qū)。例如,/dev/hda,/dev/hda6,/dev/sda。你可以轉(zhuǎn)換一個(gè)塊設(shè)備上任何連續(xù)塊到一個(gè)。。。
 
物理卷 Physical Volume (PV)
一個(gè)PV只不過是有許多管理數(shù)據(jù)添加在它里面的物理介質(zhì)--一旦你添加了它,LVM就認(rèn)為它是。。。的一個(gè)持有者。
 
物理分區(qū) Physical Extents (PE)
物理分區(qū)真的象一些大的數(shù)據(jù)塊,通常有幾MB。PE可以分配給一個(gè)。。。
 
卷組 Volume Group (VG)
一個(gè)VG是由許多物理分區(qū)組成的(可能來自多個(gè)物理卷或硬盤)。雖然這可能容易讓你認(rèn)為一個(gè)VG就是由幾個(gè)硬盤組成的(例如/dev/hda和/dev/sda),但是更確切的說,它包含由這些硬盤提供的許多PE。
 
>;從這個(gè)卷組,PE可以分配給一個(gè)。。。
 
邏輯卷 Logical Volume (LV)
Yes,我們最終到達(dá)某處。一個(gè)邏輯卷是我們工作的最終結(jié)果,這里是我們存儲(chǔ)信息的地方。這等同于傳統(tǒng)分區(qū)的想法。
象用通常的分區(qū)一樣,在邏輯卷上你能代表性的創(chuàng)建一個(gè)。。。
 
文件系統(tǒng) Filesystem
文件系統(tǒng)是你想它成為的形態(tài):標(biāo)準(zhǔn)的 ext2,ReiserFS,NWFS,XFS,JFX,NTFS,等等。。。對(duì)Linux內(nèi)核來說,在通常的分區(qū)和邏輯卷之間沒有差別。
我試著畫了一個(gè)ASCII圖來使這些形象化。

一個(gè)物理卷,包含了許多物理分區(qū):

+-----[ Physical Volume ]------+
| PE | PE | PE | PE | PE | PE |
+------------------------------+

一個(gè)卷組,包含了2個(gè)物理卷(PV)有6個(gè)物理分區(qū):

+------[ Volume Group ]-----------------+
| +--[PV]--------+ +--[PV]---------+ |
| | PE | PE | PE | | PE | PE | PE | |
| +--------------+ +---------------+ |
+---------------------------------------+

我們現(xiàn)在做更進(jìn)一步擴(kuò)展:

+------[ Volume Group ]-----------------+
| +--[PV]--------+ +--[PV]---------+ |
| | PE | PE | PE | | PE | PE | PE | |
| +--+---+---+---+ +-+----+----+---+ |
| | | | +-----/ | | |
| | | | | | | |
| +-+---+---+-+ +----+----+--+ |
| | Logical | | Logical | |
| | Volume | | Volume | |
| | | | | |
| | /home | | /var | |
| +-----------+ +------------+ |
+---------------------------------------+


這個(gè)向我們展示了兩個(gè)文件系統(tǒng),它跨越兩個(gè)磁盤。/home文件系統(tǒng)包含4個(gè)物理分區(qū),/var文件系統(tǒng)包含2個(gè)。

bert hubert 正在寫一個(gè)工具來更真實(shí)的描述LVM,這里提供了一些它在屏幕上出現(xiàn)的外觀??雌饋肀華SCII圖畫要好。

3.1 Show & Tell
Ok,這些概念很難理解(’We are LVM of Borg...),因此下面給出了創(chuàng)建一個(gè)邏輯卷的例子。不要粘貼這個(gè)例子到你的控制臺(tái),因?yàn)檫@樣會(huì)破壞數(shù)據(jù),除非碰巧你的計(jì)算機(jī)的/dev/hda3和/dev/hdb2沒有使用。

如果有疑問,查看上面的ASCII圖畫。

你應(yīng)該首先設(shè)置/dev/hda3和/dev/hdb2的分區(qū)類型為0x8e,它表示”Linux LVM”。請(qǐng)注意你的fdisk的版本可能仍不認(rèn)識(shí)這種類型,因此它顯示為“Unknown”:


# fdisk /dev/hda

Command (m for help): p

Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 2 16033+ 83 Linux
/dev/hda2 3 600 4803435 83 Linux
/dev/hda3 601 607 56227+ 83 Linux
/dev/hda4 608 614 56227+ 83 Linux

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e

Command (m for help): p

Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 1 2 16033+ 83 Linux
/dev/hda2 3 600 4803435 83 Linux
/dev/hda3 601 607 56227+ 8e Unknown
/dev/hda4 608 614 56227+ 83 Linux

Command (m for help): w

我們對(duì)/dev/hdb2做同樣的操作,在此就不演示了。這是需要的,以至LVM能重建你應(yīng)該丟失的配置。

通常,不需要重啟,但有些計(jì)算機(jī)卻要求。因此如果下面的例子不工作,試試重啟。

接著我們創(chuàng)建物理卷(PV),如下:


# pvcreate /dev/hda3
pvcreate -- physical volume "/dev/hda3" successfully created
# pvcreate /dev/hdb2
pvcreate -- physical volume "/dev/hdb2" successfully created

我們?cè)賹⑦@兩個(gè)物理卷(PV)加到一個(gè)叫做“test”的卷組(VG)中:


# vgcreate test /dev/hdb2 /dev/hda3
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "test"
vgcreate -- volume group "test" successfully created and activated

現(xiàn)在我們有一個(gè)空的卷組(VG),讓我們來檢查一下:


# vgdisplay -v test
--- Volume group ---
VG Name test
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 184 MB
PE Size 4 MB
Total PE 46
Alloc PE / Size 0 / 0
Free PE / Size 46 / 184 MB

--- No logical volumes defined in test ---


--- Physical volumes ---
PV Name (#) /dev/hda3 (2)
PV Status available / allocatable
Total PE / Free PE 13 / 13

PV Name (#) /dev/hdb2 (1)
PV Status available / allocatable
Total PE / Free PE 33 / 33

這里的許多數(shù)據(jù)--大多數(shù)現(xiàn)在都容易理解了。我們看到?jīng)]有邏輯卷(LV)定義,因此我們要補(bǔ)上它。我們將在“test”卷組(PV)中創(chuàng)建一個(gè)50MB的邏輯卷,叫做“HOWTO”:


# lvcreate -L 50M -n HOWTO test
lvcreate -- rounding up size to physical extent boundary "52 MB"
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created

Ok,到這里,我們創(chuàng)建一個(gè)文件系統(tǒng):


# mke2fs /dev/test/HOWTO
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
First data block=1
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961

Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mount /dev/test/HOWTO /mnt
# ls /mnt
lost+found

我們做完了!讓我們回顧我們的卷組(VG),它現(xiàn)在充滿了一些東西:


# vgdisplay test -v
--- Volume group ---
VG Name test
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 1
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 184 MB
PE Size 4 MB
Total PE 46
Alloc PE / Size 13 / 52 MB
Free PE / Size 33 / 132 MB

--- Logical volume ---
LV Name /dev/test/HOWTO
VG Name test
LV Write Access read/write
LV Status available
LV # 1
# open 1
LV Size 52 MB
Current LE 13
Allocated LE 13
Allocation next free
Read ahead sectors 120
Block device 58:0


--- Physical volumes ---
PV Name (#) /dev/hda3 (2)
PV Status available / allocatable
Total PE / Free PE 13 / 13

PV Name (#) /dev/hdb2 (1)
PV Status available / allocatable
Total PE / Free PE 33 / 20

好,這就是了。/dev/hda3完全沒用,而/dev/hdb2有13個(gè)物理分區(qū)(PE)在用。

3.2 激活和非激活:內(nèi)核空間和用戶空間
和使用所有操作系統(tǒng)一樣,Linux劃分了兩個(gè)部分:內(nèi)核空間(kernel space)和用戶空間(user space)。用戶空間有時(shí)叫做用戶區(qū)(userland),這也是關(guān)于這個(gè)主題的一個(gè)很好的名字。

關(guān)于邏輯卷管理器的創(chuàng)建和修改都是在用戶空間做的,然后傳給內(nèi)核。一旦卷組或邏輯卷向內(nèi)核匯報(bào),它就叫做“激活(Active)”。當(dāng)它被激活時(shí),只有某些更改可以執(zhí)行,其他的更改只有在它非激活時(shí)執(zhí)行。


4. 首要條件
LVM在很大范圍內(nèi)的內(nèi)核中都有效。在Linux 2.4,LVM將全部被集成。內(nèi)核2.3.47和以前的,LVM要經(jīng)過處理來合并到主內(nèi)核中。

4.1 內(nèi)核
Linux 2.4
包含了你需要的所有內(nèi)容。希望大多數(shù)的發(fā)行版都將LVM當(dāng)成模塊集成來發(fā)行。如果你需要編譯,僅僅是當(dāng)你選擇塊設(shè)備時(shí)打勾LVM選項(xiàng)。

Linux 2.3.99.*
一旦內(nèi)核向前發(fā)展穩(wěn)定了,這部分就不會(huì)存在了。但是現(xiàn)在,我們還是要描述一下。

當(dāng)我們寫這篇文檔時(shí),Linux最新的內(nèi)核版本是2.3.99pre5,它仍然需要一些小的補(bǔ)丁才能使LVM工作。

對(duì)于Linux 2.3.99pre3,有兩個(gè)補(bǔ)丁發(fā)行:

一個(gè)補(bǔ)丁是張貼在linux-kernel,在這里可以找到。

Andrea Arcangeli改進(jìn)了這個(gè)補(bǔ)丁,提供了一個(gè)增量的補(bǔ)丁,它應(yīng)用于2.3.99pre3 LVM補(bǔ)丁和這之上。

對(duì)于Linux 2.3.99pre5,bert hubert將這兩個(gè)補(bǔ)丁合并成一個(gè)了,并且主要針對(duì)2.3.99pre5。在這里可以找到這個(gè)補(bǔ)丁。使用它要小心。

2.3.99pre6-1,是的,是補(bǔ)丁的一個(gè)預(yù)覽版,特色是第一次完成了LVM的支持!它仍然遺漏了Andreas的補(bǔ)丁,但我們確信它不久真的會(huì)發(fā)行的。

2.3.99pre4-ac1缺省有一個(gè)小的補(bǔ)丁在,并且能工作。雖然它不包括Andreas的補(bǔ)丁。

Linux 2.2
FIXME: write this

Linux 2.3
FIXME: write this

4.2 用戶余地
你需要從LVM站點(diǎn)下載有效的工具。用glibc2.1編譯系統(tǒng)要求的一些補(bǔ)丁。即使這樣,在Debian 2.2上仍會(huì)出錯(cuò)。

5. 增長文件系統(tǒng)
你可以用一個(gè)預(yù)備好的腳本做大量的工作,也可以根據(jù)你的需要手工做

5.1 使用e2fsadm
如果在你的卷組中有剩余空間,并且你使用的是ext2文件系統(tǒng)(大多數(shù)人都是這樣的),你就可以使用這個(gè)便捷的工具。

e2fsadm命令利用商業(yè)的resize2fs工具。雖然人們都感覺resize2fs是一個(gè)很好的軟件,但是它并沒有被廣泛的安裝。

如果你想使用FSF的ext2resize命令,你需要告訴e2fsadm以下內(nèi)容:


# export E2FSADM_RESIZE_CMD=ext2resize
# export E2FSADM_RESIZE_OPTS=""

余下的就簡單了,e2fsadm使用時(shí)很象其他的LVM命令:


# e2fsadm /dev/test/HOWTO -L+50M
e2fsadm -- correcting size 102 MB to physical extent boundary 104 MB
e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
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/test/HOWTO: 11/25688 files (0.0% non-contiguous), 3263/102400 blocks
lvextend -- extending logical volume "/dev/test/howto" to 104 MB
lvextend -- doing automatic backup of volume group "test"
lvextend -- logical volume "/dev/test/HOWTO" successfully extended

ext2_resize_fs
ext2_grow_fs
ext2_block_relocate
ext2_block_relocate_grow
ext2_grow_group
ext2_add_group
ext2_add_group
ext2_add_group
ext2_add_group
ext2_add_group
ext2_add_group
direct hits 4096 indirect hits 0 misses 1
e2fsadm -- ext2fs in logical volume "/dev/test/HOWTO" successfully extended to 104 MB

5.2 增長邏輯卷
e2fsadm命令為你做了這些工作。然而,了解怎樣手工來做可能會(huì)有用的。

如果在你的卷組中有剩余空間,那么只需要一行:


# lvextend -L+12M /dev/test/HOWTO
lvextend -- rounding size to physical extent boundary
lvextend -- extending logical volume "/dev/test/HOWTO" to 116 MB
lvextend -- doing automatic backup of volume group "test"
lvextend -- logical volume "/dev/test/HOWTO" successfully extended

5.3 增長卷組
這是用vgextend功能實(shí)現(xiàn)的,它很象餡餅一樣容易。你首先需要?jiǎng)?chuàng)建一個(gè)物理卷。這要用pvcreate來實(shí)現(xiàn)。使用這個(gè)工具,你轉(zhuǎn)換任何塊設(shè)備為一個(gè)物理卷。

這樣做了之后,vgextend做余下的任務(wù):


# pvcreate /dev/sda1
pvcreate -- physical volume "/dev/sda1" successfully created
# vgextend webgroup /dev/sda1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "webgroup"
vgextend -- volume group "webgroup" successfully extended

請(qǐng)注意,為了要做這些,你的卷組必須是激活的。你可以通過執(zhí)行象“vgchange -a y webgroup”來使它激活。

5.4 增長文件系統(tǒng)
如果你想手工做,有兩條路徑可以實(shí)現(xiàn)。

ext2離線,使用ext2resize
離線,就意味著你必須umount這個(gè)文件系統(tǒng)來做這些改變。在做這些改變的時(shí)候,這個(gè)文件系統(tǒng)和它上面的數(shù)據(jù)暫時(shí)不可用。如果你想擴(kuò)充根分區(qū)或其他重要的分區(qū),你必須用其他的啟動(dòng)介質(zhì)來引導(dǎo)。

ext2resize工具可以在GNU ftp站點(diǎn)找到,但大多數(shù)的發(fā)行版都將它作為一個(gè)包來發(fā)行。它的語法也簡單易懂:


# ext2resize /dev/HOWTO/small 40000

這里40000是文件系統(tǒng)已經(jīng)增長或收縮之后的塊的數(shù)目。

ext2在線
FIXME: write this

6. 替換磁盤
這是LVM的好處之一。一旦你發(fā)現(xiàn)某個(gè)磁盤有錯(cuò)誤,那就是要移動(dòng)你的數(shù)據(jù)的時(shí)候了。使用LVM它很象餡餅一樣容易。我們首先舉一個(gè)明顯的替換例子,你先添加一個(gè)磁盤到系統(tǒng)中,它至少要和你想要替換的磁盤一樣大。

要移動(dòng)數(shù)據(jù),我們移動(dòng)卷組的物理分區(qū)到另一個(gè)磁盤上,或者更準(zhǔn)確的說,到另一個(gè)物理卷上。要做這些,LVM給我們提供了pvmove功能。

假設(shè)我們懷疑的那塊磁盤叫/dev/hda1,并且我們想用/dev/sdb3來替換它。我們首先將/dev/sdb3添加到包含/dev/hda1的那個(gè)卷組中。

在這之前,umount這個(gè)卷組上的所有文件系統(tǒng)看來是明智的。有一個(gè)全備份也不會(huì)損壞什么。

FIXME: is this necessary?

接下來我們執(zhí)行pvmove。非常簡單的,我們僅僅提到我們想要移走的那塊磁盤,就象這樣:


# pvmove /dev/hda1
pvmove -- moving physical extents in active volume group "test1"
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 "test1"
pvmove -- 12 extents of physical volume "/dev/hda1" successfully moved

請(qǐng)留意這個(gè)警告。而且看來至少有些內(nèi)核或LVM的版本在使用這個(gè)命令時(shí)有問題。我是用2.3.99pre6-2來測(cè)試的,它可以工作,但要警告。

現(xiàn)在,/dev/hda1沒有包含任何物理分區(qū)了,我們可以將它從卷組中刪除:


# vgreduce test1 /dev/hda1
vgreduce -- doing automatic backup of volume group "test1"
vgreduce -- volume group "test1" successfully reduced by physical volume:
vgreduce -- /dev/hda1

FIXME: we need clarity on a few things. Should the volume group be active? When do we get data loss?

6.1 當(dāng)事情發(fā)生在晚期時(shí)
如果一個(gè)磁盤沒有出現(xiàn)警告就失敗了,你就不能移走它上面的物理分區(qū)到另一個(gè)物理卷上,這樣你可能會(huì)丟失數(shù)據(jù),除非在這個(gè)失敗的PV上的邏輯卷是鏡像了的。正確的行為是用一個(gè)同樣的PV或者至少同樣大小的分區(qū)來替換這個(gè)失敗的PV。

/etc/lvmconf目錄包含了LVM數(shù)據(jù)和結(jié)構(gòu)的備份,包括哪些磁盤做成了PV,每個(gè)PV屬于哪個(gè)VG,每個(gè)VG中有哪些LV。

替換了出錯(cuò)的磁盤之后,你可以用vgcfgrestor命令來恢復(fù)LVM數(shù)據(jù)到新的PV上。它恢復(fù)卷組和所有它的信息,但是不會(huì)恢復(fù)在邏輯卷上的數(shù)據(jù)。這是因?yàn)楫?dāng)LVM數(shù)據(jù)做一些更改時(shí),LVM命令自動(dòng)做備份。


--------------------------------------------------------------------------------

7. 為一致性備份做快照
這是更加難以置信的一個(gè)可能性。假設(shè)你有一個(gè)非常繁忙的服務(wù)器,有許多東西運(yùn)行。為了一個(gè)有用的備份,你需要停止大量的程序,否則,你將以數(shù)據(jù)不一致告終。

一個(gè)規(guī)范的例子是從/tmp移動(dòng)一個(gè)文件到/root下,而且/root將先備份。當(dāng)/root被讀的時(shí)候,這個(gè)文件還不在那里。當(dāng)/tmp被備份時(shí),這個(gè)文件已經(jīng)不在了。

另一個(gè)事例是保存數(shù)據(jù)庫或目錄。如果一個(gè)文件在使用狀態(tài),我們就沒有任何線索了,除非我們給應(yīng)用程序時(shí)間做一個(gè)清除的關(guān)閉。

這樣的話,新的問題又出現(xiàn)了。我們關(guān)閉程序,做我們的備份,接著重新啟動(dòng)它們。如果備份只花幾分鐘這是很好的,但是,如果它要花數(shù)小時(shí),或者你根本不確定它到底要花多久的時(shí)候,事情就真的痛苦了。

LVM可以營救。

使用LVM,我們可以做一個(gè)LV瞬間的快照,然后mount它,再備份它。

讓我們?cè)囼?yàn)一下:


# mount /dev/test/HOWTO /mnt
# echo >; /mnt/a.test.file
# ls /mnt/
a.test.file lost+found
# ls -l /mnt/
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found

Ok,我們現(xiàn)在有些事情要用它一起做。讓我們產(chǎn)生這個(gè)快照:


# lvcreate --size 16m --snapshot --name snap /dev/test/HOWTO
lvcreate -- WARNING: all snapshots will be disabled if more than 16 MB are changed
lvcreate -- INFO: using default snapshot chunk size of 64 KB
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created

對(duì)于“--size”參數(shù)以后再詳述。讓我們mount這個(gè)快照:


# mount /dev/test/snap /snap
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found

現(xiàn)在我們從原處刪除a.test.file,并且檢查它是否仍然在快照里:


# rm /mnt/a.test.file
# ls /snap
total 13
-rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found

太令人驚訝了!

7.1 它是如何工作的?
記得我們不得不設(shè)置“--size”參數(shù)嗎?真正發(fā)生的事情是,“snap”卷需要有那些當(dāng)LVM調(diào)用時(shí),在原處要被改變的所有塊的一個(gè)拷貝。

當(dāng)我們刪除a.test.file時(shí),它的i節(jié)點(diǎn)被刪除。這引起64KB要被標(biāo)注成“臟的”--同時(shí)原始數(shù)據(jù)的一個(gè)拷貝被寫到“snap”卷。這個(gè)例子中,我們分配了16MB給快照,因此如果多于16MB的塊要被修改,快照就會(huì)無效了。

要決定一個(gè)快照分區(qū)的正確大小,你將不得不推測(cè)基于主LV的使用模式、快照要激活的總時(shí)間。例如,在午夜,當(dāng)無人使用系統(tǒng)的情況下,一個(gè)幾小時(shí)的備份可能要求很小的空間。

請(qǐng)注意,快照不是永久的。如果你卸下LVM或重啟,它們就丟失了,需要重新創(chuàng)建。


--------------------------------------------------------------------------------

8. 冗余 & 性能
為了性能的考慮,可以將數(shù)據(jù)分散在幾個(gè)條塊化的磁盤上。這意味著塊1在PV A上,塊2在PV B上,塊3又在PV A上。你也可以條塊化跨多余2塊磁盤。

這樣的安排意味著你有更多有效的磁盤帶寬。也就是說包含了更多的“軸”。以后會(huì)詳述。

除此之外,為了提高性能,也可以將你的數(shù)據(jù)在多個(gè)磁盤上有多份拷貝。這叫做鏡像。目前,LVM本身還不支持它,但是有多種方法能實(shí)現(xiàn)鏡像。

8.1 為何要條塊化?
磁盤的性能至少受三種因素的影響。最明顯的是一塊磁盤上的數(shù)據(jù)能連續(xù)被讀或?qū)懙乃俣?。這是當(dāng)讀或?qū)憙H連接了一個(gè)單一的磁盤的SCSI/IDE總線上的一個(gè)大文件時(shí)的限制因素。

接著是到磁盤的有效帶寬。如果你在一個(gè)SCSI總線上有7塊盤,這也許會(huì)小于你的磁盤本身寫的速度。如果你愿意花足夠的錢,你可以避免這個(gè)瓶頸成為一個(gè)問題。

然后是響應(yīng)時(shí)間。當(dāng)成諺語說,響應(yīng)時(shí)間總是壞消息。甚至更壞的是,你不可能通過花更多的錢來降低響應(yīng)時(shí)間!現(xiàn)在出產(chǎn)的大多數(shù)磁盤有一個(gè)大約7ms的響應(yīng)時(shí)間。還有SCSI響應(yīng)時(shí)間,通常是大約25ms。

FIXME: need recent numbers!

這意味著什么?在一個(gè)典型情形,總的響應(yīng)時(shí)間大約是30ms。因此你每秒鐘只能執(zhí)行大約33個(gè)磁盤操作。如果你想每秒鐘能做數(shù)千個(gè)查詢,并且你沒有大量的緩存,那么你就非常不走運(yùn)了。

如果你有多個(gè)磁盤,或者“軸”,在并行工作,那么你可以有多個(gè)命令很好地圍繞你的響應(yīng)問題同時(shí)執(zhí)行。有些應(yīng)用程序,比如一個(gè)大的新聞服務(wù)器,如果沒有條塊化或其它I/O敏捷性它甚至不再工作。

這就是條塊化做的事。如果你的總線能勝任,甚至連續(xù)的讀和寫可能會(huì)更快。

8.2 為何不條塊化
條塊化沒有進(jìn)一步的措施來解除你的錯(cuò)誤機(jī)會(huì),按一個(gè)“每次一比特”的基本原則。如果你的磁盤任一塊死了,你全部的邏輯卷都會(huì)丟失。如果你正好連接數(shù)據(jù),僅僅文件系統(tǒng)部分丟失。

最終的選項(xiàng)是鏡像的條塊化。

FIXME: make a mirrored stripe with LVM and md

8.3 LVM本身的條塊化
當(dāng)用lvcreate創(chuàng)建LV時(shí),指定條塊化配置項(xiàng)。有兩個(gè)相關(guān)參數(shù)。-i參數(shù)告訴LVM應(yīng)該在多少個(gè)PV上分散數(shù)據(jù)。條塊化不是真的按一次一比特的基礎(chǔ)來做的,而是按塊。-I參數(shù)指定單位為KB的塊大小。注意它必須是2的一個(gè)冪,而且最大的塊大小為128KB。

例如:


# lvcreate -n stripedlv -i 2 -I 64 mygroup -L 20M
lvcreate -- rounding 20480 KB to stripe boundary size 24576 KB / 6 PE
lvcreate -- doing automatic backup of "mygroup"
lvcreate -- logical volume "/dev/mygroup/stripedlv" successfully created

性能注意事項(xiàng)
如果跨同一塊磁盤的兩個(gè)分區(qū)來?xiàng)l塊化,性能的“增加”可能會(huì)是非常消極的--注意避免這樣??鐔我坏腎DE總線上的兩個(gè)磁盤來?xiàng)l塊化也是沒用的--除非IDE已經(jīng)改進(jìn)了我所記憶的。

FIXME: is this still true?

很老的主板可能有兩個(gè)IDE總線,但是第二個(gè)通常是用于一個(gè)相對(duì)慢的cdrom驅(qū)動(dòng)器。你可以用幾個(gè)工具來執(zhí)行基準(zhǔn),最令人注目的是“Bonnie”。ReiserFS人們已經(jīng)發(fā)布了Bonnie++,它可以用來測(cè)試性能數(shù)據(jù)。

8.4 硬件RAID
多數(shù)高速的Inter x86服務(wù)器有硬件RAID控制器。它們中大部分至少有2個(gè)獨(dú)立的SCSI通道。幸運(yùn)的是,這些在LVM上很少有關(guān)系。在 Linux能看到如此一個(gè)控制器上的任何東西之前,管理員必須在RAID控制器自身里定義一個(gè)邏輯驅(qū)動(dòng)器。舉一個(gè)例子,他(她)可能選擇條塊化在SCSI 通道A上的兩個(gè)磁盤,然后鏡像它們到通道B上的兩塊磁盤上。這是一個(gè)典型的RAID 0/1配置,最佳化性能和數(shù)據(jù)安全。當(dāng)Linux在一臺(tái)采用這種配置的機(jī)器上啟動(dòng)時(shí),它只能“看”到在RAID控制器上的一塊磁盤,那就是包含了RAID 0/1條塊組上四塊磁盤的邏輯驅(qū)動(dòng)器。這就是說,至于LVM關(guān)心的,僅僅是在這臺(tái)機(jī)器上的一塊磁盤,它將被同樣地使用。如果這些磁盤中的一個(gè)失敗了,LVM甚至不知道。當(dāng)管理員替換了磁盤(甚至很快的用熱備硬件),LVM也不知道任一種情況發(fā)生了??刂破鲿?huì)重新同步鏡像的數(shù)據(jù),一切都良好。這里多數(shù)人會(huì)退一步來詢問“那么使用這個(gè)RAID控制器,LVM為我?guī)硎裁春锰幠兀?#8221;最容易的回答是,多數(shù)情況下,你在RAID控制器里定義了一個(gè)邏輯驅(qū)動(dòng)器后,你不可能在以后添加更多的磁盤到那個(gè)驅(qū)動(dòng)器了。因此,如果你誤算了所要求的空間,或者你只是需要更多的空間,你都不可能添加一個(gè)新的磁盤或一組磁盤到原來的條塊組里。這意味著你必須在這個(gè)控制器里創(chuàng)建一個(gè)新的 RAID條塊組,然后用LVM你可以簡單的擴(kuò)展LVM的LV,以致它無縫的跨越RAID控制器里的兩個(gè)條塊組。

FIXME: Is there more needed on this subject ?

8.5 Linux軟件RAID
Linux 2.4 帶著一個(gè)非常好的RAID代替出現(xiàn)了。Linux 2.2缺省的,當(dāng)被Alan Cox發(fā)布時(shí),是一個(gè)初期的RAID版本的特寫,它沒有被很好的重視。 2.2仍然是早期版本特色的原因是寫內(nèi)核的人們不想在一個(gè)穩(wěn)定的版本里做改動(dòng),那樣會(huì)要求使用者更新。

更多的人們,包括Red Hat,Mandrake和SuSE,選擇用表現(xiàn)得很完美的0.90版本來替換它。

這里我們只論述0.90版本。

FIXME: write more of this


--------------------------------------------------------------------------------

9. Cookbook
9.1 在計(jì)算機(jī)之間移動(dòng)LVM磁盤
使用這些新技術(shù),簡單的任務(wù)象從一臺(tái)計(jì)算機(jī)移動(dòng)磁盤到另一臺(tái)計(jì)算機(jī)就變得有些機(jī)警了。在用LVM之前,用戶只需要把這塊盤放到新的機(jī)器上并且 mount這些文件系統(tǒng)。使用LVM,就多一點(diǎn)事情要做。LVM結(jié)構(gòu)既保存在磁盤上也保存在/etc/lvmconf目錄里,因此,移動(dòng)一個(gè)或一組包含了一個(gè)VG的磁盤所要做的唯一的事情是確保這個(gè)VG屬于的機(jī)器不會(huì)破壞它的數(shù)據(jù)。這是通過vgexport命令來實(shí)現(xiàn)的。vgexport僅僅從/etc /lvmconf刪除關(guān)于這個(gè)VG的結(jié)構(gòu),而不會(huì)更改磁盤上的任何內(nèi)容。一旦磁盤放到新的機(jī)器上(他們沒必要有相同的ID),唯一要做的事情就是修改 /etc/lvmconf。這是通過vgimport來做的。

例如:

在機(jī)器#1:


vgchange -a n vg01
vgexport vg01

在機(jī)器#2:


vgimport vg01 /dev/sda1 /dev/sdb1
vgchange -a y vg01

注意你沒必要為這個(gè)VG使用相同的名字。如果vgimport命令沒有保存配置的備份,那就用vgcfgbackup來做。

9.2 重建/etc/lvmtab 和/etc/lvmtab.d
FIXME: write about more neat stuff


--------------------------------------------------------------------------------

10. 進(jìn)一步閱讀
LVM站點(diǎn)
主要的有效LVM資源
德文LVM HOWTO
如果你能讀懂德文,它就已經(jīng)包含了許多信息
德文HOWTO的翻譯
Peter.Wuestefeld@resnova.de正在將德文HOWTO翻譯成英語??磥硭麄儠?huì)花許多時(shí)間在上面。如果你懷疑我們的HOWTO,或者想知道些什么,請(qǐng)?jiān)囋囁麄兊呐Α?
HP/UX管理磁盤向?qū)?
因?yàn)長inux LVM幾乎就是HP/UX執(zhí)行的一個(gè)原樣,他們的文檔對(duì)我們也是非常有用的。是一個(gè)很好的資料。

11. 致謝
我們嘗試在這里列出所有幫助我們寫這篇HOWTO的人。包括呈報(bào)更新、修復(fù)或投稿的人,還有幫助我們理解這個(gè)主題的人。

Axel Boldt
Sean Reifschneider
Alexander Talos
Eric Maryniak
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linuxeden.com---自由文檔- lvm(邏輯卷管理器)的介紹和常用功能流程實(shí)驗(yàn)
LVM邏輯卷管理一PV/VG/LV的創(chuàng)建
存儲(chǔ)基礎(chǔ)知識(shí)之——磁盤陣列原理及操作實(shí)戰(zhàn) | 碼范 | Code Fine
lvm 用法
RedHat Linux 手動(dòng)創(chuàng)建RAID和LVM分區(qū)
Linux LVM管理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服