第3章 高度なディスク設定

目次

3.1. YaST パーティション設定の利用
3.2. LVM の設定
3.3. ソフトウエア RAID の設定

より洗練されたシステム設定を行なう場合、ディスクの設定についても高度な 設定を必要とします。 YaST では、このような高度な設定を含む、一般的に 利用する全てのパーティション作業に対応しています。たとえばブロック デバイスに対して永続的な名前を設定するには、 /dev/disk/by-id/dev/disk/by-uuid のような形式を利用します。また Logical Volume Management (LVM) では、 通常のセットアップで設定する従来のパーティション方式より、ずっと柔軟な 運用を実現できるよう設計されています。 LVM でのスナップショット機能は データバックアップを容易に作成することができますし、いわゆる RAID と 呼ばれるディスクの冗長配列機能も提供されていて、データの完全性と性能、 耐障害性を補強することができます。また、 openSUSE ではマルチパス I/O にも対応しているほか、 iSCSI デバイスを ネットワークディスクとして利用するオプションも用意されています 。

3.1. YaST パーティション設定の利用

熟練者向けパーティション設定 図3.1「YaST パーティション設定」 では、複数のハードディスクのパーティション設定を変更することができます。 パーティションは追加や削除、サイズ変更や編集を行なうことができます。 また、この YaST モジュールからソフトウエア RAID や LVM にアクセスする こともできます。

[Warning]稼働中のシステムのパーティション変更

お使いのシステムが稼働中であってもパーティション設定を変更することは可能 ですが、作業ミスによるデータ損失の可能性がとても高いことに注意する必要が あります。可能であればインストール済みのシステムに対するパーティション 設定の変更は避け、どうしても必要である場合はお使いのデータを完全に バックアップしてから実施してください。

図3.1 YaST パーティション設定

YaST パーティション設定

YaST の 熟練者向けパーティション設定 ダイアログには、 利用可能なストレージ の一覧に全ての接続済みハードディスク に対する既存のパーティションや、提案されたパーティション設定が表示されて います。ハードディスク全体は /dev/sda のように数字無しでの表記に、パーティションは /dev/sda1 のように数字付きでそれぞれ表示されます。それぞれパーティションの サイズや種類、暗号化状態やファイルシステム (FS)、マウントポイントも表示されて います。マウントポイントとは、 Linux のファイルシステムツリー内のどこに 割り当てるかを指定するためのものです。

左側にある システムビュー には、いくつかの機能を 表示させるためのビューが提供されています。既存のストレージ設定に対する情報 収集や、 RAID, ボリューム管理, 暗号ファイル などを設定することができるほか、 BTRFS, NFS, TMPFS などの、追加機能付きのファイルシステムを表示したりすることもできます。

インストール時に熟練者向けパーティション設定を実行した場合は、ハードディスク の空き容量についても一覧表示され、自動で選択されている形になっています。 openSUSE® に対してさらなるディスク領域を設定するには、一覧表示の 下から (ハードディスクの最後のパーティションから) 順に必要な領域を空けて いってください。

3.1.1. パーティションの種類

それぞれのハードディスクには、最大で 4 つの項目を記録することのできる パーティションテーブルがあります。それぞれの項目はプライマリパーティション や拡張パーティションと呼ばれます。拡張パーティションはハードディスク内で 1 つしか設定できません。

プライマリパーティションは、単純に連続したシリンダ (物理的な ハードディスク領域) から構成されるもので、特定のオペレーティングシステム 向けに割り当てるものです。プライマリパーティションはパーティション テーブルの仕様制限により、ハードディスクごとに最大で 4 つのパーティション までしか作成できません。その代わりとなるのが拡張パーティションです。 拡張パーティションもプライマリパーティションと同様に連続したシリンダを 割り当てますが、拡張パーティションはさらにその内側を 論理パーティション に分割することができます。 論理パーティションはパーティションテーブルには記録されません。 言い換えれば、拡張パーティションは論理パーティションの入れ物として動作する ことになります。

4 つ以上のパーティションが必要である場合は、 4 つめのパーティション (3 つめでも 2 つめでもかまいません) に拡張パーティションを作成します。 もちろん拡張パーティションは空きのシリンダ範囲に設定しなければなりません。 拡張パーティション内に論理パーティションを作成することで、必要な数の パーティションを作成してください。論理パーティションとして設定可能な 最大数は、ディスクの種類に関係なく 63 個までとなります。 Linux で パーティションを使用する場合は、どちらのパーティション種類であっても 違いはありません。プライマリパーティション、論理パーティションとも 全く同じに機能します。

3.1.2. パーティションの作成

何もない状態からパーティションを作成するには、 ハードディスク を選択してから空き領域のあるハードディスクを選択し、 下記の手順で パーティション タブを開いて設定します:

  1. 追加 に押して作成するパーティションの種類 (プライマリ または拡張) を選択します。最大でプライマリパーティションを 4 つ、もしくは プライマリパーティション 3 つに拡張パーティションを 1 つまで作成できます。 拡張パーティションを作成する場合は、その後に複数の論理パーティションを 作成することができます (詳しくは 3.1.1項 「パーティションの種類」 をお読みください) 。

  2. 次に新しいパーティションのサイズを指定します。ディスク内の未使用領域を 全部占有するように選択することができるほか、独自にサイズを指定することも できます。

  3. 次に利用したいファイルシステムとマウントポイントを選択します。 YaST では、それぞれ作成しようとしているパーティションに対して自動的に マウントポイントを提案します。ラベルによるマウントなど、マウント方法を 変更するには fstab オプション を押してください。

  4. お使いの環境で、必要であれば追加のファイルシステムオプションを指定 します。たとえば固定のデバイス名でマウントする必要がある場合などに 設定します。利用可能なオプションについて、詳しくは 3.1.3項 「パーティションの編集」 をお読みください。

  5. 最後に 完了 を押すと、お使いの環境の パーティション設定が適用され、パーティション設定モジュールを終了する ことができます。

    インストール作業時にパーティション作成を行なっている場合は、 インストール概要の画面に戻ります。

3.1.2.1. btrfs のパーティション設定

新しくインストールするシステムに対して、 btrfs を既定のファイルシステムと して使用したい場合 ( は、 パーティション分割の提案 画面の 提案設定 で、 btrfs を既定のファイルシステムとして使用する を選択します。 これを選択することで、インストールシステムは ext3 で /boot を、 btrfs でルートディレクトリ / のパーティションを作成し、これをサブボリュームに 対する既定のセットとして設定するようになります。これらの設定は、 熟練者向けバーティション設定 ツールを利用することで、 後から修正することも可能です。

ルートファイルシステムは既定のサブボリュームであり、作成したサブボリュームの 一覧には含まれません。また、既定の btrfs サブボリュームは、通常の ファイルシステムとしてマウントすることができます。

btrfs のサブボリュームについては、スナップショットを作成することもできます。 これは手作業で行なうことができるほか、システムのイベントを基準にして自動的に 作成することもできます。たとえば zypper でファイルシステムに 対し、何らかの変更を行なった場合は、 snapper コマンドを 呼び出して、変更前後のスナップショットを採取します。これは特に、 zypper で行なった変更に問題があった場合に有効な 仕組みで、このスナップショットを利用することで以前の状態に戻すことが できます。なお、 zypper から起動される snapper は、既定では ルート ファイルシステムに対するスナップショットを採取します。これはスナップ ショット内に不要なデータファイルが紛れ込まないようにするためのもので、 YaST が下記のようなディレクトリに対して、個別のサブボリュームを作成 するように促すのも、こういった理由によるものです。

提案で作成される btrfs のサブボリューム

/tmp /var/tmp /var/run

頻繁に変更されるようなコンテンツを含むディレクトリ。

/var/spool

メールなどのユーザデータが含まれるディレクトリ。

/var/log

巻き戻すべきではない、システムやアプリケーションのログを 含むディレクトリ。

/var/crash

カーネルがクラッシュした場合、クラッシュダンプを保存する ディレクトリ。

/srv

FTP や HTTP サーバのデータファイルを含むディレクトリ。

/opt

サードパーティ製のソフトウエアを含むディレクトリ。

[Tip]btrfs パーティションのサイズについて

スナップショットの保存を行なう際には、それなりのディスク領域が必要に なるため、スナップショット機能を持たないパーティション (たとえば ext3) よりも空き容量を大きく見積もる必要があります。サブボリュームを設定する 場合、ルートファイルシステムでの btrfs パーティションの推奨サイズは、 20GB 程度です。

3.1.2.1.1. YaST を利用した btrfs サブボリュームの管理

btrfs パーティションのサブボリュームは、 YaST の 熟練者向けバーティション設定 モジュールから管理できる ようになりました。ここでは新しいサブボリュームを追加したり、既存の サブボリュームを削除したりすることができます。

手順3.1 YaST を利用した brtfs サブボリュームの管理

  1. YaST を起動し、 システム+パーティション設定 を選択して、 熟練者向けバーティション設定 を起動します。

  2. 左側の システムビュー ペインで、 Btrfs を選択します。

  3. 管理したいサブボリュームを含む brtfs パーティションを選択し、 編集 を押します。

  4. サブボリュームの処理 を選択します。すると、選択した brtfs パーティション内にある、既存のサブボリュームがすべて表示されます。 ここには複数の @/.snapshots/xyz/snapshot が表示される 場合がありますが、これはそれぞれがスナップショットを表わすもので、 複数のサブボリュームをまとめて保存しています。

  5. それぞれサブボリュームの追加や削除は、下記のようにして行ないます:

    1. サブボリュームを削除するには、 既存のサブボリューム 内の一覧から選択して、 削除 を押します。

    2. 新しいサブボリュームを追加するには、 新しいサブボリューム のテキストフィールドに名前を入力して、 新規追加 を押します。

      図3.2 YaST パーティション設定における btrfs ボリューム

      YaST パーティション設定における btrfs ボリューム

  6. 作業が終わったら、 OK, 完了 と押していきます。

  7. 最後に Finish を押すと、パーティション設定を終わることが できます。

3.1.3. パーティションの編集

新しいパーティションを作成したり既存のパーティションを変更したりする 場合には、様々なパラメータを設定することができます。新しいパーティション を作成する際には YaST が適切なパラメータを設定しますので、特にそこから 変更する必要はありません。手動でパーティションの設定を変更するには、 下記の手順で行ないます:

  1. パーティションを選択します。

  2. 編集 を押してパーティションの編集画面を表示させ、 必要に応じてパラメータを変更します:

    ファイルシステム ID

    この段階でパーティションをフォーマットしたくない場合であっても、 パーティションが正しく登録できるようにするため、ファイルシステム ID を設定してください。一般的には、 Linux, Linux swap, Linux LVM, Linux RAID のいずれかを指定します。

    ファイルシステム

    パーティションのファイルシステムを変更するには、 パーティションをフォーマットする を押し、 ファイルシステム の一覧からファイルシステムの 種類を選びます。

    様々なファイルシステムについて、詳しくは ストレージ管理ガイド をお読みください。 openSUSE は複数種類のファイルシステムに対応しています。このうち、 BtrFS は高度な機能を必要とする環境では効果的な選択です。たとえば コピーオンライトの機能やスナップショット作成の機能を備えているほか、 複数デバイスに跨るファイルシステムの作成やサブボリュームなど、便利な 技術を数多く備えています。また ReiserFS, JFS, XFS, Ext3 は、いずれも ジャーナル機能を持つファイルシステムです。これらのファイルシステムは、 システムのクラッシュが発生しても、それらの操作がすべて記録されている ため、システムを素早く復元させることができます。 Ext2 はジャーナル 機能付きのファイルシステムではありませんが、管理用の領域を小さくする ことができるため、小さいパーティションには都合の良い選択です。

    スワップとは特殊な形式で、パーティションを仮想的なメモリとして扱う ことのできる仕組みです。少なくとも 256 MB 以上のスワップ パーティションを作成してください。ただし、スワップ領域を大きく使用 してしまっているような場合は、スワップ領域の追加よりも物理的な メモリ搭載量の追加をお考えください。

    [Warning]ファイルシステムの変更について

    ファイルシステムを変更してパーティションをフォーマットし直すと、 そのパーティション内にあるデータはすべて復元不可能な形で削除 されます。

    デバイスの暗号化

    暗号化を有効に設定すると、全てのデータは暗号化された形でハードディスク に書き込まれます。機密データのセキュリティ向上には貢献するものの、 暗号化は時間のかかる処理であるため、システムの性能を落とすことになって しまいます。ファイルシステムの暗号化について、詳しくは 第11章 パーティションとファイルの暗号化 (↑セキュリティガイド) をお読みください。

    マウントポイント

    ファイルシステムのツリー構造内で、どのディレクトリに割り当てるのかを 指定します。 YaST が提案する値の中から選択するか、もしくは任意の 値を入力します。

    fstab オプション

    グローバルなファイルシステム管理ファイル (/etc/fstab) では、様々なパラメータを設定することができます。多くの場合は既定の設定で 問題はありませんが、たとえばファイルシステムの識別方法をデバイス名から ボリュームラベルに変更したりすることができます。ボリュームラベルでは / とスペースを除く全ての文字を利用することができます。

    固定のデバイス名でマウントするよう設定するには、マウントオプションとして デバイス ID, UUID, ラベル のいずれかを選択してください。 openSUSE では、固定のデバイス名を既定で利用するようになっています。

    パーティションをラベルでマウントしたい場合は、 ボリュームラベル の欄に値を指定します。たとえば /home にマウントしたい パーティションに対して、 HOME のようなラベル名を設定します。

    また、ファイルシステム上でクォータを設定したい場合は、 クォータサポートを有効にする を選択してください。 これは YaST の ユーザとグループの管理 モジュールを 利用してクォータを設定する場合、事前に設定しておかなければなりません。 クォータの設定について詳しくは、 項 「クォータの管理」 (第10章 YaST を利用したユーザ管理, ↑スタートアップ) をお読みください。

  3. 完了 を押すと変更点を保存することができます。

[Note]ファイルシステムのサイズ変更

既存のパーティションについてサイズの変更を行なうには、対象のパーティション を選択して サイズ変更 を押します。なお、パーティション サイズの変更は、マウント中の状態から行なうことはできません。パーティション のサイズ変更を行なう前に、関連するパーティションのマウントは解除してください。

3.1.4. 熟練者向けオプション

システムビュー でハードディスクデバイス (たとえば sda) を選択すると、 熟練者向けパーティション設定 ウインドウ内の右下に 熟練者向け機能... のボタンが表示されます。 このメニューには下記のコマンドが含まれています:

新しいパーティションテーブルの作成

このオプションは、選択したデバイスに対して新しいパーティションテーブル を作成します。

[Warning]新しいパーティションテーブルの作成について

新しいパーティションテーブルを作成すると、そのデバイス上に存在する全ての パーティションとデータが復元不可能な形で削除されます。

このディスクを複製する

このオプションは、選択したデバイスのパーティションレイアウト (データは 含まれません) を利用可能な他のディスクに複製することができます。

3.1.5. 高度なオプション

コンピュータのホスト名 (システムビュー の枠内にある ツリーの最上位レベル) を選択すると、 熟練者向けパーティション設定 ウインドウ内の右下に 設定... のボタンが表示されます。 このメニューには下記のコマンドが含まれています:

iSCSI の設定

SCSI over IP のブロックデバイスにアクセスするには、まず iSCSI について 設定を行なう必要があります。この作業を行なうと、パーティション一覧内に 利用可能なデバイスが追加表示されるようになります。

マルチパスの設定

このオプションを選択すると、対応しているマスストレージデバイスに対して マルチパスの設定を行なうことができます。

3.1.6. さらなるパーティション設定に関する豆知識

下記の章では、お使いのシステムにパーティションを設定するにあたって 正しい決断を下すための、いくつかのヒントや豆知識を掲載しています。

[Tip]シリンダ数

パーティションツールによっては、パーティションのシリンダの数え方が 異なる場合があります。 0 から始まるものと、 1 から始まるものの 2 種類があります。 シリンダ数を数える場合は、シリンダ数の数え方に注意し、必要であれば 1 を足して計算してください。

3.1.6.1. スワップ の使用

スワップは利用可能な物理メモリを拡張するための仕組みです。物理的に 搭載されているメモリよりも大きなメモリを確保できるようになります。 カーネル 2.4.10 以前のメモリ管理システムでは十分な量のスワップが 必要でした。その当時は、物理メモリの 2 倍以上のスワップが存在して いないと、システムの性能が上がらないことがありました。このような 制限は今はありません。

Linux はメモリからディスクに移動するページを選択するのに、 Least Recently Used (LRU; 参照される頻度が最も低いもの) と呼ばれる方式で選択を行ないます。そのため、動作中のアプリケーションには より大きなメモリを提供し、キャッシュ処理もよりスムーズに動作するように なります。

アプリケーションが利用可能なメモリ量よりも大きなサイズの割り当てを 行なおうとした場合は、スワップ関連の問題が生じます。 3 つの主なケースが 考えられます:

スワップが設定されていないシステム

アプリケーションは利用可能な最大のメモリを取得します。全てのキャッシュ データは開放されることになるため、他の動作中アプリケーションの速度は 低下します。数分程度が経過すると、カーネルに用意されたメモリ不足解決器 (out-of-memory kill mechanism (OOM Killer)) が動作し、プロセスが kill されるようになります。

中程度の量のスワップが設定されたシステム (128 MB (メガバイト) から 512 MB)

当初の状態ではシステムはスワップ無しの状態と同じように速度が低下 します。全ての物理メモリが割り当てられると、スワップ領域を使い出す ようになります。この時点ではシステムの動作は非常に遅くなり、リモート からのコマンド実行がほとんど行なえない状態になります。スワップ領域を 設定したハードディスクの速度にもよりますが、システムはシステムはその 状態を 10 分から 15 分程度保持し、その後にカーネルに用意されたメモリ 不足解決器 (out-of-memory kill mechanism (OOM Killer)) が動作し、 問題を解決しようとします。なお、コンピュータに ディスクへのサスペンド を設定する場合は、ある一定の サイズのスワップ領域が必要になります。この場合、スワップサイズは メモリ内に存在するデータを保持しておくのに十分なサイズ (512 MB から 1 GB 程度) を設定しておく必要があります。

大きな量のスワップが設定されたシステム (GB (ギガバイト) 以上)

過度にスワップしてしまうばかりか、その制御すらきかないようなアプリケーション については、これを使用しないことが理想ですが、そのようなアプリケーションを 使用する必要がある場合は、回復するのに何時間もの時間がかかってしまうような ことがあります。この場合、システムは不確定な状態になってしまい、たとえ そのような欠陥アプリケーションを kill したとしても、他のプロセスはタイムアウトや 処理エラーを発生させてしまいます。この場合は、コンピュータを再起動すること で再度問題なく動作できるような状態に戻すことができます。大きな量のスワップは、 アプリケーション側でこの機能をどうしても必要としている場合にのみ有効です。 そのようなアプリケーション (たとえばデータベースシステムとか、画像加工 プログラムとか) では、必要に応じてハードディスク領域を直接利用するような 仕組みを備えている場合があります。スワップ領域を大きくする代わりに、 そのような設定を利用することをご検討ください。

システムが制御不能になっていない状況で、急につらなるスワップ領域が必要に なった場合は、スワップ領域をオンラインで拡張することができます。スワップ 領域用にパーティションを準備してあれば、そのパーティションを YaST から 追加するだけで設定できます。そのようなパーティションをお持ちでない 場合は、スワップファイルを利用してスワップの拡張を行なうこともできます。 スワップファイルはスワップパーティションよりも一般に速度の面で劣りますが、 いずれも物理メモリよりもずっと遅く、大きな違いはありません。

手順3.2 スワップファイルの手動追加

稼働中のシステムにスワップファイルを追加するには、下記の手順で行ないます:

  1. まずはお使いのシステムに中身が空のファイルを作成します。 たとえば 128 MB (メガバイト) のスワップファイルを /var/lib/swap/swapfile ディレクトリ内に作成したい 場合は、下記のコマンドを実行します:

    mkdir -p /var/lib/swap
    dd if=/dev/zero of=/var/lib/swap/swapfile bs=1M count=128
  2. 下記のコマンドを実行してスワップファイルの初期化を行ないます。

    mkswap /var/lib/swap/swapfile
  3. 下記のコマンドでスワップを有効に設定します。

    swapon /var/lib/swap/swapfile

    スワップファイルを無効化するには、下記のコマンドを入力します。

    swapoff /var/lib/swap/swapfile
  4. また、現在使用中のスワップ領域を表示するには、下記のコマンドを入力します。

    cat /proc/swaps

    なお、上記の手順では一時的に使用するスワップ領域を設定しています。 システムを再起動すると、設定したスワップは使用されなくなります。

  5. このスワップファイルを恒久的に使用するには、下記の行を /etc/fstab に追加します:

    /var/lib/swap/swapfile swap swap defaults 0 0

3.1.7. パーティション設定と LVM

熟練者向けパーティション設定 では、 システムビュー の枠内にある ボリューム管理 を利用して LVM 設定を行なうことが できます。 ただし、お使いのシステムに動作中の LVM 設定が存在している場合は、 LVM の初期設定に入る段階で自動的にそれらが有効化されます。この場合、 パーティションの存在する全てのディスク (有効化されたボリュームグループ に属するもの) のパーティション設定は変更できません。 Linux カーネルは 使用中のパーティションが存在するディスクについて、変更された パーティションテーブルを読み直すことができないためです。既にお使いの システムで動作する LVM 設定が存在する場合は、物理的なパーティション 設定は必要ではないため、その代わりに論理ボリュームの設定を変更して ください。

ボリュームに対する情報は、物理ボリューム (PV) のパーティション冒頭部分に 書き込まれます。それらのパーティションを LVM ではない他の用途に使用する 場合は、ボリュームの冒頭部分を削除しておくことをお勧めします。たとえば ボリュームグループ system と物理ボリューム /dev/sda2 が存在する場合、下記のコマンドで削除する ことができます。 dd if=/dev/zero of=/dev/sda2 bs=512 count=1.

[Warning]起動用のファイルシステム

起動中に使用するファイルシステム (ルートファイルシステムか、もしくは /boot パーティション) は LVM 論理ボリューム内に 存在させてはなりません。その代わりに、通常の物理パーティション内に 配置してください。

3.2. LVM の設定

この章では、論理ボリュームマネージャ (LVM) の考え方と、その多目的な 使い方について説明しています。 YaST で LVM を利用した設定方法に ついては、 3.2.2項 「YaST を利用した LVM 設定」 をお読みください。

[Warning]

LVM を使用すると、場合によってはデータ損失などのリスクを増加させてしまう ことがあることにご注意ください。アプリケーションのクラッシュや電源の問題、 およびコマンドの入力ミスなどのリスクも考えられます。そのため、 LVM を 実装したり再設定したりする際には、お使いのデータは必ず保存しておいてください。 バックアップ無しでの作業は行なってはなりません。

3.2.1. 論理ボリュームマネージャ

LVM は複数のファイルシステムに対応した、柔軟なハードディスク領域管理 機能を提供します。これは当初のパーティション設定が終わったあと、システムを 運用中の状態でハードディスク領域を部分的に変更したい、という要件が発生して いたことから開発が始まりました。稼働中のシステムではパーティション設定を 変更することが難しいため、LVM では仮想プール (ボリュームグループ、略して VG とも呼びます) というメモリ領域を用意することで、必要に応じて論理 ボリューム (LV) を作成できるようにしました。オペレーティングシステムは パーティションにアクセスする代わりに、これらの LV にアクセスします。 ボリュームグループは複数のディスクから構成することができます。この方法により、 LVM は物理的なディスク構成とは直接関係のない抽象機能を提供します。そのため、 物理的なパーティションに比べ、安全かつ容易に部分的な変更を行なうことが できるようになっています。物理的なパーティションに関する知識は、 3.1.1項 「パーティションの種類」3.1項 「YaST パーティション設定の利用」 をそれぞれお読みください。

図3.3 物理的なパーティションと LVM

物理的なパーティションと LVM

図3.3「物理的なパーティションと LVM」 では物理的なパーティション (左側) と LVM 論理ボリューム (右側) を比較したものです。左側では 1 台の ハードディスクを 3 つの物理的なパーティション (PART) に分割していて、 それぞれマウントポイント (MP) を設定することにより、オペレーティング システムからのアクセスができるようになっています。右側では 2 台の ハードディスクをそれぞれ 3 つの物理パーティションに分割しています。 そこから 2 つの LVM ボリュームグループ (VG 1 と VG 2) を設定 しています。 VG 1 には DISK 1 から 2 つのパーティション、 DISK 2 から 1 つのパーティションをそれぞれ設定しています。また、 VG 2 には DISK 2 から残りの 2 つのパーティションを設定して います。 LVM では、ボリュームグループ内に取り込まれたディスク パーティションのことを物理ボリューム (PV) と呼びます。ボリュームグループ 内には 4 つの LV (LV 1 から LV 4 まで) を設定していて、 オペレーティングシステムはそれぞれ設定されたマウントポイント経由で アクセスできるようになっています。異なる LV 同士の境界は、パーティション の境界と一致している必要はありません。この例では LV 1 と LV 2 の境界をご覧ください。

LVM の機能:

  • 複数のハードディスクやパーティションを、大きな論理ボリュームとして 統合することができます。

  • 構成が適切であれば、ある LV (たとえば /usr) の 空き領域が枯渇した場合、サイズを拡張することができます。

  • LVM を使用することで、稼働中のシステムに対してハードディスクや LV の 追加を行なうことができます。ただし、ホットスワップ (活線挿抜) に対応 したハードウエアが必要です。

  • LV のデータを複数の PV に分散する "ストライプモード" を利用することが できます。 PV がそれぞれ異なるディスクに存在していれば、読み書きの性能を 向上させることができます。これは RAID 0 とも呼ばれます。

  • スナップショット機能により、稼働中のシステムで矛盾のないバックアップを 採取することができるようになります (特にサーバ用途に使用する場合に便利な 機能です) 。

このような機能を持つ LVM は、多用される家庭用 PC や小規模サーバに便利な 仕組みになっています。 LVM はデータ量が増加し続けるユーザ (たとえば データベースや楽曲のアーカイブ、ユーザのディレクトリなど) には適した 仕組みで、物理的なハードディスクのサイズよりも大きなファイルシステムを 作成することができます。また、 LVM のもう 1 つの利点は、最大で 256 個 までの LV を追加することができるという点です。ただし LVM は通常の パーティションとは異なる作業を行なわなければなりません。 LVM の設定手順 や詳しい情報については、 LVM の公式 HOWTO http://tldp.org/HOWTO/LVM-HOWTO/ をお読みください。

カーネルバージョン 2.6 以降では、 LVM バージョン 2 を利用することができます。 これは以前のバージョンの LVM と後方互換性があり、古いバージョンの ボリュームグループについても管理できるようになっています。また、新しい ボリュームグループを作成する際には、新しい形式で作成するか古い形式で 後方互換性を保つかを選択することができます。なお、 LVM 2 では カーネルパッチを適用する必要がなく、 2.6 カーネル内蔵のデバイスマッパー を利用します。特別なパッチを適用していないカーネルでは LVM バージョン 2 にのみ対応しているため、下記の章では LVM バージョン 2 を利用して 話を進めるものとします。

3.2.2. YaST を利用した LVM 設定

YaST からの LVM 設定は、 YaST の熟練者向けパーティション設定内の システムビュー にある、 ボリューム管理 から行なうことができます (詳しくは 3.1項 「YaST パーティション設定の利用」 をお読みください) 。熟練者向けパーティション設定では既存のパーティションを 編集したり削除したりすることができるほか、 LVM で使用するために新しい パーティションを作成することもできます。 LVM の作業は、ボリュームグループに 領域を提供するため、 PV を作成することからはじまります:

  1. ハードディスク からハードディスクを選びます。

  2. パーティション タブに切り替えます。

  3. 追加 を押し、このディスクに作成する PV のサイズを 指定します。

  4. パーティションをフォーマットしない を選択し、 ファイルシステム ID0x8E Linux LVM を選択します。このパーティションはフォーマットしないでください。

  5. 上記までの手順を、必要な物理ボリューム数だけ繰り返してください。

3.2.2.1. ボリュームグループの作成

お使いのシステムに既存のボリュームグループが存在しない場合、次に それを追加します (図3.4「ボリュームグループの作成」 をご覧ください) 。 システムビュー 内の ボリューム管理 から、 ボリュームグループの追加 を押すことで、 追加のボリュームグループを作成することもできます。通常は 1 つのボリューム グループを作成するだけで十分です。

  1. まずはボリュームグループの名前を入力します (例: system)

  2. 次に 物理エクステントサイズ を選択します。 この値は、ボリュームグループ内での物理ブロックのサイズを指定します。 ボリュームグループ内のディスク領域は、このサイズ単位で処理されます。

  3. デバイスを選択して 追加 を押すと、ボリューム グループに物理ボリュームを追加することができます。デバイスを選択 する際に Ctrl を押しながら行なうと、複数の デバイスを選択することができます。

  4. 完了 を押して閉じます。 これでボリュームグループの設定が終わり、次の手順に進むことが できるようになります。

図3.4 ボリュームグループの作成

ボリュームグループの作成

複数のボリュームグループを設定していて PV を追加したり削除したりしたい場合は、 まず ボリューム管理 内からボリュームグループを選択し、 サイズ変更 ボタンを押してください。その後表示されるウインドウで、 選択したボリュームグループに対する PV を追加または削除することができます。

3.2.2.2. 論理ボリュームの設定

物理ボリュームからボリュームグループを設定したら、次にオペレーティング システムで論理ボリュームを設定します。作成したボリュームグループを 選択し、 論理ボリューム タブに移動してください。 追加, 編集, サイズ変更, 削除 の各ボタンを 利用し、存在するボリュームグループ全てを使用するまで設定してください。 少なくとも論理ボリュームには 1 つ以上のボリュームグループを設定する 必要があります。

図3.5 論理ボリューム管理

論理ボリューム管理

追加 を押すと、ウイザード形式の ポップアップが表示されます:

  1. まずは論理ボリュームの名前を入力します。たとえば /home にマウントさせたい論理ボリュームであれば、それをそのまま説明する HOME などの名前を入力してください。

  2. 次に論理ボリュームのサイズとストライプ数を指定します。 1 台のハードディスクしか物理ボリュームに存在していない場合は、 1 以上のストライプ数を設定することはできません。

  3. 続いて論理ボリューム上で使用するファイルシステムと、 マウントポイントを指定します。

ストライプを利用することで、複数の物理ボリューム (PV) に対してデータの 書き込みを分散させることができるようになります。ただし、ボリュームのストライプ は異なる物理ボリュームにまたがる場合にのみ設定できるもので、それぞれの物理 ボリュームは少なくともボリュームのサイズ分の容量が必要です。ストライプの最大数は 物理ボリューム数と同じで、 "1" を指定すると "ストライプ処理を利用しない" 意味に なります。また、ストライプは異なるハードディスク上の物理ボリューム上に対して 設定した場合にのみ意味を持つもので、同じハードディスク上に対して設定してしまうと、 かえって性能が落ちてしまいます。

[Warning]ストライプ

現時点の YaST ではストライプに関する設定の妥当性を検証する機能が 存在していません。そのため、ここで誤った設定を行なっても事前には チェックされず、 LVM を実際に作成する際にチェックされます。

これでお使いのシステムに LVM を設定することができました。これで作成した 論理ボリュームを使用することができます。作成した論理ボリュームには適切な マウントポイントを設定してお使いください。 完了 を 押すと YaST 熟練者向けパーティション設定に戻り、作業は完了です。

3.3. ソフトウエア RAID の設定

RAID (Redundant Array of Independent Disks) の目的は、複数のハードディスク パーティションを組み合わせて 1 つの巨大な 仮想 ディスクを構成し、性能向上とデータの保全のいずれか、または両方を目指した しくみです。多くの RAID コントローラでは、 IDE プロトコルよりも多数の ディスクをより効率的に扱うことができるという理由で、 SCSI プロトコルを 用いています。また、 SCSI プロトコルでは並列コマンド処理という機能も 備えています。それ以外にも、 IDE や SATA に対応する RAID コントローラも いくつか存在しています。ソフトウエア RAID はハードウエア RAID に比べ、 コントローラを購入する追加コストが発生しないという点で有利ですが、 CPU 時間を多く消費しメモリも利用してしまうため、高性能なコンピュータを 構成する場合には不利な選択です。

openSUSE® では複数のハードディスクを 1 台のソフトウエア RAID システムに組み合わせる仕組みを備えています。 RAID はシステム内の構成 方法によって異なる目的や利点、特性をそれぞれ備えています。これらの 違いは RAID レベル としても知られています。

一般的な利用される RAID レベルは、下記のとおりです:

RAID 0

このレベルは、各ファイルのブロックを複数のハードディスクに分散させる ことで、性能の向上を目指すレベルです。実際のところはデータの冗長性が 存在しないことから、厳密な意味での RAID ではありませんが、一般的には RAID 0 と呼ばれています。 RAID 0 では 2 台以上のハードディスクを組み合わせて使用します。性能は向上しますが、 いずれかのハードディスクが故障すると、 RAID システム全体が破壊される ことになります。

RAID 1

このレベルは、それぞれのハードディスクに同じデータを書き込むことで、 お使いのデータの安全性を高めるレベルです。これは ハードディスクミラーリング としても知られている 方法です。 1 台のディスクが故障しても他のディスクにコピーが存在する ため、そこから読み出すことができます。最後の 1 台のディスクが壊れる までは、お使いのデータは通常どおり読み出すことができます。ですが、 ディスク障害が検出されず、読み出したデータだけが壊れるタイプの障害が 発生した場合は、壊れたデータを壊れていないハードディスクにコピーして しまいます。これによって本質的には同じデータ損失が発生することに なります。コピー処理を行なうため、 1 台のディスクを使用する場合に比べて 性能が低下します (10 から 20 パーセント程度低下します) が、読み込み 性能については 1 台のハードディスクの場合よりも、それなりに速くなります。 これは複製したデータを同時並行で検索するためのものです。一般に Level 1 は、 1 台のハードディスクと比較して読み込み性能では 2 倍程度、書き込み性能では同等程度の速度が出るものとされています。

RAID 5

RAID 5 はレベル 0 と 1 を統合したもので、性能と冗長性の両方を 備えています。領域のサイズは、全てのハードディスクサイズの合計から 1 台分を引いたサイズになります。データは RAID 0 のようにハード ディスク内に分散して書き込まれますが、さらに パリティ ブロック と呼ばれるものが、安全上の理由からいずれかの パーティション内に作成されます。パリティは XOR と呼ばれる形式で作成 するもので、これによりシステム障害が発生してもパリティブロックから 元のデータを作り直すことができるようになっています。 RAID 5 では 1 台のディスクが故障してもデータに問題はありませんが、 複数台が同時に故障するとデータが修復できなくなります。データ損失を 防ぐには、 1 台のハードディスクが故障した段階で、早急に交換することが 必要になります。

RAID 6

RAID システムに対してさらなる信頼性を提供するには、 RAID 6 を使用 するのがよいでしょう。このレベルでは、同時に 2 台のディスクが故障しても アレイを復元させることができます。 RAID 6 では、最低でも 4 台の ハードディスクが必要です。なお、ソフトウエア RAID として構築している 場合、この設定を使用すると CPU 時間とメモリがそれなりに消費されます。

RAID 10 (RAID 1+0)

この RAID 実装は RAID 0 と RAID 1 を組み合わせたものです: データは複数のディスクに複製されたあと、それぞれの RAID 0 のアレイに書き込まれます。それぞれの RAID 1 アレイでは、 1 台までのディスク障害に耐えられます。 RAID 10 は、主にデータ ベースアプリケーションのような、負荷の高い用途に使用されます。

その他の RAID レベル

上記以外にも RAID のレベルがいくつか存在しています (RAID 2, RAID 3, RAID 4, RAIDn, RAID 10, RAID 0+1, RAID 30, RAID 50 など) 。これらの中にはハードウエアの 製造元で独占的な実装を行なっているものもあります。 これらのレベルはいずれも汎用的なものではないので、ここでは説明を していません。

3.3.1. YaST を利用した RAID 設定

YaST からの RAID 設定は、 YaST の熟練者向け パーティション設定内から行なうことができます (詳しくは 3.1項 「YaST パーティション設定の利用」 をお読みください) 。 熟練者向けパーティション設定では既存のパーティションを編集したり削除したり することができるほか、新しい RAID を作成することもできます:

  1. ハードディスク からハードディスクを選びます。

  2. パーティション タブに切り替えます。

  3. 追加 を押し、このディスクに作成する RAID パーティション のサイズを指定します。

  4. パーティションをフォーマットしない を選択し、 ファイルシステム ID0xFD Linux RAID を選択します。このパーティションはフォーマットしないでください。

  5. 上記までの手順を、必要な物理ボリューム数だけ繰り返してください。

RAID 0 と RAID 1 の場合は、少なくとも 2 つのパーティションが 必要です; RAID 1 の場合は通常、 2 つだけを指定します。 RAID 5 の場合は、少なくとも 3 つのパーティションが必要です。 また、いずれの RAID レベルであっても、同じサイズのパーティションを 作成し、設定することをお勧めします。さらに RAID パーティションは、 ディスクの故障によるデータ損失を防ぐため (RAID 1 と RAID 5 の場合) 、または最大限の性能を引き出すため (RAID 0 の場合) 、 異なるディスク上に配置すべきものです。 RAID で使用する全てのパーティション を作成したら、 RAID+RAID の追加 を押して RAID の設定を開始してください。

次のダイアログでは、 RAID のレベルを 0, 1, 5, 6, 10 から選択します。 そのあと、 RAID システムで使用する全ての Linux RAID または Linux native パーティションを選択します。 スワップパーティションや DOS パーティションは表示されません。

図3.6 RAID パーティション

RAID パーティション

選択した RAID ボリュームに対して、未割り当てのパーティションを 追加するには、対象のパーティションを選択して追加 を押してください。ここでは RAID に使用する全てのパーティションを 割り当ててください。割り当てを行なわないと、そのパーティションは 未使用のままになります。全てのパーティションを割り当てたら、 次へ を押して利用可能な RAID オプション を選択します。

手順の最後では、使用するファイルシステムと暗号化、その RAID ボリュームの マウントポイントをそれぞれ設定します。設定が全て終わったら、 完了 を押してください。熟練者向けパーティション設定では、 デバイス /dev/md0RAID と書かれたパーティションが表示されるはずです。

3.3.2. トラブルシューティング

RAID パーティションに障害が発生しているかどうかは、 /proc/mdstat ファイルから確認してください。何らかの 障害が発生していた場合は、 Linux システムをシャットダウンし、障害の発生 しているハードディスクを新しいものに交換してから、同じ方法でパーティション を設定してください。その後システムを起動し、 mdadm /dev/mdX --add /dev/sdX (X はお使いのデバイス 識別子に置き換えてください) コマンドを実行すると、 RAID システムへの 統合と再構築が始まります。

なお、再構築中でもデータにアクセスすることは可能ですが、 RAID が完全に 構築完了するまでの間は、性能面での問題に遭遇する可能性があります。

3.3.3. さらなる情報

ソフトウエア RAID に関する設定の詳細や、さらなる情報については、下記を お読みください:

Linux RAID メーリングリスト (英語) もご利用いただけます。 http://marc.info/?l=linux-raid をご覧ください。


openSUSE リファレンス 13.1