このガイドは、2つのIDEハードディスクを使用した例を基にして説明します。 よって、読者の設備構成とニーズに一致させるために、おそらくドライブとパーティションの名前と大きさに合わせて変更する必要があるでしょう。
警告: このドキュメントは、LVM2のチュートリアルではありません。 Handbook, Part1 (日本語訳) で説明されているGentooインストールの手順を補足する目的があります。 インストール作業を開始する前に、Gentooインストールマニュアルを確実に読んでください。 |
注意: LVM HOWTO一式は、http://tldp.org/HOWTO/LVM-HOWTOをブラウザで参照してください。 |
Gentooを新たにインストールする場合、GentooインストールCDのようなLVM2サポートがあるブート可能CDを使用する必要があるでしょう。mirrors(日本語訳)にあるサイトの/releases/x86/current/installcdにx86アーキテクチャ用のインストールCDがあります。他のアーキテクチャでも同様にサポートされているかもしれません。
現在稼動中の余分なハードディスクスペースがあるシステムに、LVM2をインストールする場合、LVM2モジュール(dm-mod)を有効にする必要があるでしょう。このモジュールは、gentoo-sourcesで利用可能です。 カーネルをコンパイルしてLVM2を動作させる方法は、このガイドの後半に説明されています。
Gentooで提供される2.4系列カーネルのすべてがLVM2をサポートするとは限りません!
例として使用するシステムには、2つのIDEハードディスクがあり、以下のようなパーティションで区切られています。
重要: aとかbのユニットを示す文字や、パーティションの番号を混同しやすいので、間違えないようにパーティションの名前に気を配ってください。たった一つの間違いが、意図しないパーティションを消去してしまう可能性があります。十分に気をつけてくださいね! |
OK、では始めましょう。
基本的にはハンドブックに従ってほしいのですが、 4. Preparing the Disks(ディスクの準備)の章に対する以下の修正があります。
ハンドブックで説明されているようにfdiskコマンドを使用しますが、例として挙げたパーティション区画を使用してください。もちろん例ですので、あなたのニーズに合わせてください。
/boot用の小さな物理パーティション(hba1)を作成してください。この例では、/bootはLVM2によって管理されません。このパーティションには、ブートローダとカーネルが存在するでしょう。64MBのパーティションは、かなり多くの複数世代のカーネルを保持するのに十分適しています。
スワップパーティション(hda2)を作成してください。
/ (ルート)パーティション(hda3)を作成してください。ルートパーティションをLVM管理下に置くことに興味がある場合(私たちは推奨しません)、その方法に関するミニhowtoへのリンクが、このガイドの終わりにある資料セクションにあります。 LVM2ボリュームグループ(vg)に/opt /usr /home /var /tmpを含めるなら、ルートパーティションのサイズは大きい必要はありません。この場合、1GBで十分でしょう。
注意: 以下に続くディレクトリをLVM2パーティションに置くことは推奨しません。 /etc、/lib、/lib、/mnt、 /proc、/sbin、/dev、/root。 このようにしておくと、なにかひどく悪い状況になっても、まだシステムにログイン(不自由でしょうけど、ルートユーザとしてまだ若干は利用可能)できるでしょう。 |
/bootとスワップとルートパーティションで、物理ディスクの全部を使用しないと仮定して、このディスクに4番目のパーティションを作成し、パーティションタイプを8e(Linux LVM)に設定してください。 さらにLVMで使用したいと思う物理ディスクがある場合、それぞれに一つのパーティションを作成して、同じパーティションタイプ(8e)を設定してください。
注意: 最近のディスクの大容量さを考えると、一つのLVM2ボリュームグループに追加される一つの大きいパーティションを作成する代わりに、ハードディスクを小さいパーティションに分割することを検討するかもしれません。 どっちみちLVM2はボリュームを拡張しやすくするものです。 この特徴は、LVM2グループに含めずに別の用途で使用する必要があるかもしれない、未割当てのパーティションを残しておけます。 つまり、必要になるまでディスクスペースを使用しないでください。 例として、ある報告者は、160GBのハードディスクを20GBずつの8つのパーティションに分割したそうです。 |
ハンドブックに書かれているように、 /dev/hda1と/dev/hda3上にファイルシステムを作成します。 そして、/dev/hda2にswapを作成し、有効にします。
LVM2 dm-modモジュールをロードしてください。
コード表示 2.1: LVM2モジュールのロード |
# modprobe dm-mod
|
物理ボリュームの走査とLVMの有効化を行う前に、いくつかのデバイスを除外するために/etc/lvm/lvm.confを編集したいかもしれません。 デフォルトでは、CDROMドライブがエラーメッセージを発生する可能性があっても、LVM2はすべてのデバイスを走査します。 以下の例では、すべてのデバイスの走査が可能な行を2つのIDEディスク以外のすべてデバイスを除外するもので置き換えられています。
コード表示 2.2: LVMの有効化 |
(ディスク以外の走査をしないようにする) # nano -w /etc/lvm/lvm.conf (以下の行を探す) filter = [ "a/.*/" ] (/dev/hdaと/dev/hdbを走査してそれ以外は除外する以下のもので置き換える) filter = [ "a|/dev/hd[ab]|", "r/.*/" ] (ファイルを保存してnanoを終了) # vgscan Reading all physical volumes. This may take a while... No volume groups found (設定済みのボリュームグループを有効にする) # vgchange -a y |
パーティションを準備してください。
コード表示 2.3: パーティションの準備 |
# 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.4: ボリュームグループの作成と拡張 |
(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 |
論理ボリュームを作成してください。論理ボリュームは、非LVM2環境でfdiskコマンドを使用して作成するパーティションに相当します。例では、以下に示すパーティションを作成します。
| ディレクトリ | サイズ |
| /usr | 10 GB |
| /home | 5 GB |
| /opt | 5 GB |
| /var | 10 GB |
| /tmp | 2 GB |
LVM2を使用するのですから、いつでも必要に応じて拡張できるので、パーティションサイズをどうするかは、さほど心配しなくてもいいはずです。
注意: Terje Kvernes氏が言うように、パーティションのサイズを縮小させるより増加させる方がより簡単です。従って、小さめのパーティションから始めて、必要に応じてサイズを増加させたいと思うかもしれません。 |
コード表示 2.5: 論理ボリュームの作成と拡張 |
# 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 |
通常のパーティション上で実行するのと同じ方法で、論理ボリューム上にファイルシステムを作成してください。以下では論理ボリューム上にext3を使用しますが、あなたが選択するどんなファイルシステムも機能するでしょう。
コード表示 2.6: ファイルシステムの作成 |
# 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_volumenameで置き換えて下さい。
コード表示 2.7: 論理ボリュームのマウント |
(最初にハンドブックで記述されているとおりにルートパーティションを確実にマウントしてください) # 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.8: カーネル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.9: カーネル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と呼ばれます。
マシンの起動時にLVM2モジュールがロードされるようにするために、カーネルを構築してモジュールをインストールした後、/etc/modules.autoload.d/kernel-{KV}に以下の行を追加してください。{KV}はカーネルバージョン(2.4か2.6)を意味します。
コード表示 2.10: /etc/modules.autoload.d/kernel-2.6にLVM2モジュールを追加する |
# nano -w /etc/modules.autoload.d/kernel-2.6 (以下の行を追加してください) dm-mod |
ここで、lvm2パッケージをインストールしてください。
重要: lvm2のebuildは、device-mapperのebuildに依存します。device-mapperのebuildは、/usr/src/linux/include/linuxの下の必要なソースファイルの存在を確認します。よって、/usr/src/linuxのリンクが、使用しているカーネルのソースツリーを指しているか確認してください。 |
コード表示 2.11: LVM2パッケージのemerge |
# emerge lvm2
|
earlierで説明されているように/etc/lvm/lvm.confを編集してください。 以前に編集したこのファイルはインストール環境のもので、次のリブート後にはなくなってしまいます。 ここで、新しいGentooインストール環境内に正式なものを編集します。
/etc/fstabファイルを編集するときは、ハンドブックに従って、必要に応じてLVM2論理ボリュームを追加してください。 以下にこの文書での例を示します。
コード表示 2.12: /etc/fstabの抜粋 |
/dev/hda1 /boot ext3 noauto,noatime 1 2 /dev/hda2 none swap sw 0 0 /dev/hda3 / ext3 noatime 0 1 # Logical volumes /dev/vg/usr /usr ext3 noatime 0 2 /dev/vg/home /home ext3 noatime 0 2 /dev/vg/opt /opt ext3 noatime 0 2 /dev/vg/var /var ext3 noatime 0 2 /dev/vg/tmp /tmp ext3 noatime 0 2 |
ハンドブックのインストールパートの最後に到達したとき、通常のパーティションと同様に、すべてのLVM2論理ボリュームをumountすることを忘れないでください。そして、再起動する前に、常套手段として以下のコマンドを実行してください。
コード表示 2.13: LVM2のシャットダウン |
# vgchange -a n
|
マシンを立ち上げなおしてください。すると、すべてのパーティションが確認でき、マウントされているはずです。
ある時点でGentooのインストールを中断した後で、また再開したい場合、必要なボリュームデバイスノードを最初に作成する必要があります。
コード表示 3.1: ボリュームの再活性化 |
# vgscan --mknodes
|
あまり新しくないツールを備えるインストールCDは、上記の方法ではなく以下のようにボリュームを再活性化する必要があるかもしれません。
コード表示 3.2: ボリュームの再活性化 |
(最初に全ボリュームを非活性化) # vgchange -a n (全ボリュームを切り離す) # vgexport -a (全ボリュームを組み込む) # vgimport -a (全ボリュームを再活性化) # vgchange -a y |
このドキュメントに対するThilo BangertとTerje Kvernesの助力と意見に感謝します。
このドキュメントの内容は Creative Commons - Attribution / Share Alikeライセンスです。