この記事では、Linux システムにおけるディスク・パーティションのレイアウトを設計する方法を学びます。この記事で説明する内容は以下のとおりです。
- ファイルシステムおよびスワップ領域を個々のパーティションまたはディスクに割り当てる方法
- システムの用途に合わせて設計を調整する方法
- システムがブート可能であることを確実にする方法
- 論理ボリューム・マネージャー (LVM) の基本機能
この記事は、Linux Professional Institute の Junior Level Administration (LPIC-1) 101 試験の主題 102 の 102.1 の試験対策となります。この目標の重要度は 2 です。
注: この記事では主にレイアウトの計画について取り上げます。実装手順については、主題 104 に対応する記事 (連載のロードマップで説明) を参照してください。
注: この記事には LPI による「Exam 101: Objective Changes as of July 2, 2012 (101 試験: 2012年 7月 2日時点での目標の変更)」に対応した内容が含まれています。新たに追加したのは、論理ボリューム・マネージャー (LVM) の基本情報、従来の MBR ディスクを使用したパーティション・テーブルのレイアウトについてのさらなる詳細、そして GUID パーティション・テーブル (GPT) についての基本情報の一部です。新しいコードのリストや図は、いずれも Fedora 16 64bit 版のシステムで実行およびキャプチャーされたものです。
この連載の記事を最大限に活用するには、Linux の基礎知識と、記事に記載されたコマンドを演習できる実際の Linux システムが必要です。プログラムのバージョンによって出力のフォーマットに違いが出てくる場合もあるため、コマンドの実行結果は必ずしもここに記載するリストや図とまったく同じであるとは限りません。
Linux ファイルシステムに保管されるファイルは、ディスクやその他のブロック・ストレージ・デバイス上でディレクトリーという形式で整理されます。他の多くのシステムと同じく、Linux システムでのディレクトリーには、他のディレクトリーを含めることができます。ディレクトリーに含められたディレクトリーは、サブディレクトリーと呼ばれます。Microsoft Windows などのシステムでは、ドライブ名 (A:、C: など) ごとにファイルシステムを分けるという概念ですが、Linux ファイルシステムはそれとは異なり、/ ディレクトリーをルート・ディレクトリーとする単一のツリーです。
ファイルシステムがたった 1 つの大きなツリーだとしたら、なぜディスク・レイアウトが重要になるのか不思議に思うかもしれませんが、実際には、ハード・ディスク・パーティション、CD-ROM、あるいはフロッピー・ディスクなどといったブロック・デバイスのそれぞれにファイルシステムがあります。ファイルシステムを 1 つのツリーとして表すために、ツリー内のポイント (マウント・ポイント) に、さまざまなデバイス上のファイルシステムをマウントするというわけです。
通常、カーネルはある特定のハード・ディスクのパーティション上にあるファイルシステムを / としてマウントすることによって、このマウント・プロセスを開始します。ユーザーは他のハード・ディスクのパーティションを /boot、/tmp、または /home としてマウントすることができます。また、例えばフロッピー・ドライブ上のファイルシステムを /mnt/floppy としてマウントすることや、CD-ROM 上のファイルシステムを /media/cdrom1 としてマウントすることもできます。さらに、NFS のような、ネットワークで接続したファイルシステムを使用して、他のシステムからのファイルをマウントすることも可能です。ファイルのマウントには他にも種類がありますが、以上の説明で、このプロセスの概念はつかめるはずです。マウント・プロセスは、実際にはあるデバイス上のファイルシステムをマウントするわけですが、一般的には「デバイスをマウントする」と略して表現されます。これは、「デバイス上のファイルシステムをマウントする」という意味として理解されています。
ここで、例えばルート・ファイルシステム (/) をマウントした直後に、CD-ROM (/dev/sr0) をマウント・ポイント /media/cdrom にマウントする場合を考えてみてください。このマウント・ポイントに CD-ROM をマウントするには、このマウント・ポイントがあらかじめ存在していなければなりません。既存の /media/cdrom に CD-ROM をマウントすると、CD-ROM 上のファイルとサブディレクトリーはこのマウント・ポイント内およびその配下にあるファイルとサブディレクトリーになります。それによって、/media/cdrom 内にあったファイルまたはサブディレクトリーは表示されなくなりますが、これらの既存のファイルおよびサブディレクトリーは、マウント・ポイント /media/cdrom が含まれていたブロック・デバイス上に残っています。そのため、CD-ROM がアンマウントされると、元のファイルとサブディレクトリーが再び表示されることになってしまいます。このような問題が起こらないようにするため、マウント・ポイントとして使用する目的のディレクトリーには他のファイルを置かないでください。
表 1 に、FHS (Filesystem Hierarchy Standard) で規定されている / 配下のディレクトリーを記載します (FHS についての詳細は、「参考文献」を参照してください)。
表 1. FHS で規定された / 配下のディレクトリー
| ディレクトリー | 説明 |
|---|---|
| bin | 必須のコマンド・バイナリー |
| boot | ブート・ローダーの静的ファイル |
| dev | デバイス・ファイル |
| etc | ホスト固有のシステム構成 |
| lib | 必須の共有ライブラリーおよびカーネル・モジュール |
| media | 取り外し可能なメディアのマウント・ポイント |
| mnt | ファイルシステムを一時的にマウントするためのマウント・ポイント |
| opt | アドオン・アプリケーションのソフトウェア・パッケージ |
| sbin | 必須のシステム・バイナリー |
| srv | このシステムが提供するサービスのためのデータ |
| tmp | 一時ファイル |
| usr | 2 次階層 |
| var | 可変データ |
通常、1 番目の SCSI ドライブは /dev/sda となります。古いバージョンの Linux システムでの 1 番目の IDE ハード・ディスクは /dev/hda です。シリアル転送方式にした IDE ドライブ (SATA) の登場により、PATA/SATA 混合時のシステムでは 1 番目の PATA ドライブに /dev/hda を使用し、1 番目の SATA ドライブに /dev/sda を使用することもあります。新しいバージョンのシステムでは、すべての IDE ドライブが /dev/sda、/dev/sdb という形の名前になります。IDE ドライブの名前は、(最初は USB ドライブをサポートしていた) ホットプラグ・システムに対応することで変更されるようになりました。ホットプラグでは、新しいデバイスを接続すると同時に使用することができます。今では、デバイスがシステムに統合されるのか、あるいは USB や Firewire (IEEE 1394)、あるいは別の接続タイプによって、デバイスが実行中のシステムに接続されるのかに関わらず、すべてのデバイスにホットプラグが使用されています。
従来から、ハード・ディスクは 512 バイトのセクターにフォーマットされます。ディスク・プラッター上の、ヘッドを動かさずに読み取り可能なセクターはすべてトラックの構成要素となります。ディスクには通常、複数のプラッターがあります。プラッター上にあり、ヘッドを動かさずに読み取り可能なトラックの集合は、シリンダーと呼ばれます。ハード・ディスクのジオメトリーはシリンダーの数、シリンダーあたりのトラック (ヘッド) 数、およびトラックあたりのセクター数で表現されます。この記事を執筆している時点で、ハード・ディスクのメーカー各社は、セクターが 4K のディスクを導入するようになっています。ファイルシステムが以前と同じく 512 バイトのセクターを前提としていると、パーティションが 4K の境界にあるセクターで開始しない場合、パフォーマンスが劣化します。
PC システムの DOS オペレーティング・システムで使用されていたシリンダー、ヘッド、セクターにはサイズに制限があったため、より容量の大きいハード・ディスクをサポートできるように BIOS によるジオメトリー値の変換が使用されるようになりました。けれども結局のところ、いずれの方法も十分ではありませんでした。そこで、ディスク・ドライブ技術における最近の開発によってもたらされたのが、論理ブロック・アドレッシング (LBA) という手法です。この手法により、CHS (シリンダー、ヘッド、セクター) ジオメトリー測定値はそれほど重要でなくなりました。最近のディスクに関して報告されるジオメトリーは、実際の物理セクター・レイアウトとほとんど、あるいはまったく関係ありません。現在使用されている大容量ディスクに対応するために拡張された LBA は、最大 48 ビット分のセクター数を確保することから、LBA48 として知られています。そして今では大容量ドライブ用に、マスター・ブート・レコード (MBR) フォーマットの代わりに GUID (Globally Unique IDentifier) パーティション・テーブル (GPT) と呼ばれる新たなフォーマットが使用されています。GPT ドライブはデフォルトで最大 128 パーティションをサポートしています。
ハード・ディスク上の領域はパーティションに分割 (セグメント化) されます。パーティションが重なり合うことはできません。パーティションに割り当てられていない領域は空き領域と呼ばれます。パーティションには、/dev/hda1、/dev/hda2、/dev/hda3、/dev/sda1 といった名前が付けられます。IDE ドライブのホットプラグをサポートしないシステムでは、IDE ドライブのパーティションは 63 に制限されます。ホットプラグ対応の SCSI ドライブ、USB ドライブ、IDE ドライブで使用できるパーティションは 15 です。パーティションは多くの場合、シリンダー単位の整数として割り当てられます (基準となるシリンダーの概念は正確ではない可能性もあります)。
2 つの異なるパーティショニング・プログラムが、公称ディスク・ジオメトリーをそれぞれに異なって理解すると、一方のパーティショニング・プログラムが作成したパーティションに対し、もう一方のパーティショニング・プログラムがエラー、または問題の可能性を報告する場合があります。このような問題は、システム間の BIOS 機能が異なる場合はなおさらのこと、ディスクがあるシステムから別のシステムに移動されたときにも起こることがあります。
Linux システムで公称ジオメトリーを確認するには、parted または fdisk いずれかのツールを使用します。古いバージョンの Linux システムでも、ジオメトリーは /proc ファイルシステム内の /proc/ide/hda/geometry などの (新しいバージョンのシステムには存在しない可能性がある) ファイルで報告されていました。リスト 1 に、fdisk コマンドを使用して、SATA 接続を使用した IDE ハード・ディスクのパーティションおよびジオメトリーを表示する方法を記載します。ここで、fdisk の -v パラメーターが指定するのはバージョンです。パーティション・テーブルを表示または操作するには、root ユーザーであるか、または以下のように sudo を使って root 権限を取得する必要があります。
リスト 1. ハード・ディスクのジオメトリー
ian@attic4:~$ fdisk -v fdisk (util-linux-ng 2.16) ian@attic4:~$ sudo fdisk /dev/sdb [sudo] password for ian: The number of cylinders for this disk is set to 30401. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/sdb: 250.1 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x000404d6 Device Boot Start End Blocks Id System /dev/sdb1 1 25 200781 83 Linux /dev/sdb2 26 12965 103940550 83 Linux /dev/sdb3 12966 30401 140054670 83 Linux Command (m for help): |
リスト 1 では、fdisk がシリンダー 1024 の公称終了位置について警告を出力していることに注意してください。シリンダー 1024 が重要となるのは、BIOS がディスクの最初の 1024 のシリンダー内に完全に収まっているパーティションしかブートすることができない一部の古いシステムです。その場合、LBA サポートを備えていない BIOS や、古いバージョンのブート・マネージャーで問題が起こりがちです。最近のマシンでこれが問題になることは通常ありませんが、このような制約があることを認識しておいてください。
fdisk に -u オプションを指定すると、セクター単位で表示することができます。また、対話モードで u サブコマンドを使用することによって、セクター単位とシリンダー単位を切り替えることもできます。一方、parted コマンドは、数種類の単位をサポートします。リスト 2 に、リスト 1 で使用したディスクと同じディクスに対し、parted で異なる単位を使用する方法を説明します。
リスト 2. parted で異なる単位を使用する方法
ian@attic4:~$ sudo parted /dev/sdb
[sudo] password for ian:
GNU Parted 1.8.8.1.159-1e0e
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help u
unit UNIT set the default unit to UNIT
UNIT is one of: s, B, kB, MB, GB, TB, compact, cyl, chs, %, kiB, MiB,
GiB, TiB
(parted) p
Model: ATA HDT722525DLA380 (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 206MB 206MB primary ext3
2 206MB 107GB 106GB primary ext4
3 107GB 250GB 143GB primary ext3
(parted) u s
(parted) p
Model: ATA HDT722525DLA380 (scsi)
Disk /dev/sdb: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 63s 401624s 401562s primary ext3
2 401625s 208282724s 207881100s primary ext4
3 208282725s 488392064s 280109340s primary ext3
(parted) u chs
(parted) p
Model: ATA HDT722525DLA380 (scsi)
Disk /dev/sdb: 30401,80,62
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 30401,255,63. Each cylinder is 8225kB.
Partition Table: msdos
Number Start End Type File system Flags
1 0,1,0 24,254,62 primary ext3
2 25,0,0 12964,254,62 primary ext4
3 12965,0,0 30400,254,62 primary ext3
(parted) |
parted の出力と fdisk の出力とでは、示される開始シリンダーと終了シリンダーに明らかな違いがあることに注意してください。これは、parted ではシリンダーを 0 からカウントする一方、fdisk では 1 からカウントするためです。リスト 3 を見るとわかるように、fdisk が示す開始セクターと終了セクターは、parted と同じです。
リスト 3. 開始セクター番号と終了セクター番号の確認
ian@attic4:~$ sudo fdisk -ul /dev/sdb Disk /dev/sdb: 250.1 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors Units = sectors of 1 * 512 = 512 bytes Disk identifier: 0x000404d6 Device Boot Start End Blocks Id System /dev/sdb1 63 401624 200781 83 Linux /dev/sdb2 401625 208282724 103940550 83 Linux /dev/sdb3 208282725 488392064 140054670 83 Linux ian@attic4:~$ echo $(( 208282725 / 255 / 63 )) 12965 |
IDE ドライブのパーティションには、基本 (primary)、論理 (logical)、拡張 (extended) という 3 つのタイプがあります。パーティション・テーブルが配置されるのは、ディスクのマスター・ブート・レコード (MBR) です。MBR はディスク上の 1 番目のセクターなので、パーティション・テーブルがこのセクターで占める部分はそれほど大きくありません。そのため、ディスク上の基本パーティションの数は 4 に制限されます。これより多くのパーティションが必要になることは珍しくありませんが、その場合には、基本パーティションの 1 つが拡張パーティションに変更されることになります。拡張パーティションは 1 つまたは複数の論理パーティション用のコンテナーです。このように、MBR レイアウトを使用して 1 つのドライブ上に 4 つを超えるパーティションを作成することができます。
MBR レイアウトでは、サポートされるディスク容量にも制限があり、最大容量は約 2 テラバイトに制限されます。新しい GUID パーティション・テーブル (GPT) レイアウトでは、この容量の制限が解消されており、パーティションの数に対する制限もかなり緩和されています。GPT レイアウトを使用してフォーマットしたディスクは、最大で 128 の基本パーティションにデフォルトで対応しており、拡張パーティションや論理パーティションは使用しません。MBR の内部構造や GPT の仕組みについての詳しい情報は、「MBR、EBR、GPT、LVM の内部構造」を参照してください。
拡張パーティションは、1 つ、あるいは通常は複数の論理パーティションのコンテナーでしかありません。このパーティション方式は、元々 MS DOS と PC DOS で使用されていたもので、この方式により、PC ディスクが DOS、Windows、または Linux システムで使用できるようになります。ディスクに含めることのできる拡張パーティションは 1 つだけです。データが保管されるのは拡張パーティション内の論理パーティションなので、拡張パーティションのなかに論理パーティションを作成してからでないと、データを拡張パーティションに保管することはできません。
Linux では基本パーティションまたは拡張パーティションに 1 から 4 までの番号を付けます。したがって、dev/sda は例えば /dev/sda1、/dev/sda2、/dev/sda3、/dev/sda4 という 4 つの基本パーティションを持つこともあれば、/dev/sda1 という 1 つの基本パーティションと /dev/sda2 という拡張パーティションを持つこともあります。論理パーティションが定義される場合には 5 の番号から付けられるため、/dev/sda 上の 1 番目の論理パーティションは /dev/sda5 となります。これは、ディスク上に基本パーティションがなく、1 つの拡張パーティション (/dev/sda1) のみがある場合でも変わりません。つまり、IDE ドライブに 5 つ以上のパーティションが必要な場合には、拡張パーティションまでのパーティションの番号が 1 つなくなるということです。ホットプラグ対応のカーネルの場合、IDE ドライブ上で使用できる理論上の最大パーティション数は現在 15 となっていますが、最後のいくつかのパーティションについては、作成できることもあれば、作成できないこともあります。ドライブ上で 12 を超えるパーティションを使用しようと計画している場合には、すべてが機能することを慎重に確認してください。
上記の例で使用したディスクには 3 つの基本パーティションがあり、いずれも Linux 用にフォーマットされています。この 3 つのパーティションのうち、2 つは ext3 ファイルシステムを使用し、1 つは ext4 を使用します。parted コマンド p を、基本パーティション、拡張パーティション、論理パーティションが設定された Ubuntu 9.10 システムの内部ドライブに対して実行した場合の出力、そして Fedora 12 システムに接続された USB ドライブに対して実行した場合の出力をリスト 4 に記載します。ここでは、ファイルシステムのタイプの違いに注意してください。また、もう 1 つ注意する点として、対話モードを使用する代わりに、コマンドラインには 1 つ以上の parted コマンドを指定することができます。
リスト 4. parted によるパーティション・テーブルの表示
ian@attic4:~$ sudo parted /dev/sda u s p [sudo] password for ian: Model: ATA WDC WD6401AALS-0 (scsi) Disk /dev/sda: 1250263728s Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 63s 2040254s 2040192s primary ext3 2 2040255s 22523129s 20482875s primary linux-swap(v1) 4 22523130s 1250258624s 1227735495s extended boot 5 22523193s 167397299s 144874107s logical ext3 6 167397363s 310761359s 143363997s logical ext3 7 310761423s 455442749s 144681327s logical ext3 8 455442813s 600092009s 144649197s logical ext3 [root@echidna ~]# parted /dev/sdc p Model: WD My Book (scsi) Disk /dev/sdc: 750GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 135GB 135GB primary fat32 lba 2 135GB 750GB 616GB extended 5 135GB 292GB 157GB logical ext3 6 292GB 479GB 187GB logical ext3 7 479GB 555GB 76.5GB logical ext3 8 555GB 750GB 195GB logical ext3 |
fdisk コマンドは GPT でフォーマットされたディスクを認識しません。fdisk の代わりに使用できるのは、parted、gparted、gdisk のいずれかのコマンドです。gdisk の出力例はリスト 14 を参照してください。
警告: MBR レイアウトを使用したディスク上で gdisk を実行すると、自動的にディスクが GPT フォーマットに変換されるので、ご注意ください!
さまざまなタイプのパーティションについて理解したところで、各種パーティションに対して適切なサイズを計画しなかった場合はどうなるのだろうと思っている読者もいるのではないでしょうか。パーティションを拡張したり、縮小したりするにはどのようにすればよいのでしょう?あるいは、大容量のファイルシステムが 1 つのディスクには収まらない領域を必要とする場合はどうなるのでしょう?そこで登場するのが、論理ボリューム・マネージャー (LVM) です。
LVM を使用すると、ディスク領域の管理を抽象化することができるため、1 つのファイルシステムが複数のディスクやパーティションにまたがることが可能になり、ファイルシステムに必要な領域を追加したり、必要ない領域を削除したりすることができます。LVM の最新バージョンである lvm2 は初期バージョンである lvm (今では lvm1 と呼ばれることもあります) と後方互換性があります。
LVM はディスク領域を管理する際に以下のものを使用します。
- 物理ボリューム (PV)
- ボリューム・グループ (VG)
- 論理ボリューム (LV)
物理ボリューム (PV) は、1 つのドライブ上のドライブ全体もしくは 1 パーティションのことです。LVM ではパーティションを定義しなくても、ドライブ全体を使用することができますが、通常これはあまり望ましいことではありません。このことについては後ほど、「MBR、EBR、GPT、LVM の内部構造」で説明します。
ボリューム・グループ (VG) は、1 つ以上の PV の集まりです。たとえ PV の集まりが複数のパーティションや複数のディスクにまたがっている場合でも、VG の領域は、それがあたかも 1 つの大容量ディスクであるかのように管理されます。VG を構成する各 PV は異なるサイズにすることも、異なる種類のディスクにすることも可能です。これについては、この後すぐに説明します。
論理ボリューム (LV) は、ext4 や XFS といった特定のタイプのファイルシステムでフォーマットされた領域の一単位であり、Linux ファイルシステムの一部としてマウントされます。この点で、GPR や MBR などの物理パーティションと似ています。LV は完全に 1 つの VG 内に収容されます。
PV は、VG と呼ばれる抽象的なグループに集められる物理領域の一単位であり、どちらかといえば仮想ドライブのようなものであると考えてください。VG や仮想ドライブは、LV にパーティション化されてファイルシステムで使用されます。
VG の内部では、エクステントの観点で領域を管理します。デフォルトのエクステントのサイズは 4MB であり、通常はこのサイズで妥当です。これよりも大きなエクステント・サイズを使用する場合には、VG 内のすべての PV で同じエクステント・サイズを使用しなければならないことに注意してください。LV を割り当てたり、LV のサイズを変更したりする際には、その割り当てる単位がエクステント・サイズになります。従ってデフォルトで LV は 4MB の倍数のサイズになり、4MB 単位で拡張したり、縮小したりしなければなりません。
LVM パズルの最後のピースは、デバイス・マッパーです。Linux カーネルの一部であるデバイス・マッパーは、LVM やソフトウェア RAID などの仮想デバイスの全体的な基盤を提供します。
LVM を操作するためのコマンドは、通常 lvm2 パッケージの中にあります。これらのコマンドはコマンドラインから実行することも、lvm コマンドを実行することで各種 LVM コマンドを実行するためのシェルを起動して、そのシェルから実行することでもできます。リスト 5 に lvm コマンドと、それによって起動されるシェルから実行できる各種コマンドを示します。
リスト 5. lvm コマンドとそのサブコマンド
[root@echidna ~]# lvm lvm> help Available lvm commands: Use 'lvm help <command>' for more information dumpconfig Dump active configuration formats List available metadata formats help Display help for commands lvchange Change the attributes of logical volume(s) lvconvert Change logical volume layout lvcreate Create a logical volume lvdisplay Display information about a logical volume lvextend Add space to a logical volume lvmchange With the device mapper, this is obsolete and does nothing. lvmdiskscan List devices that may be used as physical volumes lvmsadc Collect activity data lvmsar Create activity report lvreduce Reduce the size of a logical volume lvremove Remove logical volume(s) from the system lvrename Rename a logical volume lvresize Resize a logical volume lvs Display information about logical volumes lvscan List all logical volumes in all volume groups pvchange Change attributes of physical volume(s) pvresize Resize physical volume(s) pvck Check the consistency of physical volume(s) pvcreate Initialize physical volume(s) for use by LVM pvdata Display the on-disk metadata for physical volume(s) pvdisplay Display various attributes of physical volume(s) pvmove Move extents from one physical volume to another pvremove Remove LVM label(s) from physical volume(s) pvs Display information about physical volumes pvscan List all physical volumes segtypes List available segment types vgcfgbackup Backup volume group configuration(s) vgcfgrestore Restore volume group configuration vgchange Change volume group attributes vgck Check the consistency of volume group(s) vgconvert Change volume group metadata format vgcreate Create a volume group vgdisplay Display volume group information vgexport Unregister volume group(s) from the system vgextend Add physical volumes to a volume group vgimport Register exported volume group with system vgmerge Merge volume groups vgmknodes Create the special files for volume group devices in /dev vgreduce Remove physical volume(s) from a volume group vgremove Remove volume group(s) vgrename Rename a volume group vgs Display information about volume groups vgscan Search for all volume groups vgsplit Move physical volumes into a new or existing volume group version Display software and driver version information lvm> quit Exiting. |
実際に動作している LVM の簡単な例を示すために、/dev/sdc5 上に LVM の GPT パーティション (パーティション・タイプ 0083) を作成し、/dev/sdd1 上に LVM の MBR パーティション (パーティション・タイプ 83) を作成しました。これらの上にはすでに PV を作成しており、リスト 6 に示すように pvscan コマンドを使用すると、システム上の PV を表示することができます。
リスト 6. PV を表示する
[root@echidna ~]# pvscan PV /dev/sdc5 lvm2 [146.43 GiB] PV /dev/sdd1 lvm2 [232.88 GiB] Total: 2 [379.32 GiB] / in use: 0 [0 ] / in no VG: 2 [379.32 GiB] |
ここで、vgcreate コマンドを使用して、これらの 2 つの PV から 1 つの VG を作成し、続いて lvcreate コマンドを使用して、いずれの PV よりもサイズの大きい LV を作成します。最後に新しい LV を ext4 でフォーマットし、/mnt/lvdemo にマウントしました。これらをリスト 7 に示します。
リスト 7. VG と LV を作成する
[root@echidna ~]# vgcreate demo-vg /dev/sdc5 /dev/sdd1 Volume group "demo-vg" successfully created [root@echidna ~]# lvcreate -L 300G -n demo-lv demo-vg Logical volume "demo-lv" created [root@echidna ~]# lvscan ACTIVE '/dev/demo-vg/demo-lv' [300.00 GiB] inherit [root@echidna ~]# mkfs -t ext4 /dev/demo-vg/demo-lv mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 19660800 inodes, 78643200 blocks 3932160 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 2400 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@echidna ~]# mount /dev/demo-vg/demo-lv /mnt/lvdemo [root@echidna ~]# df -h /mnt/lvdemo/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/demo--vg-demo--lv 296G 191M 281G 1% /mnt/lvdemo |
注:
mkfsやmountなどのファイルシステム・コマンドで LV にアクセスする際には、/dev/<VG 名>/<LV 名> のように名前を指定します。- LV を作成すると、リスト 7 の
vgscanコマンドの出力に示されるように、その LV はデフォルトで即座にアクティブになります。リムーバブル・ドライブ上に LV を作成した場合、そのドライブをシステムから取り外すには、その前にlvchangeコマンドを使用して、そのドライブをアクティブでない状態にする必要があります。
ここでは LVM について簡単に紹介しましたが、もっと詳しく LVM を学ぶには developerWorks の記事「論理ボリュームの管理」を参照してください (「参考文献」を参照)。
ディスク領域を割り当てる方法は理解するのが難しいかもしれないので、その説明をする前にちょっと回り道をして、MBR、EBR、GPT、LVM の各パーティション・テーブルの内部構造について説明することで、ディスク領域の割り当ての概念を理解する助けになるようにします。注: ここで説明する詳細な内容は LPI 試験には必要ないので、時間がない方や内部構造にあまり興味がない方は、このセクションを読み飛ばして「ディスク領域の割り当て」まで進んでいただいて構いません。
マスター・ブート・レコード (MBR) は、ハード・ディスク上の先頭のセクターにあります。MBR にはブートストラップ・コードと、場合によってはそれ以外の情報が含まれており、それに続いて 64 バイトのパーティション・テーブルと 2 バイトのブート・シグニチャーがあります。64 バイトのパーティション・テーブルは、オフセット 446 (1BEh) を先頭に 4 つの 16 バイトのエントリーで構成されています。表 2 にその 16 バイトの各エントリーのレイアウトを示します。
表 2. パーティション・テーブルのエントリーのフォーマット
| オフセット (hex) | 長さ | 説明 |
|---|---|---|
| 0h | 1 | ステータス。80h の場合、アクティブな (つまりブート可能な) パーティションであることを示します。 |
| 1h | 3 | パーティション内の先頭の絶対セクターの CHS (シリンダー、ヘッド、セクター) アドレス。 |
| 4h | 1 | パーティション・タイプ。 |
| 5h | 3 | パーティション内の末尾の絶対セクターの CHS (シリンダー、ヘッド、セクター) アドレス。 |
| 8h | 4 | パーティション内の先頭の絶対セクターの論理ブロック・アドレス (LBA)。 |
| Ch | 4 | パーティション内のセクターの総数。 |
実際の例を見てみましょう。root ユーザーは dd コマンドを使用して、ディスクから直接セクターを読み取ることができます。リスト 8 に示すのは、/dev/sda 上の MBR の先頭 510 バイトのダンプ出力から、tail コマンドによってレコードの最後の 64 バイトのみを選択し、16 進で表示した結果です。
リスト 8. /dev/sda 上のパーティション・テーブルを表示する
[root@echidna ~]# dd if=/dev/sda bs=510 count=1 2>/dev/null|tail -c 64 |hexdump -C 00000000 80 01 01 00 07 fe ff ff 3f 00 00 00 98 66 b9 08 |........?....f..| 00000010 00 fe ff ff 83 fe ff ff 61 5c 39 09 21 c7 17 00 |........a\9.!...| 00000020 00 fe ff ff 05 fe ff ff 82 23 51 09 85 ab 68 66 |.........#Q...hf| 00000030 00 fe ff ff 82 fe ff ff d7 66 b9 08 8a f5 7f 00 |.........f......| 00000040 |
先頭のレコードは、ブート可能なパーティションであることを示す 80h というステータスになっており、パーティション・タイプは NTFS であることを示す 07h になっています。他のレコードのパーティション・タイプは、83h (Linux)、05h (拡張)、82h (Linux スワップ) となっているので、ディスクには 3 つの基本パーティションと 1 つの拡張パーティションがあります。CHS の値はいずれも LBA を使用するディスクの標準的な値である feffff になっています。各パーティションの先頭セクターの LBA と、それぞれのパーティションに含まれる総セクター数は、32 ビットのリトル・エンディアンの整数として解釈されるので、98 66 b9 08 は 08b96698h を表しています。つまり、先頭の (NTFS) パーティションはセクター 63 (3fh) で開始され、146368152 (08b96698h) セクター分の領域を持つことになるため、fdisk を実行すると、末尾のセクターとして 63+146368152-1=146368214 が示されるはずです。
注:
- MBR のパーティション・テーブルには、論理パーティションに関する情報は含まれません。この後まもなく、論理パーティションに関する情報を調べる方法を説明します。
- ディスクで使用しているのが LBA の値ではなく、CHS の値である場合は、CHS の値を絶対セクターに変換するための演算を追加で行う必要があります。CHS の計算は、絶対セクターを調べるために別の演算を使用すること以外は、ここまで概説したのと基本的に同じなので、この簡単な紹介の中では説明しません。
リスト 9. /dev/sda に対して fdisk を実行したときの出力
[root@echidna ~]# fdisk -l /dev/sda Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000de20f Device Boot Start End Blocks Id System /dev/sda1 * 63 146368214 73184076 7 HPFS/NTFS/exFAT /dev/sda2 154754145 156312449 779152+ 83 Linux /dev/sda3 156312450 1874448134 859067842+ 5 Extended /dev/sda4 146368215 154754144 4192965 82 Linux swap / Solaris /dev/sda5 156312513 336031604 89859546 83 Linux /dev/sda6 336031668 636880859 150424596 83 Linux /dev/sda7 636880923 865983824 114551451 83 Linux /dev/sda8 865983888 949891319 41953716 83 Linux /dev/sda9 949891383 954003959 2056288+ b W95 FAT32 /dev/sda10 954007552 1187801087 116896768 83 Linux /dev/sda11 1187803136 1229760511 20978688 83 Linux /dev/sda12 1229762560 1874446335 322341888 83 Linux Partition table entries are not in disk order |
実際に /dev/sda1 は 146368214 で終わっていることがわかります。
パーティション・テーブルのエントリーは、実際のディスク上の順番で並んでいるわけではないことを示す警告が表示されていることに注意してください。これは、Linux スワップ・パーティションである /dev/sda4 が、拡張パーティションである /dev/sda3 よりも物理的に前にあるからです。これはエラーではありませんが、fdisk プログラムをはじめとするいくつかのツールには、実際の順番通りにパーティション・テーブルを作り直すオプションが用意されています。
拡張パーティションについてさらに詳しく見ていく前に、gparted コマンドによるグラフィカルな出力を少しだけ見てみましょう。gparted コマンドによって、パーティション・レイアウトをグラフィカルに表現した図表が表示され、そこには拡張パーティションが持つコンテナーの性質も示されます。
図 1 に、/dev/sda に対して gparted コマンドを実行すると表示される画面を示します。前述したように、ディスクには 3 つの基本パーティション (/dev/sda1、/dev/sda4、/dev/sda2) と 1 つの拡張パーティション (/dev/sda3) があります。拡張パーティションには、/dev/sda5 から /dev/sda12 までの論理パーティションが含まれています。この画像の上部でパーティションを図で表している部分では、拡張パーティションは、論理パーティションを包含するフレームとして (水色の破線で) 示されています。
図 1. gparted を使用して、複数のパーティション・タイプで構成されるディスクのパーティションを表示する
前述のように、MBR には論理パーティション用のパーティション・テーブルのエントリーが含まれることはありません。MBR では、システムの残りの部分を 1 つの特別なパーティションのようなものと見なすコンテナーを定義します。論理パーティションが定義されるのは、このコンテナーの中においてです。ではこのコンテナーはどのように動作するのでしょう?
1 つの拡張パーティション内の論理パーティションの数にハード・リミットはないため、論理パーティションを定義する固定サイズのパーティション・テーブルはありません。代わりに、論理パーティションごとに拡張ブート・レコード (EBR) があります。MRB と同じく、EBR は長さが 512 バイトで、オフセット 446 (1BEh) にあるパーティション・テーブルを使用します。EBR パーティション・テーブルの中では 2 つのエントリーのみが使用されます。1 番目のエントリーは、現在の論理パーティションのオフセットとサイズを定義します。2 番目のエントリーは、次の論理パーティションのオフセットと総セクター数を定義します。この単方向チェーンの最後の論理パーティションでは、2 番目のエントリーにはゼロが入ります。
リトル・エンディアンの 16 進数を 10 進数に変換する作業を楽にするために、ある EBR を基準にした 2 つの論理パーティションのエントリーを表示するための bash による簡単な関数を作成します。そして、フォーマット指定されたストリングを表示する hexdump コマンドの機能を利用して、各論理パーティションの先頭セクターの LBA と総セクター数を 16 進ではなく 10 進で表示するようにします。リスト 10 に showebr 関数を示します。
リスト 10. EBR を表示するための関数
showebr ()
{
dd if=$1 skip=$2 bs=512 count=1 2> /dev/null | tail -c 66 |
hexdump -n 32 -e '"%07.7_ax " 8/1 "%2.2x " 2/4 " %12d" "\n"'
}
|
1 番目の論理パーティションの EBR は拡張パーティションの先頭セクターなので、新しく作成した showebr 関数とリスト 9 で表示されたセクター・オフセットを使用して、この先頭セクターを表示してみます。リスト 11 にその出力を示します。
リスト 11. /dev/sda 上の 1 番目の論理パーティションの EBR
[root@echidna ~]# showebr /dev/sda 156312450 0000000 00 fe ff ff 83 fe ff ff 63 179719092 0000010 00 fe ff ff 05 fe ff ff 179719155 300849255 |
この EBR のパーティション・テーブルの 1 番目のエントリーには、この EBR からのオフセットが 63 のセクターで開始され、179719092 個のセクターを含む論理パーティション (/dev/sda5) が示されています。2 番目のエントリーには、拡張パーティション内の「1 番目」の論理パーティションの EBR からのオフセットが 179719155 のセクターで開始される、次の論理パーティションの EBR が示されており、その総セクター数は「次の」論理パーティションの EBR の先頭から、その論理パーティションの最後までのセクター数になっています。リスト 12 に /dev/sda 上の拡張パーティションと論理パーティションに関するパーティション情報を示します。/dev/sda6 の総セクター数は 636880859-336031668+1=300849192 です。リスト 11 の 2 番目のエントリーでは、総セクター数が 300849255 になっているので、/dev/sda6 はオフセット 300849255-300849192=63 で開始されると導き出すことができます。これは Windows XP をはじめとするシステムの一般的なオフセットです。
リスト 12. /dev/sda 上の拡張パーティションと論理パーティション
dev/sda3 156312450 1874448134 859067842+ 5 Extended /dev/sda5 156312513 336031604 89859546 83 Linux /dev/sda6 336031668 636880859 150424596 83 Linux /dev/sda7 636880923 865983824 114551451 83 Linux /dev/sda8 865983888 949891319 41953716 83 Linux /dev/sda9 949891383 954003959 2056288+ b W95 FAT32 /dev/sda10 954007552 1187801087 116896768 83 Linux /dev/sda11 1187803136 1229760511 20978688 83 Linux /dev/sda12 1229762560 1874446335 322341888 83 Linux |
今学んだことを showebr 関数とインライン・シェル演算と併せて用いると、リスト 13 に示すように /dev/sda の全 EBR チェーンを調べることができます。
リスト 13. /dev/sda 上の論理パーティションのチェーンを調べる
[root@echidna ~]# showebr /dev/sda 156312450 0000000 00 fe ff ff 83 fe ff ff 63 179719092 0000010 00 fe ff ff 05 fe ff ff 179719155 300849255 [root@echidna ~]# showebr /dev/sda $(( 156312450 + 179719155 )) 0000000 00 fe ff ff 83 fe ff ff 63 300849192 0000010 00 fe ff ff 05 fe ff ff 480568410 229102965 [root@echidna ~]# showebr /dev/sda $(( 156312450 + 480568410 )) 0000000 00 fe ff ff 83 fe ff ff 63 229102902 0000010 00 fe ff ff 05 fe ff ff 709671375 83907495 [root@echidna ~]# showebr /dev/sda $(( 156312450 + 709671375 )) 0000000 00 fe ff ff 83 fe ff ff 63 83907432 0000010 00 fe ff ff 05 fe ff ff 793578870 4112640 [root@echidna ~]# showebr /dev/sda $(( 156312450 + 793578870 )) 0000000 00 fe ff ff 0b fe ff ff 63 4112577 0000010 00 fe ff ff 05 fe ff ff 797691510 233797128 [root@echidna ~]# showebr /dev/sda $(( 156312450 + 797691510 )) 0000000 00 fe ff ff 83 fe ff ff 3592 233793536 0000010 00 fe ff ff 05 fe ff ff 1031488638 41959424 [root@echidna ~]# showebr /dev/sda $(( 156312450 + 1031488638 )) 0000000 00 fe ff ff 83 fe ff ff 2048 41957376 0000010 00 fe ff ff 05 fe ff ff 1073448062 644685824 [root@echidna ~]# showebr /dev/sda $(( 156312450 + 1073448062 )) 0000000 00 fe ff ff 83 fe ff ff 2048 644683776 0000010 00 00 00 00 00 00 00 00 0 0 |
オフセットが 3592 のパーティションが 1 つあることに注目してください。これは /dev/sda9 と /dev/sda10 の間にある 1.75MB の空き領域に対応しています。また、/dev/sda12 はオフセット 63 ではなく、2048 から開始されていることにも注意してください。2048 に設定されたオフセットは、2048 バイトのセクターを使用しているドライブや、セクターのアライメントが重要になる SSD (Solid State Drive) で見られるでしょう。
先ほど、MBR レイアウトでは、セクター・サイズが 512 バイトのディスクの最大容量が 2 テラバイトに制限されることを説明しましたが、2 テラバイトを超える容量のディスクが登場するのに伴い、GUID (Globally Unique IDentifier) パーティション・テーブル (GPT) と呼ばれる新しいレイアウトが設計されました。このフォーマットは容量の小さなディスクで使用することもできますが、大容量のディスクには不可欠なフォーマットです。この GPT レイアウトでディスクをフォーマットすると、通常の MBR の場所にはいわゆる「保護 (Protective) MBR」が配置されるため、GPT に対応していないオペレーティング・システムやユーティリティーでは、認識できないパーティション・タイプ (EEh) として、ディスク全体を把握することになり、その見かけのサイズは、ディスク全体のサイズ、もしくは MBR がそのディスクのセクター・サイズに対してサポートする最大サイズのいずれかになります。
最近の Linux ディストリビューションには GPT でディスクをフォーマットしたり、GPT ディスクからブートしたりするためのツールが含まれています。こうしたツールには、(fdisk に似ている) gdisk、parted、gparted、grub2、そして最新バージョンの grub などがあります。
最近の Linux システムでは、従来の PC BIOS または新しい EFI (Extensible Firmware Interface: 拡張ファームウェア・インターフェース) のいずれかを使用した、GPT パーティションからのブートをサポートしています。最近の 64 ビット版の Windows でも EFI を使用した、GPT パーティションからのブートをサポートしています。
GPT パーティションには、GPT ヘッダーと GPT パーティション配列が含まれています。GPT パーティション配列には少なくとも 128 のエントリーが含まれるため、GPT ディスクは最低限 128 の基本パーティションをサポートすることができます。GPT ヘッダーは GPT パーティションの先頭セクターにあり、その次のセクターに GPT パーティション配列が続きます。GPT ヘッダーと GPT パーティション配列はパーティションの最後で繰り返されます。さらなる保護のために、GPT ヘッダーには GPT パーティション配列の 32 ビット CRC も含まれています。
リスト 14 に、5 つの基本パーティションを持つリムーバブル・ディスク (/dev/sdc) に対して gdisk コマンドを実行したときの出力を示します。
リスト 14. /dev/sdc に対する gdisk コマンドの出力
[root@echidna ~]# gdisk -l /dev/sdc GPT fdisk (gdisk) version 0.8.4 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sdc: 3906963456 sectors, 1.8 TiB Logical sector size: 512 bytes Disk identifier (GUID): 7E637BAC-33FC-46D3-9860-6A300CDD0E5F Partition table holds up to 128 entries First usable sector is 34, last usable sector is 3906963422 Partitions will be aligned on 2048-sector boundaries Total free space is 1361893309 sectors (649.4 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 773580799 368.9 GiB 0700 Ian's partition 1 2 773580800 1387724799 292.8 GiB 0700 Ian's partition 2 3 1387724800 1831110655 211.4 GiB 0700 4 1831110656 2237978623 194.0 GiB 0700 5 2237978624 2545072127 146.4 GiB 8E00 |
GPT については、記事「Make the most of large drives with GPT and Linux」にさらに多くの情報が含まれています (「参考文献」を参照)。
物理ボリュームおよび論理ボリュームを管理するためのパーティションの作成
先ほど、LVM は最初にディスクにパーティションを作成しなくても、ディスク全体を利用することができると説明しましたが、GPT が保護 MBR を使用するのと同じ理由から、LVM ネイティブの機能を使用してディスク全体を PV として定義せずに、最初にディスクにパーティションを作成しておいてから、そのパーティションに PV を作成する方が良いでしょう。そうすることで、LVM に対応していないオペレーティング・システムでも、そのディスクのことをフォーマットされていないとみなすのではなく、認識できないパーティションでフォーマットされていると判断するようになるはずです。
LVM で使用される抽象化層の管理には、明らかに元の MBR パーティション・テーブルよりもかなり多くの情報が必要になります。PV にパーティションを作成することをお勧めする以外には、LVM が使用するディスク上のデータ構造について、この記事で詳しく説明することはしません。LVM についてさらに詳しく学ぶには、developerWorks の記事「論理ボリュームの管理」を参照してください (「参考文献」を参照)。
前述のとおり、Linux ファイルシステムは / をルートに持つ 1 つの大きなツリーです。フロッピー・ディスクや CD-ROM 上のデータをマウントしなければならない理由は至って明白ですが、ハード・ディスクに保管されたデータの区分を考慮しなければならない理由については、それほど明白ではないかもしれません。ファイルシステムを区分する正当な理由には、例えば以下のものがあります。
- ブート・ファイル。一部のファイルは、ブート時に BIOS またはブート・ローダーにアクセス可能でなければなりません。
- 複数のハード・ディスク。通常、各ハード・ディスクは 1 つ以上のパーティションに分割され、それぞれのパーティションのファイルシステムは、ファイルシステム・ツリーのいずれかの場所にマウントする必要があります。
- 共有可能ファイル。複数のシステム・イメージが、静的ファイル (例えば実行可能プログラム・ファイルなど) を共有する場合があります。また、ユーザーが同じホーム・ディレクトリーとメール・システムを使用して、ネットワーク上のどのマシンにもログインできるようにするため、ユーザーのホーム・ディレクトリーやメール・スプール・ファイルなどの動的ファイルを共有する場合もあります。
- オーバーフローの可能性。あるファイルシステムがその容量の 100 パーセントを使い果たす可能性がある場合、通常はシステムを実行するために必要なファイルから、そのファイルを分離することが得策となります。
- クォータ。クォータは、ユーザーまたはグループがファイルシステムで使用できる容量を制限します。
- 読み取り専用マウント。ジャーナリング・ファイルシステムが登場する以前は、システム・クラッシュ後にファイルシステムのリカバリーをするには大抵、長い時間がかかりました。そのため、ほとんど変更されることのないファイルシステム (例えば、実行可能プログラムのディレクトリーなど) については、システム・クラッシュ後のチェックにかかる時間を短くするために、読み取り専用でマウントすることができます。
ここまでで取り上げてきたファイルシステムの使用法に加え、ディスク上のスワップ領域の割り当てについても考慮しなければなりません。Linux システムの場合、スワップ領域は通常 1 つ、場合によっては複数の専用パーティションとなります。
例えば、1 つ以上のハード・ディスクを搭載したシステムをセットアップし、ハード・ディスクからブートすることを計画しているとします (この記事では、LAN 経由でブートするディスクレス・ワークステーションのセットアップや、ライブ CD または DVD の Linux システムを使用する際の考慮事項については取り上げません)。パーティションのサイズは後からでも変更できますが、それには通常、ある程度の作業が必要になってきます。そのため、前もって適切な選択を行うことが重要です。それでは早速、適切な選択を行うための手順に取り掛かりましょう。
最初に考慮しなければならないことは、システムを確実にブートできるようにすることです。一部の古いバージョンのシステムには、BIOS はディスクの先頭の 1024 シリンダー内に完全に収まっているパーティションからでないとブートできないという制約があります。そのようなシステムを使用している場合には、最終的に /boot としてマウントされるパーティションを作成し、そこに、システムをブートするために必要なファイルを保持する必要があります。これらのファイルのロードが完了すると、Linux システムがディスク操作を引き継ぐため、システムのその後の操作が 1024 のシリンダー制約によって影響されることはありません。/boot としてパーティションを作成する必要がある場合、通常は約 100 メガバイト (MB) もあれば十分です。
次の考慮事項として考えられるのは、必要なスワップ領域の容量です。現在のメモリーの相場では、スワップ領域は非常に遅い予備メモリーとなります。かつての一般的な経験則は、実際の RAM の容量に相当するスワップ領域を作成することでした。現在は、RAM を使い果たすことなく複数の大きなプログラムを使用できるように、ワークステーションには実際の RAM と同等、またはその 2 倍のスワップ領域を構成することをお勧めします。スワップ領域と RAM との切り替えに時間がかかるとしても、おそらく常に作業しているのは 1 つ、または 2 つのパーティションのなかでだけです。
大きなスワップ領域は、メモリーの容量が非常に少ないシステムにもお勧めできます。サーバーには、RAM の約半分のスワップ領域を使用するようにしてください (ただし、これ以外の値を推奨しているアプリケーションを実行している場合は別です)。いずれにしても、サーバーのメモリー使用率をモニターして、必要に応じて実際の RAM を追加するか、ワークロードを追加サーバーの間で分散できるようにしなければなりません。過度のスワップ処理が、サーバーに功を奏すことはめったにありません。スワップ用ファイルを使用することも可能ですが、専用パーティションのほうがパフォーマンスには優れています。
ここで、パーソナル・ワークステーションを使用するか、サーバーを使用するかを選択しなければなりません。パーソナル・ワークステーションを使用すると、サーバーを使用する場合に比べ、必要な容量を予測するのが遥かに難しくなりがちです。私が (特に Linux 初心者に) お勧めする方法は、標準ディレクトリー (/usr、/opt、/var など) の大部分を 1 つの大きなパーティションに割り当てることです。特に、これから何がインストールされることになるのかはっきりしていない Linux 初心者にとっては、この方法が役に立ちます。グラフィカル・デスクトップと、そこそこの数の開発ツールを実行しているワークステーションには、おそらく 5 ギガバイト以上のディスク領域に加え、ユーザー用の領域が必要となるはずです。サイズの大きい開発ツールには、単独で数ギガバイトを要する場合もあります。私は通常、オペレーティング・システムあたり 40 GB から 60 GB を割り当て、ディスクの残りは空けたままにして、他のディストリビューションをロードできるようにしています。
サーバーのワークロードは、ワークステーションに比べて安定したものとなるはずであるため、特定のファイルシステムの領域が使い果たされると、より深刻な結果となりがちです。そのため一般的には、複数のディスクに分散した複数のパーティションを作成することになります。場合によっては、これらのパーティションにハードウェア RAID やソフトウェア RAID、あるいは論理ボリューム・グループを使用することもあります。
さらに、それぞれのファイルシステムでのワークロードについて検討し、ファイルシステムを複数のシステムで共有させるか、または 1 つのシステムにだけ使用させるかについても決定しなければなりません。システムに最適な割り当ては、経験、キャパシティ計画ツール、ワークロードの増加予測を兼ね合わせて検討することで判断できます。
ワークステーションとサーバーのどちらを構成しているかに関わらず、各システムに固有のファイルはローカル・ドライブに置かれます。一般的にこれらのファイルシステムには、システム・パラメーター・ファイルの /etc、ブート時に必要なファイルの /boot、ブートまたはシステム・リカバリーに必要なファイルの /sbin、root ユーザーのホーム・ディレクトリーの /root、ロック・ファイルの /var/lock、実行されているシステムの情報の /var/run、システム・ログ・ファイルの /var/log があります。ユーザーのホーム・ディレクトリーの /home や、usr、/opt、/var/mail、または /var/spool/news などといったその他のファイルシステムは、インストールの必要とユーザーの選択に応じて、別個のパーティションまたはネットワークにマウントされたパーティションに置かれます。
学ぶために
- 2009年4月時点での目標に基づく LPIC-1 認定に備えるために必要な developerWorks の記事を見つけるには、「Linux の 101 試験対策: LPIC-1 のロードマップ」を利用してください。
- LPIC Program サイトで、Linux Professional Institute の 3 つの Linux システム管理資格認定レベルについて、詳しい目標、タスクのリスト、そして出題例を調べてください。特に、2009年4月時点での LPI 101 試験および LPI 102 試験の目標は要チェックです。最新の目標については、必ず LPIC Program サイトを参照してください。「Exam 101: Objective Changes as of July 2, 2012 (101 試験: 2012年 7月 2日時点での目標の変更)」にも注意してください。
- developerWorks の連載「LPI exam prep」をすべて読んで、Linux の基礎を学び、2009年4月以前の LPI 試験の目標に基づくシステム管理者認定試験に備えてください。
- Filesystem Hierarchy Standard のホーム・ページで FHS について詳しく学んでください。
- 「論理ボリュームの管理」(developerWorks、2007年9月) で論理ボリューム・マネージャーと LVM2 について学んでください。
- developerWorks の記事「Make the most of large drives with GPT and Linux」(developerWorks、2012年7月) で GUID パーティション・テーブル (GPT) について学んでください。
- 「Linux ビギナーのための基本タスク」(developerWorks、2011年4月) を読んで、ターミナル・ウィンドウやシェル・プロンプトの開き方をはじめ、さまざまなタスクを行う方法を学んでください。
- The Linux Documentation Project には、HOWTO 文書をはじめ、各種の有益な文書が豊富に揃っています。
- developerWorks Linux ゾーンには、Linux 開発者およびシステム管理者向けの資料が豊富に揃っています。
- developerWorks の Technical events and webcasts で最新情報を入手してください。
- Twitter で developerWorks をフォローしてください。
製品や技術を入手するために
- SystemRescueCd CD-ROM をダウンロードしてください。これはオンラインで入手できる数多くのツールの 1 つで、システム・クラッシュ後のリカバリーを支援します。
- developerWorks から直接ダウンロードできる IBM ソフトウェアの試用版を使用して、Linux で次の開発プロジェクトを構築してください。
議論するために
- ディスカッション・フォーラムに参加してください。
- developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、Wiki を調べることができます。

Ian Shields は、developerWorks Linux ゾーンの様々な Linux プロジェクトに関わっています。彼はノースキャロライナ州 Research Triangle Park にある IBM のシニア・プログラマーです。1973年にオーストラリアのキャンベラでシステム・エンジニアとして IBM に入社して以来、カナダのモントリオールやノースキャロライナ州 Research Triangle Park で、コミュニケーション・システムやパーベイシブ・コンピューティングに携わってきました。彼はいくつかの特許を保持しており、論文もいくつか発表しています。Australian National University にて純粋数学および哲学で学位を取得し、また North Carolina State University にてコンピューター・サイエンスで修士号と博士号を取得しています。Ian についての詳しい情報は developerWorks コミュニティーの Ian のプロフィールで調べてください。