ハンドブック:Alpha/ブロック/ディスク

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Alpha/Blocks/Disks and the translation is 100% complete.


スライス

理論的にはディスク全体を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)が逼迫した際、カーネルにディスク領域を提供するためにあります。スワップ領域があれば、カーネルは最近最も使われていないメモリページをディスクに書き出し(スワップもしくはページアウト)、現在のタスクのために RAM 上に置かれたメモリを開放します。もちろん、もしディスクにスワップされたページが急に必要になった場合は、これらのページはメモリに戻す(ページイン)必要があります。これには、RAM から読み込むより相当長い時間がかかります(メインメモリと比較してディスクはとても遅いためです)。

システムがメモリを大量に消費するアプリケーションを実行しないとき、またシステムが多くの RAM を持っているときは、それほど大きいスワップ領域は必要ではありません。しかし、ハイバネーションの際に、スワップ領域はメモリの内容すべてを保存するために使われる(サーバシステムよりも、デスクトップやラップトップシステムでよくあることです)ことに留意してください。システムにハイバネーションのサポートが必要な場合は、メモリの全体量以上のサイズのスワップ領域が必要です。

一般的なルールとして、スワップ領域のサイズは内部メモリ (RAM) の 2 倍であることが推奨されます。複数のハードディスクを備えるシステムでは、並列して読み込み/書き込み操作が行えるように、それぞれのディスクに 1 つずつスワップパーティションを作成するのが賢い方法です。スワップ空間内のデータにアクセスしなくてはならないときに、ディスクがより高速にスワップできるほど、システムもより高速に動作するでしょう。回転式ディスクとソリッドステートディスクを比較すると、SSD 上にスワップを置いたほうが高いパフォーマンスが発揮できます。また、スワップパーティションの代わりにスワップファイルを使用することもできます。これは主にディスク容量が非常に限られたシステムで興味深いものです。


ディスクをパーティションに分けるのに 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

パーティションを作成したので、ファイルシステムを作成するに進んでください。