共通テーマ: Linux LVMについて学ぶ、第1回

論理ボリューム管理で実現するストレージ管理の魔法

この記事でDanielは、Linux LVM (論理ボリューム管理) の背後にある 概念を紹介し、最新のカーネル・パッチおよびツールをシステムにインストールする方法を示しています。LVMによって、ユーザーのマシン上の物理ストレージ・リソースから 論理ボリュームを作成することができます。しかし、物理ボリュームとは異なり、論理ボリュームは、システムが実行中でも拡張および縮小することができるので、Linuxシステム管理者が今まで夢みてきたストレージ管理の柔軟性が与えられることになります。

Daniel Robbins (drobbins@gentoo.org), President/CEO, Gentoo Technologies, Inc.

Daniel Robbins氏は、ニューメキシコ州アルバカーキーに住んでいます。彼は、Gentooプロジェクトのチーフ・アーキテクト、Gentoo Technologies Inc. の社長/CEOです。著書に、Macmillanから出版されているCaldera OpenLinux Unleashed、SuSE Linux Unleashed、Samba Unleashed があります。Daniel氏は、小学2年のとき初めてLogoプログラム言語や、中毒になる恐れのあったPac Manに出会って以来、何らかの形でコンピューターに関係してきています。これで、彼がなぜSONY Electronic Publishing/Psygnosisでリード・グラフィック・アーチストを務めているかが分かるでしょう。愛妻Maryさんや、生まれたばかりの愛娘Hadassahちゃんとの時間をとても大切にしています。彼の連絡先はdrobbins@gentoo.org です。



2001年 3月 01日

このシリーズでは、Linux 2.4カーネルに組み込まれた新しい論理ボリューム管理 サポートをインストールおよび使用する方法を説明します。以前に 一度もLVMの形式を使用したことがない方にこそ、このすばらしいテクノロジーを知ってもらいたいものです。実際にLVMを立ち上げ、実行する前に、LVMとは正確に何なのか、またそれがどのように動作するのかを 説明しようと思います。それが済めば、LVMをテストし、LVMを最大限活用する準備ができたことになります。

LVMの紹介

私がUNIXおよびLinuxを初めて経験したのは、大規模な商業用UNIXサーバーとワークステーションではなく、PCプラットフォーム 上でした (皆さんも同じではないでしょうか)。PCでは、常に ハード・ディスクの区分化を行なう必要がありました。PCの使用者は一般に、ハード・ディスクの基本区画と拡張区画の作成および削除に使用する、fdiskなどのツールによく慣れています。ハード・ディスクの区分化は面倒ですが、オペレーティング・システムを立ち上げて実行するプロセスの一部として 受け入れられている作業といえます。

ハード・ディスクの区分化が悩みの種になる理由は、いい仕事をするには、各区画に必要なスペース量を正確に見積もりすることが実際に必要だからです。見積もりがうまくいかないと、ご使用のLinuxシステムはおそらく使い勝手の悪いものに なってしまいます。この問題を修正するには、完全なシステム・バックアップを実行し、ハード・ディスクをクリーンにしてから、全データを新しい (おそらくはより良い) 区画レイアウトに復元する必要さえあるかもしれません。これらは、実に嫌な作業で、システム管理者がどうしても避けたい事態です。

かつては区画は静的ストレージ領域でしたが、今では、ありがたいことに、PC再区分化ツールが急増しています (一番ポピュラーな例の1つは、PowerQuestのPartition Magic製品でしょう)。このようなツールを使用すると、システムを特別なディスクでブートして、区画とファイル・システムを 動的にサイズ変更できます。いったんリブートすると、区画が新しいサイズに変更され、うまくいけば、ストレージの危機から脱出できるでしょう。確かにこれらの 区画サイズ変更ツールは優れたものですし、一部については問題ストレージ管理が 解決します。しかし、それらは完全なのでしょうか。そういう訳でもありません。

Partition Magicのようなツールはワークステーション用としては優れたツールですが、サーバーにはあまり適していません。なによりも、これらのツールでは、システムをリブートする必要があるからです。これは、ほとんどのシステム管理者が断固として避けようとすることです。ストレージを週ごとに動的に変更する必要がある場合など、ストレージ変更の必要が生ずるたびにマシンをリブートできないとしたら、どうなるのでしょう。ファイル・システムを複数のハード・ディスクに またがるように拡張する必要がある場合はどうなるのか、Apacheで引き続きWebページにサービスを提供させつつ、ボリュームの記憶容量を動的に拡張したり、縮小したりする必要がある場合 はどのような処置を行えばよいのでしょうか。可用性が高く、極めて 動的な環境では、基本区画サイズ変更機能は解決策とはなりません。上記またはその他の状況の場合には、論理ボリューム管理が (完全ではなくとも) 優秀な ソリューションです。


LVMに入る

次は、このような問題をLVMがどのように解決するのかを検討しましょう。LVM論理ボリュームを作成するためには、3つのステップからなるプロセスを実行します。最初に、LVM用に使用する物理ストレージ・リソースを選択します。一般的に、これらは標準区画ですが、我々が前に作成したLinuxソフトウェアRAIDボリュームでもかまいません。LVMの用語では、このようなストレージ・リソースは "物理ボリューム" と呼ばれています。LVMをセットアップする最初のステップは、これらの区画を適切に初期化して、LVMシステムがそれらの区画を認識できるようにすることです。物理区画を追加する場合は、正しい区画タイプを設定し、pvcreateコマンドを実行することが必要です。

LVMで使用するための1つまたは複数の物理ボリュームを初期設定すれば、2番目のステップ、ボリューム・グループの作成に進むことができます。ボリューム・グループは、1つまたは複数の物理ボリュームから構成される ストレージのプールと考えることができます。LVMが実行されている間に、ボリューム・グループに物理ボリュームを追加できる だけでなく、物理ボリュームを除去することもできます。ただし、ボリューム・グループ上 に直接、ファイル・システムをマウントしたり、作成したりすることはできません。代わりに、LVMに対し、ボリューム・グループ・ストレージ・プールを使用して、1つまたは複数の "論理ボリューム" を作成するように指示できます。

ボリューム・グループは物理ボリュームから作成される
図1

LVM論理ボリュームの作成は実に簡単です。いったん作成すれば、その論理ボリューム上にファイル・システムを置いて、マウントし、ファイル保管のためにそのボリュームの使用を開始することができます。論理ボリュームを作成するためには、"lvcreate" コマンドを使用します。このコマンドで、新規ボリュームの名前、ボリュームのサイズ、この特定の論理ボリュームを入れるボリューム・グループを指定します。LVMシステムは、指定されたボリューム・グループからストレージを割り振り、新規ボリュームを作成します。これで、新規ボリュームが使用できるようになります。ボリュームが作成されると、そのボリューム上にext2またはReiserFSファイル・システム を置き、マウントし、使用できます。

既存のボリューム・グループから2つの論理ボリュームを作成する
図2

エクステント

LVMシステムはこの陰で、エクステントと呼ばれる、等しいサイズの "大きい塊" 単位 でストレージを割り振ります。ボリューム・グループ作成の時点に、使用する特定のエクステント・サイズを指定することができます。エクステントの サイズのデフォルトは4Mbですが、ほとんどの使用の場合、これで完全です。LVMの優れた特徴の1つは、論理ボリュームの1つに使用するエクステントの物理的な保管場所 (つまり、どのディスクにエクステントが保管されるか) を、論理ボリュームがマウントされ使用されている間でも動的に変更できることです。LVMシステムでは、これらすべての保管場所を管理者が物理的に変更することを 許可しつつ、論理ボリュームが完全に稼動し続けられるようにします。

もちろん、等しいサイズのエクステントからすべて作成されたので、すでに存在している論理ボリュームになんらかの追加エクステントを割り振る、言い換えれば、ボリュームを動的に "成長させる" ことは実に簡単です。

ボリューム・グループからさらにエクステントを追加し、論理ボリュームのサイズを拡張する
図3

論理ボリュームが拡張されれば、この新しいスペースを利用するために、ext2またはReiserFSファイル・システムを拡張できます。resize_reiserfsなどのプログラムを使用する場合には、このファイル・システム拡張は、ボリュームがマウントされ、使用中の間にも 実行できます。実にすばらしいことに、LVMおよびオンライン・ファイル・システム拡張ユーティリティーがあると、ストレージ構成を変更するためにシステムをリブートしたり、runlevel 1にドロップさせたりする必要がなくなります。

システムをシャットダウンする必要があるのは、新規の物理ディスクを追加する必要 があるときだけです。新規ディスクがいったん追加されれば、それらの新しい物理ボリュームを ボリューム・グループに追加して、新鮮なエクステントを供給することができます。


LVMのセットアップ

それでは、LVMのインストールに取りかかりましょう。LVMは2つの部分、カーネル部分と、1組のユーザー・スペース・ツールから構成されています。開始するには、メインLVMページ (この記事の最後にある 参考文献 を参照してください) に進んで、読者が検索できるLVM tarballの最新バージョン (現在、lvm_0.9.1_beta3.tar.gz) を ダウンロードします。このLVM tarballには、一連のカーネル・パッチのほか、すべてのユーザー・スペース・ツールが含まれています。ここからが面白くなってきます。

すでに2.4シリーズのカーネルをインストールしてある場合、システムでLVMサポートがすでに使用可能になっているかも知れません。使用可能でなくとも、自分のカーネルを再コンパイルしてLVMサポートを使用可能にするだけなので、簡単です。しかし、読者は自分の持ち合わせ (または配布提供) の2.4カーネルに 組み込まれたLVMサポートを使用したくない場合もあるでしょう。最新のLVMバージョンを使用したい場合は、LVM tarballからパッチを自分の現在の2.4カーネル・ソース・ツリーに適用することが必要です。その方法を以下に示します。

開始するため、カーネル・ソース・ディレクトリー (/usr/src/linux) を入力し、"extras" という名前のディレクトリーを作成します。次にこのディレクトリーを入力し、LVM tarballを抽出します。

# cd /usr/src/linux
# mkdir extras
# cd extras
# tar xzvf
/path/to/location/of/lvm_0.9.1_beta3.tar.gz

それが済むと、extrasの中に "LVM" という名前の新しいディレクトリーがあることが 分かります。このディレクトリーには、今アンパックしたばかりのLVMのバージョンに 関連する名前が付けられた別のディレクトリーが含まれています。これら2つのディレクトリーを入力して、LVMソースに進みます。

リスト1: LVMソースに進む

いくつかのテキスト・ファイル、スクリプト、およびソース・ディレクトリーが 表示されます。"INSTALL" ファイルの中にインストールに関する指示がありますが、このプロセスを通して説明していきます。最初に、次のように構成スクリプトを実行します。

# ./configure --prefix=/ --mandir=/usr/man

パッチ

このコマンドの実行後、Makeファイルが作成され、すべてのLVMツールを /sbinに、またすべてのmanページを /usr/manにそれぞれインストールするように 構成されます。manページが /usr/share/man (FHS 2.1により) にある場合は、上記のパスを適宜調整してください。また、カーネル・ソースが /usr/src/linuxにない場合は、"--with-kernel_dir=/path/to/usr/src/linux" オプションもその行に追加します。構成スクリプトが完了したら、ツールをインストールし、現行のカーネルのためにパッチを生成する準備ができたことになります。まず、カーネルにパッチを当てましょう。PATCHESディレクトリーを入力します。

# cd PATCHES

次に "make"と入力します。makeファイルは、我々の2.4シリーズのカーネル・ソース用の特定のパッチを生成します。

# make

パッチには、lvm-[lvmversion]-[kernelversion].patchという名前が付けられます。たとえば、私は0.9.1_beta3バージョンのLVMとカーネル2.4.0-ac11を使用するので、私のパッチは、lvm-0.9.1_beta3-2.4.0-ac11.patchという名前になります。皆さんの現行ディレクトリーにもこれがあるのが分かるでしょう。さて次は、パッチの適用です。パッチを適用するには、ディレクトリーを自分のカーネル・ソースの場所に 変更し、リスト2に示したパッチ・コマンドを使用することが必要になります。

リスト2: パッチ・コマンド

LVMINSTALLの文書には言及されていませんが、パッチを適用するとき私はたいてい、"-l" オプションをパスします。このオプションを使用すると、パッチ・プログラムは、通常はパッチの一部を失敗させてしまうホワイト・スペースでの変更 (わずかな 字下げの変更など) を補足することができます。上記のコマンドが、"FAILED" 行なしで完了した場合は、ユーザー・スペース・ツールをインストールする準備ができたことになります。そうでなければ、/usr/src/linuxディレクトリーで ..rejファイルをスキャンし、リジェクトされたパッチ部分を、テキスト・エディターを使用して手作業で 挿入することが必要になります(いやはや!) 。ただし、ほとんどすべての状況では、パッチはきれいに適用され、次に進むことができます。


構成、コンパイル、およびインストール

さて、カーネルに無事にパッチが適用されたので、使用可能な最新のLVMコードが入りました。次は、LVMサポートが使用可能になるように、カーネルを構成しましょう。私がお勧めするのは、LVMサポートを、モジュールとしてコンパイルするように構成するのでなく、直接、カーネルにコンパイルする方法です。お好みのLinuxカーネル構成方式を始動してください。

# cd /usr/src/linux# make menuconfig

"Multi-device support (RAID and LVM)" セクションの下にLVMオプションがあります。最初のオプションを使用可能にすると、

[*] Multiple devices driver support (RAID and LVM)

....次のオプションが見えます。これも使用可能にする必要があります。

<*>Logical volume manager (LVM) support

ご使用のLVMバージョンによっては、その他のLVM関連オプションがあり、それらのオプションも使用可能にする必要があるかもしれません。完了したら、カーネル構成を保管し、標準のカーネル・コンパイル・ルーチンを実行して、リブートします。これでカーネルLVMサポートが使用可能になりました。今度は、ユーザー・スペース・ツールのコンパイルとインストールを行う必要があります。このステップは簡単です。

# cd /usr/src/linux/extras/LVM/0.9.1_beta3
# make
# make install

あと1つステップがありますが、これはオプションです。LVMのテストを行うだけでなく、この段階でそれ以上のことを実行してみたい場合は、次の行を始動rcスクリプトに追加してください。

/sbin/vgscan
/sbin/vgchange -a y

これらの行は、使用可能なすべてのボリューム・グループをスキャンし、それらを活動化します。次に、以下の行をシャットダウンrcスクリプトに追加し、すべてのファイル・システムがアンマウントされた後にそのスクリプトが実行されるか 確認します。

/sbin/vgchange -a n

LVMのテストを行うのみの場合は、これらのステップは省略してください。ただし、リブートの後で、ルートとして "vgscan" および "vgchange -a y" を 入力しないと、論理ボリュームが使用可能にならないということを忘れないでください。

これでこの記事は終わりです。次の記事では、読者が独自の論理ボリュームを作成し、LVMの能力を解放するための方法を示す予定です。それではまたお会いしましょう。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=229517
ArticleTitle=共通テーマ: Linux LVMについて学ぶ、第1回
publish-date=03012001