Gentoo Logo

Gentoo LVM2 installation

內容:

1.  簡介

本指南使用兩個 IDE 硬碟當作範例。這表示,您可能必須根據自己的需要設定相關的磁碟、分割區名稱、分割區大小等資料。

警告: 這篇指南並沒有作為 LVM2 入門指南的意思。它只是一則 的小筆記,在 Gentoo 安裝手冊 第一章下附屬的小筆記,所以請務必在您動手之前閱讀 Gentoo 安裝手冊。

注意: 完整的 LVM HOWTO 在這裡:http://tldp.org/HOWTO/LVM-HOWTO

系統需求

如果您正要安裝的是一套全新的 Gentoo 系統,那麼您必須先取得支援 LVM2 的開機光碟,例如 Gentoo LiveCD。您可以在鏡像站/releases/x86/2005.1/livecd 下找到這些 LiveCD,包含 x86 與其它系統架構。

如果您要在正在執行的系統中空餘的磁碟上安裝 LVM2,那麼您必須先啟動 LVM2 模組(dm-mod)這個模組在 gentoo-sources 以及 vanilla-sources 中都有支援。如何編譯您的核心並驅動 LVM2 會在稍後提到。

並非所有 Gentoo 提供的 2.4 核心都支援 LVM2!

警告: 在 2005.0 安裝 CD 中的 LVM2 被錯誤的動態連結到一個函式庫(libgpm),而這個函式庫位於 /usr。這表示,您不能將 /usr 放在 LVM 環境中。請更新到最新版,或安裝 2.0.33(沒有 -r1),它們都是靜態連結的版本。

分割區

我們的範例系統上有兩個 IDE 硬碟,並且會被分成下面這樣:

  • /dev/hda1 -- /boot
  • /dev/hda2 -- (置換分區)
  • /dev/hda3 -- /
  • /dev/hda4 -- 會被用作 LVM2
  • /dev/hdb1 -- 會被用作 LVM2

重要: 請特別注意分割區的名稱,畢竟 a 跟 b 常常被看錯,那些數字也蠻讓人混亂的。走錯一步,您可能會覆蓋錯誤分區的資料。我警告過您了!

好啦!準備開始了...

2.  安裝

首先照著手冊作,直到第四章 - 準備磁碟

使用手冊中提到的 fdisk,不過將它分成上面範例提到過的那樣。那只是個範例,請調整它以符合您的需求。

製作個小小的 /boot 分區(hda1)。在這個範例中,/boot 不會被 LVM2 管理。這個分區裡面放著您的開機載入程式以及核心。我想 64MB 的容量應該夠放不少核心了。

製作個置換分區(hda2),然後啟動它。

原始碼 2.1: 啟動置換分區

# mkswap /dev/hda2
# swapon /dev/hda2

建立個 /(根)分區(hda3)。如果您有興趣嘗試將根分區放在 LVM 的管理之下(雖然我們不建議這麼作),您可以參考本指南最後列出的資源,那邊有個 mini-howto 告訴您該如何作。如果您會將/opt /usr /home /var/tmp 放在 LVM2 容量群組(VG)之下的話,根分區也不用太大。在我們的例子中,150MB 就夠了。

注意: 我們不建議您將下列目錄放在 LVM2 分區上:/etc /lib /mnt /proc /bin /sbin /dev /root。這樣的話,當有什麼糟糕的事情發生的時候,您還是可以登入您(腿被打斷,但是對 root 使用者來說還是有點用)的系統。

假設 /boot、置換分割區、以及根分割區沒有把整個硬碟都用光,作個第四個分割區,然後將它的類型設成 8e(Linux LVM)。如果您有其他想給 LVM 用的磁碟,請在上面建立一個分割區,然後把類型都設成 8e。

注意: 由於現在的硬碟都非常大,您也許會想將您的硬碟分成較小的分區,而不是弄成一個大分區然後全部丟給 LVM2。LVM2 讓增加容量變得很簡單,所以您可以留下一些未配置的分割區,天知道您後來會不會想在 LVM2 以外的地方用到他們。簡單的說,不要在您確定要幹麼之前把磁碟分區用光。一位投稿者就將他的 160GB 硬碟分成了 8 個 20GB 的分割區。

載入 LVM2 dm-mod 模組。

原始碼 2.2: 載入 LVM2 模組

# modprobe dm-mod

掃描並啟動 LVM:

原始碼 2.3: 啟動 LVM

(避免掃描您的光碟機)
# mkdir -p /etc/lvm
# echo 'devices { filter=["r/cdrom/"] }' >/etc/lvm/lvm.conf
# vgscan
  Reading all physical volumes.  This may take a while...
  No volume groups found
(啟動之前設定的容量群組)
# vgchange -a y

準備磁碟分區。

原始碼 2.4: 準備磁碟分區

# pvcreate /dev/hda4 /dev/hdb1
  No physical volume label read from /dev/hda4
  Physical volume "/dev/hda4" successfully created
  No physical volume label read from /dev/hdb1
  Physical volume "/dev/hdb1" successfully created

設定容量群組。容量群組是一些實體分區單位的邏輯集合。

在我們的例子裡,/dev/hda1/dev/hda2、和 /dev/hda3/boot、置換分區、以及根目錄分區,所以我們要合併 /dev/hda4 以及 /dev/hdb1。這可以用一個指令達成,不過作為示範,我會先建立一個容量群組,然後擴充它。

原始碼 2.5: 建立及擴充容量群組

(建立個叫做 vg 的容量群組)
# vgcreate vg /dev/hda4
  /etc/lvm/backup: fsync failed: Invalid argument (請忽略這個警告)
  Volume group "vg" successfully created
(擴充已有的容量群組)
# vgextend vg /dev/hdb1
  /etc/lvm/backup: fsync failed: Invalid argument (請再度忽略這個警告,以後也請繼續忽略...)
  Volume group "vg" successfully extended

建立邏輯容量。邏輯容量跟您使用 fdisk 製作出來的磁碟分區是類似的東西。在我們的例子裡,我們會製作以下的分區:

目錄 大小
/usr 10 GB
/home 5 GB
/opt 5 GB
/var 10 GB
/tmp 2 GB

由於我們正要使用的是 LVM2,所以不必太在意分區的大小,因為要擴充是很容易的。

注意: 如 Terje Kvernes 建議的,增加分區的大小要比縮小它容易的多。我猜您會想要從小分區開始,然後在需要的時候才增加它們的大小。

原始碼 2.6: 建立以及擴充邏輯容量

# lvcreate -L10G -nusr  vg
  Logical volume "usr" created (之後的類似訊息就不列出了)
# lvcreate -L5G  -nhome vg
# lvcreate -L5G  -nopt  vg
# lvcreate -L10G -nvar  vg
# lvcreate -L2G  -ntmp  vg
(作為範例,讓我們在邏輯容量中增加額外的 5GB)
# lvextend -L+5G /dev/vg/home

注意: 在建立邏輯容量的時候,您可以使用 -i 選項將分區跨越兩個以上的實體容積,這樣能啟動負載平衡來增加效能。詳情請參考 LVM Howto

在邏輯容量上建立檔案系統的步驟,和在普通分區上類似。我們使用 ext3 作為範例,不過您想選用其他檔案系統當然也可以:

原始碼 2.7: 建立檔案系統

# mke2fs -j /dev/vg/usr
# mke2fs -j /dev/vg/home
# mke2fs -j /dev/vg/opt
# mke2fs -j /dev/vg/var
# mke2fs -j /dev/vg/tmp

如手冊中所敘述的,掛載這些您建立的 LVM2 邏輯容量。將 /dev/hdxx 換成 /dev/vg/logical_volume_name

原始碼 2.8: 掛載您的邏輯容量

(請如手冊中所述,先掛載根分割區)
# mkdir /mnt/gentoo/usr
# mount /dev/vg/usr /mnt/gentoo/usr
# mkdir /mnt/gentoo/home
# mount /dev/vg/home /mnt/gentoo/home
# mkdir /mnt/gentoo/opt
# mount /dev/vg/opt /mnt/gentoo/opt
# mkdir /mnt/gentoo/var
# mount /dev/vg/var /mnt/gentoo/var
# mkdir /mnt/gentoo/tmp
# mount /dev/vg/tmp /mnt/gentoo/tmp

注意: 接下來的步驟跟手冊中提到的都差不多,只是這裡會列出一些小差異。

在設定核心的時候,請確定您啟動了 LVM2 支援(並非所有 2.4 核心都支援)。選取以下所述的 LVM2 模組:

原始碼 2.9: 選取 2.4.x 核心中的 LVM2 模組

Multi-device support (RAID and LVM)  --->
  [*] Multiple devices driver support (RAID and LVM)
  < >  RAID support
(注意我們故意不選 LVM,這是給 LVM1 用的)
  < >  Logical volume manager (LVM) support
  <M>  Device-mapper support
  < >   Mirror (RAID-1) support

原始碼 2.10: 選取 2.6.x 核心中的 LVM2 模組

Device Drivers  --->
 Multi-device support (RAID and LVM)  --->
   [*] Multiple devices driver support (RAID and LVM)
   < >   RAID support
   <M>   Device mapper support

編譯出的模組會叫做 dm-mod.ko

當您編譯了您的核心並安裝好模組以後,將下面這行加入您的 /etc/modules.autoload.d/kernel-{KV} 下,其中 {KV} 表示您的核心版本(2.4 或 2.6),讓 LVM2 模組會在開機的時候載入:

原始碼 2.11: 將 LVM2 加入 /etc/modules.autoload.d/kernel-2.6

# nano -w /etc/modules.autoload.d/kernel-2.6
(增加底下這行)
dm-mod

現在,安裝 lvm2 套件。

重要: 請確定您將 /usr/src/linux 連結到現在使用的核心原始碼,因為 lvm2 ebuild 所使用的 device-mapper ebuild 會用到 /usr/src/linux/include/linux 下的原始檔。

原始碼 2.12: Emerging LVM2 套件

# emerge lvm2
(在這篇指南寫出時,穩定版的 lvm2 是 2.00.08。
在 2.00.08 中,透過以下步驟避免 lvm2 檢查您的光碟機:)
# echo 'devices { filter=["r/cdrom/"] }' >> /etc/lvm/lvm.conf

(2.00.15 以後的版本會附上一個 /etc/lvm/lvm.conf。
請編輯它,並且參考裡面的說明。)
# nano -w /etc/lvm/lvm.conf

在編輯 /etc/fstab 檔案時,照著手冊上說的,加入您的 LVM2 邏輯容量。再次的,以下的內容是我們的範例必須的:

原始碼 2.13: 部份的 /etc/fstab

/dev/hda1     /boot   ext3    noauto,noatime 1 1
/dev/hda2     none    swap    sw             0 0
/dev/hda3     /       ext3    noatime        0 0
# Logical volumes
/dev/vg/usr   /usr    ext3    noatime        0 0
/dev/vg/home  /home   ext3    noatime        0 0
/dev/vg/opt   /opt    ext3    noatime        0 0
/dev/vg/var   /var    ext3    noatime        0 0
/dev/vg/tmp   /tmp    ext3    noatime        0 0

在您走到手冊中最後的安裝步驟時,別忘了卸載(umount)您的 LVM2 邏輯容量,並在重新開機前執行以下指令:

原始碼 2.14: 關閉 LVM2

# vgchange -a n

重新開機,然後所有的分區都應該被掛載好了!

3.  相關資源

4.  特別感謝

感謝 Thilo Bangert 以及 Terje Kvernes 提供有關這份文件的幫助及建議。



列印

最後更新 2005年 4月 25日

這份文件的原始版本已不再被維護

大綱: 本指南解釋該如何在您的 Gentoo 上使用「邏輯磁碟管理員第二版(LVM2)」。

Avi Schwartz
Author

Rajiv Manglani
Contributor

Xavier Neys
Editor

Victor Tseng
Translator

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

Linux World Expo

Linux World Expo

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.