ハンドブック:Alpha/ブロック/ディスク
スライス
理論的にはディスク全体をLinuxシステムに使用することが出来ますが、実際にはほとんど行われません。その代わりに、ディスクブロックデバイス全体を小さく、より扱いやすいブロックデバイスに分割します。Alphaシステムでは、これはスライスと呼ばれます。
これより先のセクションでは、インストールの説明でARC/AlphaBIOSのセットアップ用のパーティショニングを使用します。個人の好みに合わせて調整してください!
パーティション構成の設計
パーティション数とサイズ
ディスクのパーティションレイアウトの設計は、システムに対する要求と、デバイスに適用されるファイルシステムに大きく依存します。多数のユーザがいる場合、セキュリティを向上し、バックアップの作成とその他のメンテナンスを容易にするために、/home を分離されたパーティションに配置することが推奨されます。もし メールサーバとして動作する場合は、/var を分離されたパーティションとし、すべてのメールを /var ディレクトリに保存すべきでしょう。ゲームサーバでは、ほとんどのゲームサーバソフトウェアは /opt にインストールされるので、/opt を分離されたパーティションとすることができます。これらが推奨される理由は最初の /home ディレクトリと同様で、セキュリティ、バックアップ、そしてメンテナンスです。
Gentoo では多くの場合、/usr と /var は相対的に大きい容量を確保すべきです。/usr にはシステム上で利用可能なアプリケーションの大部分と、Linux カーネルソース (/usr/src 配下) が配置されます。デフォルトでは、/var には Gentoo ebuild リポジトリが (/var/db/repos/gentoo 配下に) 配置され、ファイルシステム依存ではあるものの通常 650 MiB ほどのディスク容量を消費します。この推定容量には /var/cache/distfiles と /var/cache/binpkgs ディレクトリは含まれていません。これらはそれぞれ、ソースファイルとバイナリパッケージ (使用している場合) を格納するディレクトリで、システムに追加すればするほど大きくなっていきます。
適切なパーティションの数とサイズは、システムを取り巻く環境と、トレードオフを考慮することで大きく変わります。パーティションやボリュームを分離することには下記の利点があります:
- それぞれのパーティションまたはボリュームに対して、最も性能が高いファイルシステムを選択できます
- ゾンビプロセスがパーティションまたはボリュームに継続的に書き込みをした場合でも、システム全体の空き領域を使い切ることはありません
- 必要ならば、複数のチェックを並行して実行することで、ファイルシステムチェックの時間を短縮できます (複数のパーティションよりも複数のディスクの方が効果を実感できます)
- リードのみ、
nosuid
(setuidビット無効)、noexec
(実行ビット無効)等のマウントオプションによって、セキュリティが向上します
しかし、複数パーティションにはデメリットもあります:
- もし適切に設定されていないと、あるパーティションが空き領域をたくさん持ち、別のパーティションにはまったく空き領域がなくなるといったことが起こり得ます。
- /usr/ を独立したパーティションにすると、他のブートスクリプトが動作する前にパーティションをマウントするために、initramfs を使ってブートする必要があるかもしれません。initramfs の生成と保守はこのハンドブックのスコープの範囲外ですので、慣れていない方が /usr を独立したパーティションとすることは推奨しません。
- SCSI や SATA では仕様上の制約により、GPT ラベルを使用しない限りは 15 個までしかパーティションを作れません。
サービスおよび init システムとして systemd を使うつもりのインストールでは、/usr ディレクトリはルートファイルシステムの一部とするか、または initramfs によりマウントされるようにして、ブート時に利用できるようにしなくてはなりません。
スワップ領域について
RAM サイズ | サスペンド対応時 | ハイバネーション対応時 |
---|---|---|
2 GB 以下 | 2 * RAM | 3 * RAM |
2 から 8 GB | RAM 容量 | 2 * RAM |
8 から 64 GB | 最小 8 GB、最大 16 GB | 1.5 * RAM |
64 GB 以上 | 最小 8 GB | ハイバネーションは推奨されません! 非常に大きな容量のメモリを持つシステムでは、ハイバネーションは推奨されません。可能ではありますが、正しくハイバネーションするためには、メモリの内容全体をディスクに書き込まなくてはなりません。数十 GB (またはそれ以上!) のデータをディスクに書き出すのには、回転式ディスクを使用する場合は特に、非常に長い時間がかかることがあります。この状況ではサスペンドするのが最善です。 |
スワップ領域のサイズについて完璧な値というものはありません。スワップ領域の目的は、メインメモリ(RAM)が逼迫した際、カーネルにディスク領域を提供するためにあります。スワップ領域があれば、カーネルは最近最も使われていないメモリページをディスクに書き出し(スワップもしくはページアウト)、現在のタスクのために RAM 上に置かれたメモリを開放します。もちろん、もしディスクにスワップされたページが急に必要になった場合は、これらのページはメモリに戻す(ページイン)必要があります。これには、RAM から読み込むより相当長い時間がかかります(メインメモリと比較してディスクはとても遅いためです)。
システムがメモリを大量に消費するアプリケーションを実行しないとき、またシステムが多くの RAM を持っているときは、それほど大きいスワップ領域は必要ではありません。しかし、ハイバネーションの際に、スワップ領域はメモリの内容すべてを保存するために使われる(サーバシステムよりも、デスクトップやラップトップシステムでよくあることです)ことに留意してください。システムにハイバネーションのサポートが必要な場合は、メモリの全体量以上のサイズのスワップ領域が必要です。
RAM 容量が 4GB より少ない場合の一般的なルールとして、スワップ領域のサイズは内部メモリ (RAM) の 2 倍であることが推奨されます。複数のハードディスクを備えるシステムでは、並列して読み込み/書き込み操作が行えるように、それぞれのディスクに 1 つずつスワップパーティションを作成するのが賢い方法です。スワップ空間内のデータにアクセスしなくてはならないときに、ディスクがより高速にスワップできるほど、システムもより高速に動作するでしょう。回転式ディスクとソリッドステートディスクを比較すると、ソリッドステートハードウェア上にスワップを置いたほうが高いパフォーマンスが発揮できます。
スワップパーティションの代わりに、スワップファイルを使用することができることも特筆に値します。これは主にディスク容量が非常に限られたシステムで役に立つものです。
ディスクをパーティションに分けるのに fdisk を使う (SRM のみ)
以下のパートではSRM用に、この例のようなスライスレイアウトを作成する方法を説明します:
スライス | 説明 |
---|---|
/dev/sda1 | スワップスライス |
/dev/sda2 | ルートスライス |
/dev/sda3 | フルディスク(必須) |
スライスレイアウトはお好みで変更してください。
利用可能なディスクの特定
どのディスクがシステムで動作しているかを確認するためには、以下のコマンドを使用してください:
IDE ディスクの場合:
root #
dmesg | grep 'drive$'
SCSI ディスクの場合:
root #
dmesg | grep 'scsi'
出力では、どのディスクが検出されたか、そしてディスクに対応する/dev/の項目が表示されます。以下のパートではディスクは/dev/sdaにあるSCSIディスクであると仮定します。
そして fdisk を実行:
root #
fdisk /dev/sda
すべてのスライスの削除
もしハードディスクが完全に空ならば、まずBSDディスクラベルを作成します。
Command (m for help):
b
/dev/sda contains no disklabel. Do you want to create a disklabel? (y/n) y A bunch of drive-specific info will show here 3 partitions: # start end size fstype [fsize bsize cpg] c: 1 5290* 5289* unused 0 0
まず'c'-スライス(BSDディスクラベルを使用するのに必要)以外のすべてのスライスを削除することから始めます。以下で、どのようにスライスを削除するかを示しています(この例では'a'を使用します)。この作業を他のすべてのディスクにも行ってください(繰り返しますが、'c'-スライス以外です)。
pを使用して、存在するすべてのスライスを確認してください。dはスライスを削除するのに使います。
BSD disklabel command (m for help):
p
8 partitions: # start end size fstype [fsize bsize cpg] a: 1 235* 234* 4.2BSD 1024 8192 16 b: 235* 469* 234* swap c: 1 5290* 5289* unused 0 0 d: 469* 2076* 1607* unused 0 0 e: 2076* 3683* 1607* unused 0 0 f: 3683* 5290* 1607* unused 0 0 g: 469* 1749* 1280 4.2BSD 1024 8192 16 h: 1749* 5290* 3541* unused 0 0
BSD disklabel command (m for help):
d
Partition (a-h): a
すべてのスライスに対してこの作業を行ったあと、一覧は以下のようになるはずです:
BSD disklabel command (m for help):
p
3 partitions: # start end size fstype [fsize bsize cpg] c: 1 5290* 5289* unused 0 0
スワップスライスの作成
Alphaベースのシステムでは独立したブートスライスを作成する必要はありません。しかしながら、最初のシリンダはabootイメージが置かれるため、使用することが出来ません。
3番目のシリンダより、合計サイズ1GBのスワップスライスを作成します。nを使用して新しいスライスを作成してください。スライスを作成したら、スライスのタイプを1(数字の一)、すなわちスワップに変更します。
BSD disklabel command (m for help):
n
Partition (a-p): a First cylinder (1-5290, default 1): 3 Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M
BSD disklabel command (m for help):
t
Partition (a-c): a Hex code (type L to list codes): 1
これらの段階を終えたら、レイアウトは以下のような感じになるはずです:
BSD disklabel command (m for help):
p
3 partitions: # start end size fstype [fsize bsize cpg] a: 3 1003 1001 swap c: 1 5290* 5289* unused 0 0
ルートスライスの作成
それではルートスライスを、スワップスライスの最後のシリンダの次より作成します。pコマンドを使用して、スワップスライスの終了位置を確認してください。この例では、終了位置は1003ですので、ルートスライスを1004より作成します。
現在fdiskにはバグがあり、fdiskが、利用可能なシリンダ数が実際のシリンダ数よりも1多いと見なしている問題があります。言い換えると、最後のシリンダを指定する時、シリンダ数を1つ減らしてください(この例では5290)。
スライスを作成したら、タイプを8、つまりext2に変更します。
BSD disklabel command (m for help):
n
Partition (a-p): b First cylinder (1-5290, default 1): 1004 Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289
BSD disklabel command (m for help):
t
Partition (a-c): b Hex code (type L to list codes): 8
結果的にスライスレイアウトはこのようになるはずです:
BSD disklabel command (m for help):
p
3 partitions: # start end size fstype [fsize bsize cpg] a: 3 1003 1001 swap b: 1004 5289 4286 ext2 c: 1 5290* 5289* unused 0 0
スライスレイアウトを保存し終了する
wを打ちfdiskを終了してください。この操作はスライスレイアウトの保存もします。
Command (m for help):
w
ディスクをパーティションに分けるのに fdisk を使う (ARC/AlphaBIOS のみ)
以下のパートではARC/AlphaBIOS用に、この例のようなパーティションレイアウトを作成する方法を説明します:
パーティション | 説明 |
---|---|
/dev/sda1 | ブートパーティション |
/dev/sda2 | スワップパーティション |
/dev/sda3 | ルートパーティション |
パーティションレイアウトはお好みで変更してください。
利用可能なディスクの特定
どのディスクが動作しているかを確認するためには、以下のコマンドを使用してください:
IDE ディスクの場合:
root #
dmesg | grep 'drive$'
SCSI ディスクの場合:
root #
dmesg | grep 'scsi'
この出力から、どのディスクが検出されたか、そしてディスクに対応する/dev/の項目がどれかを確認するのは簡単なはずです。以下のパートではディスクは/dev/sdaにあるSCSIディスクであると仮定します。
そして fdisk を実行:
root #
fdisk /dev/sda
すべてのパーティションの削除
もしハードディスクが完全に空ならば、まずDOSディスクラベルを作成します。
Command (m for help):
o
Building a new DOS disklabel.
まずすべてのパーティションを削除することから始めます。以下で、どのようにパーティションを削除するかを示しています(この例では'1'を使用します)。この作業を他のすべてのパーティションにも行ってください。
pを使用して、存在するすべてのパーティションを確認してください。dはパーティションを削除するのに使います。
command (m for help):
p
Disk /dev/sda: 9150 MB, 9150996480 bytes 64 heads, 32 sectors/track, 8727 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System /dev/sda1 1 478 489456 83 Linux /dev/sda2 479 8727 8446976 5 Extended /dev/sda5 479 1433 977904 83 Linux Swap /dev/sda6 1434 8727 7469040 83 Linux
command (m for help):
d
Partition number (1-6): 1
ブートパーティションの作成
MILOを使用して起動しているAlphaシステムでは、小さなvfatのブートパーティションを作成しなければなりません。
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-8727, default 1): 1 Last cylinder or +size or +sizeM or +sizeK (1-8727, default 8727): +16M
Command (m for help):
t
Selected partition 1 Hex code (type L to list codes): 6 Changed system type of partition 1 to 6 (FAT16)
スワップパーティションの作成
合計サイズ1GBのスワップパーティションを作成します。nを使用して新しいパーティションを作成してください。
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (17-8727, default 17): 17 Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M
Command (m for help):
t
Partition number (1-4): 2 Hex code (type L to list codes): 82 Changed system type of partition 2 to 82 (Linux swap)
これらの段階を終えたら、レイアウトは以下のような感じになるはずです:
Command (m for help):
p
Disk /dev/sda: 9150 MB, 9150996480 bytes 64 heads, 32 sectors/track, 8727 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System /dev/sda1 1 16 16368 6 FAT16 /dev/sda2 17 971 977920 82 Linux swap
ルートパーティションの作成
それではルートパーティションを作成します。繰り返しますが、nコマンドを使用してください。
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (972-8727, default 972): 972 Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727
これらの段階を終えたら、レイアウトは以下のような感じになるはずです:
Command (m for help):
p
Disk /dev/sda: 9150 MB, 9150996480 bytes 64 heads, 32 sectors/track, 8727 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System /dev/sda1 1 16 16368 6 FAT16 /dev/sda2 17 971 977920 82 Linux swap /dev/sda3 972 8727 7942144 83 Linux
パーティションレイアウトを保存し終了する
wを打ち、fdiskでの変更を保存してください。
Command (m for help):
w
パーティションを作成したので、ファイルシステムを作成するに進んでください。