Gentoo Logo

1.  ブロックデバイス入門

ブロックデバイス

Linuxファイルシステム、パーティション、ブロックデバイスを含めて、Gentoo LinuxとLinux全般でのディスクに適している側面を詳しく見て行きましょう。そして、ディスクとパーティションの一部始終を理解してもらった上で、Gentoo Linuxのインストールの為にパーティションとファイルシステムのセットアップの手順を案内します。

初めに、ブロックデバイスを紹介します。おそらく最も有名なブロックデバイスはLinux上では1番目のIDEドライブ、すなわち/dev/hdaを指しているものでしょう。もし、あなたのシステムがSCSIドライブを使っているなら, 1番目のハードディスクは/dev/sdaになるでしょう。また、IDEドライブがあったとしても、Serial ATAドライブは/dev/sdaになります。

上記のブロックデバイスはディスクへの抽象的インターフェイスを表しています。ユーザープログラムはドライブがIDEやSCSIもしくは他のどんなものかどうかを気にする事無くディスクにアクセスできます。プログラムは簡単にディスク上の記憶領域をランダムアクセス可能な512バイト毎の連続した束としてアドレッシングできます。

パーティションとスライス

Linuxシステムを格納するのにディスクの全体を使用する事は理論上可能ですが、実際にはほとんどそうはされません。代わりにディスク全体のブロックデバイスはもっと扱いやすいブロックデバイスにより小さく分割されます。ほとんどのシステムではこれら分割されたものをパーティションと呼びます。別のアーキテクチャーは同様の手法を使い、スライスと呼びます。

1.  パーティション構成を計画する

通常のパーティション構成

もしシステムのパーティション構成を編集するのに興味が無ければ、このハンドブックを通して使っているパーティション構成を使用できます。

パーティション ファイルシステム サイズ 種別
/dev/sda1 Partition map 31.5k Partition map
/dev/sda2 (bootstrap) 800k Apple_Bootstrap
/dev/sda3 (swap) 512M スワップパーティション
/dev/sda4 ext3 残りのディスク領域 ルートパーティション

注意: 次のように命名されたいくつかのパーティションがあります。Apple_Driver43、Apple_Driver_ATA、Apple_FWDriver、Apple_Driver_IOKit、Apple_Patches。もしMacOS 9を使用するつもりでなければ、MacOS XとLinuxはこれらを必要としないため削除することができます。まだmac-fdiskではこれらのパーティションを削除することができないので、これらを削除するためにpartedを使う必要があるかもしれません。

もしパーティションがどれぐらいのサイズにすればいいのか、どれだけの数のパーティションかにすべきかを知りたいのならば読み進んでください。そうでなければ、今からApple G5: パーティション作成にmac-fdiskを使うまたはIBM pSeries: パーティション作成にfdiskを使うに進んでください。

パーティション数とその大きさ

パーティションの数は環境に大きく依存します。例えば、多数のユーザーがいるのならセキュリティを強めバックアップを容易にする為に多分/homeを別にしたいでしょう。もしメールサーバーとして稼働させる為にGentooをインストールしようとしているのなら、全てのメールは/var内に保存されるので/varは別にすべきでしょう。ファイルシステムの良い選択はパフォーマンスを最大限にするでしょう。ゲームサーバーではほとんどのゲームサーバーパッケージが/optにインストールされるので、そこは別にされます。理由は/homeをセキュリティとバックアップの為に別にするのと同じようなものです。/usrは絶対に大きく取らなければな>らないです。大部分のアプリケーションが含まれるだけでなく、Portageツリーだけで、保存されるソースは別にしても500MB程度は取られます。

こういったように、どういうシステムにしたいのかにかなり依存します。分割されたパーティションまたはボリュームには以下の利点があります。

  • それぞれのパーティションまたはボリュームに最適なパフォーマンスを上げるファイルシステムを選択できます。
  • パーティションを分けておくと、あるゾンビプロセスがパーティションまたはボリュームにデータを書き込み続けてシステム全体の空き容量を使い果たすのを防ぐ事が出来ます。
  • 必要ならば、並行した複数のチェックを行えるのでファイルシステムのチェック時間を減らせます。(この利点は複数のパーティションでよりも複数のディスクでより有効ですが)。
  • セキュリティは読込専用、nosuid(setuidビットは無視されます)、noexec(実行ビットは無視されます)等でいくつかのパーティションをマウントする事で増大します。

しかし、複数のパーティションには一つ大きな欠点があります。 正しく設定しないと、空き容量がかなりあるパーティションと空き容量の無いパーティションのあるシステムになってしまうでしょう。また、SCSIとSATAでは15個迄というパーティション数の制限があります。

1.  一般的な選択: パーティション作成にmac-fdiskを使う (Apple G5)

現時点では、パーティション作成にmac-fdiskを使います。

コード表示 1.1: mac-fdiskの開始

# mac-fdisk /dev/sda

最初に、Linuxパーティションに場所を空けるため以前に作成したパーティションを削除してください。パーティションを削除するためにはmac-fdiskの中でdを使用してください。それは、削除するパーティション番号を尋ねます。

次に、bを使ってApple_Bootstrapを作成してください。それは、どのブロックから始めるか尋ねます。先に空いているパーティション番号を入力し、その後に続けてpを入力します。例えば、これは2pです。

注意: このパーティションは「ブート」パーティションではありません。これはLinuxによって全く使用されません。つまり、どんなファイルシステムも配置する必要はありませんし、これをマウントするべきではありません。PPCユーザーは/bootのための余分のパーティションを必要としません。

それから、cを押してスワップパーティションを作成してください。再び、mac-fdiskはどのブロックからこのパーティションを始めるか尋ねます。以前に私たちがApple_Bootstrapを作成するために2を使用したので、今は3pを入力する必要があります。サイズを尋ねられた時は、512M(または望んでいるどんなサイズでも)を入力してください。名前を尋ねられた時は、swap(必須です)を入力してください。

ルートパーティションを作成するためには、ルートパーティションがどのブロックから始まるべきであるかを選ぶために、cを入力した後に続けて4pを入力してください。サイズを尋ねられた時は、再び4pを入力してください。mac-fdiskはこれを「使用可能なスペースを全て使用してください」と解釈するでしょう。名前を尋ねられた時は、root(必須です)を入力してください。

完了するためには、wを使ってパーティションをディスクに書き、qを使ってmac-fdiskを終了してください。

注意: 全く問題がないことを確かめるために、もう一度mac-fdiskを実行し、すべてのパーティションがそこにあるかどうかを調べるべきです。もし、作成したパーティションまたは行った変更のいずれかを見ないならば、mac-fdiskにおいて「i」を押してパーティションの再初期化をするべきです。これがパーティションマップを再作成し、それからすべてのパーティションを取り去るということに注意してください。

これでパーティションが作成されましたので、ファイルシステムの作成に進む事ができます。

1.  IBM pSeries、iSeriesとOpenPower: パーティション作成にfdiskを使う

注意: インストールにRAIDディスクアレイを使用する予定でPOWER5ベースのハードウェアを使用している場合には、Advanced Function形式でディスクをフォーマットしディスクアレイを作成するためにiprutilsを実行してください。

以下の部分では先に紹介した例のパーティション設定の作成方法を説明します。

パーティション 種別
/dev/sda1 PPC PReP ブートパーティション
/dev/sda2 スワップパーティション
/dev/sda3 ルートパーティション

パーティションの割当てを自分の望むように変更してください。

現在のパーティションの割当てを見る

fdiskはディスクをパーティションに分割するのに高機能かつ普及しているツールです。 さあfdiskを実行しましょう。(例では/dev/sdaを使っています)。

コード表示 1.1: fdiskを起動する

# fdisk /dev/sda

fdiskを起動すると、下記の様なプロンプトが出ます。

コード表示 1.1: fdiskプロンプト

Command (m for help):

現在のディスクのパーティション情報を表示するにはpを入力します。

コード表示 1.1: パーティション情報例

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          12       53266+  83  Linux
/dev/sda2              13         233      981571+  82  Linux swap
/dev/sda3             234         674     1958701+  83  Linux
/dev/sda4             675        6761    27035410+   5  Extended
/dev/sda5             675        2874     9771268+  83  Linux
/dev/sda6            2875        2919      199836   83  Linux
/dev/sda7            2920        3008      395262   83  Linux
/dev/sda8            3009        6761    16668918   83  Linux

Command (m for help):

このディスクの例では6つのLinuxファイルシステム("Linux"と表示されている)とスワップパーティション("Linux swap"と表示)で構成するように設定されています。

全てのパーティションを削除する

最初に現在の全てのパーティションをディスクから削除します。dを入力するとパーティションを削除します。例えば、現在の/dev/sda1を削除するには、以下のようにします。

注意: ただ、全てのパーティションを削除したくなければ、削除したいパーティションを削除してください。この時、筆者はデータを失うことを避けるためバックアップを勧めます。

コード表示 1.1: パーティションを削除する

Command (m for help): d
Partition number (1-4): 1

パーティションの削除準備ができました。これでpと入力してもパーティションは表示されませんが、変更が保存されるまで実際には削除されません。もし間違えてしまって変更を保存せずに取消たい時はすぐにqと入力し、エンターキーを押してください。これでパーティションは削除されません。

さあ、これでシステム上の全パーティションを削除したい!と思っているでしょう?パーティションを表示するのにpを、 削除するのにdとパーティション番号を繰り返し入力してください。最後にパーティションテーブルに何も無くなれば終了です。

コード表示 1.1: 空のパーティションテーブル

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

さて今はメモリー上のパーティション構成は空になりました。パーティションを作成する準備が整いました。先程検討したように、通常のパーティション構成を使う事にしましょう。同じパーティション構成にしたくなければ、当然ですがこのハンドブックの例の通りにしてはいけません。もちろん同じパーティション構成にしたくなければ、厳密に案内にならわないでください。

PPC PRePブートパーティションを作成する

最初に小さなPRePブートパーティションを作成します。新しいパーティションを作成するにはnと入力します。そして基本パーティションを選択するのにpと入力するのに続き、1番目の基本パーティションを選択するのに1と入力します。最初のシリンダーが表示されると、エンターキーを押してください。最後のシリンダーが表示されたら、7Mバイトサイズのパーティションを作成するのに+7Mと入力してください。この作業の後、パーティションタイプを設定するのにtと入力します。先程作成したパーティションを選択するのに1と入力して、このパーティションタイプを"PPC PReP Boot"にする為に41と入力します。最後に、PRePパーティションにbootableのフラグを必ずセットしてください。

注意: PRePパーティションは8Mバイト未満でなければなりません!

コード表示 1.1: PRePブートパーティションを作成する

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
      e   extended
      p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6761, default 1): 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-6761, default
6761): +8M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 41
Changed system type of partition 1 to 41 (PPC PReP Boot)

Command (m for help):
Partition number (1-4): 1
Command (m for help):

さて、pと入力すれば以下のパーティションテーブル表示が見られるはずです。

コード表示 1.1: 作成されたブートパーティション

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1  *            1           3       13293   41  PPC PReP Boot

Command (m for help):

スワップパーティションを作成する

さあスワップパーティションを作成しましょう。この作業のためには、新規パーティションを作成するのにn、基本パーティションを選択するのにpを入力します. そして2番目の基本パーティション、この例では/dev/sda2を作成するのに2と入力します。最初のシリンダーが表示されると、エンターキーを押してください。最後のシリンダーが表示されたら、512Mバイトサイズののパーティションを作成するのに+512Mと入力してください。この作業の後、パーティションタイプを設定するのにtと入力します。先程作成したパーティションを選択するのに2と入力して、このパーティションタイプを"Linux Swap"にする為に82と入力します。これらの手順が完了後、pを入力すれば下記のようなパーティションテーブルが表示されるはずです。

コード表示 1.1: スワップパーティション作成後のパーティションテーブル

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           3       13293   41  PPC PReP Boot
/dev/sda2               4         117      506331   82  Linux swap

Command (m for help):

ルートパーティションを作成する

最後にルートパーティションを作成しましょう。この作業のためには、新規パーティションを作成するのにn、基本パーティションを選択するのにpを入力します. そして3番目の基本パーティション、この例では/dev/sda3を作成するのに3と入力します。最初のシリンダーが表示されると、エンターキーを押してください。最後のシリンダーが表示されたら、ディスクの残りの空き容量を確保する為にエンターキーを押します。これらの手順が完了後、pを入力すれば下記のようなパーティションテーブルが表示されるはずです。

コード表示 1.1: ルートパーティション作成後のパーティションテーブル

Command (m for help): p

Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           3       13293   41  PPC PReP Boot
/dev/sda2               4         117      506331   82  Linux swap
/dev/sda3             118        6761    29509326   83  Linux

Command (m for help):

パーティションの割当てを保存する

パーティションの割当てを保存して、fdiskを終了するにはwを入力します。

コード表示 1.1: 保存してfdiskを終了する

Command (m for help): w

これでパーティションが作成されましたので、ファイルシステムの作成に進む事ができます。

ファイルシステムとは

注意: いくつかのファイルシステムは利用可能です。Ext2とext3はPPC64アーキテクチャー上で安定しているように感じられます。reiserfsとxfsは実験的な段階です。jfsはサポートされません。

ext2は実証済みで真のLinuxファイルシステムですがメタデータジャーナリングを持ちません。これは起動時の定期のext2ファイルシステムのチェックにかなりの時間が掛かる事もあるという事です。現在、整合性のチェックをとても早く終わらせることのできる次世代のジャーナリングファイルシステムの選択肢があります。そのために一般的には非ジャーナリングファイルシステムより好まれています。ジャーナリングファイルシステムはファイルシステムの不整合状態の発生やシステム起動時の大幅な遅延を防ぎます。

ext3はfull data及びordered dataジャーナリングの様に他の優れたジャーナリングモードに加えて素早い回復のためのメタデータジャーナルを提供するext2ファイルシステムのジャーナル化バージョンです。ext3はとても信頼できる良いファイルシステムです。ほとんど全ての状況下で高いパフォーマンスを上げる事ができるハッシュ化されたb-treeインデックスの追加オプションがあります。mke2fsコマンドに-O dir_indexオプションを追加する事でこのインデックスを有効に出来ます。要するにext3は素晴らしいファイルシステムということです。

ReiserFSは全般的にとても良い性能であり、小さいファイル(4k以下のファイル)を扱う時はext2やext3よりもとても時には10-15倍の高い性能を発揮するB*-ツリーベースのファイルシステムです。またReiserFSはとても良くできていて、メタデータジャーナリングを持ちます。カーネル2.4.18以降では、 ReiserFSは一般的な目的と大規模ファイルシステムの作成、たくさんの小さいファイルの利用、とても大きいファイルや大多数のファイルが含まれるディレクトリなどを扱う極端なケースにも堅実で使用に適しています。

XFSはGentoo Linuxのxfs-sourcesカーネルのもとで完全にサポートされるメタデータジャーナリングを持つファイルシステムです。これは強健な特徴を持ち、拡張性のために最適化されています。Linuxでのこのファイルシステムの使用はSCSI/ファイバーチャンネル記憶装置と無停電電源供給をもつ高機能なシステム以外はお勧めしません。XFSは積極的にRAM上に処理中のデータをキャッシュするので、 不適切な設計のプログラム(ディスクにファイルを書き込む時に適切な注意を取らないもの。そういったものは非常に少ないですが)では、不意ににシステムがダウンした時、かなりのデータを失う可能性があります。

JFSはIBMの高性能なジャーナリングファイルシステムです。最近あともう少しで製品という所まで来てますが現時点では一般的な安定性において肯定的か否定的かを述べるのに十分な実績がありません。

パーティションにファイルシステムを適用する

パーティションやボリュームにファイルシステムを作成するには、それぞれのファイルシステムに合った利用可能なツールがあります。

ファイルシステム 作成コマンド
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

例えば、ルートパーティション(この例では/dev/hda3)をext3(今回の例として)にするには、以下の様にします。

コード表示 1.1: パーティションにファイルシステムを適用する

# mke2fs -j /dev/sda4

さあ新しく作成されたパーティション(もしくは論理ボリューム)にファイルシステムを作成しましょう。

スワップパーティションを有効にする

mkswapはスワップパーティションを初期化するのに使うコマンドです。

コード表示 1.1: スワップパーティションを初期化する

# mkswap /dev/sda3

スワップパーティションを有効にするにはswaponを使用します。

コード表示 1.1: スワップパーティションを有効にする

# swapon /dev/sda3

さあ、上記のコマンドでスワップを作成して有効にしましょう。

1.  マウント

さてパーティションが初期化されてファイルシステムが収まったので、それらのパーティションをマウントする時が来ました。mountというコマンドを使います。作成したそれぞれのパーティション用にマウントに必要なディレクトリを作成するのを忘れないでください。例ではマウントポイントを作成し、ルートとブートパーティションをマウントします。

コード表示 1.1: パーティションをマウントする

# mkdir /mnt/gentoo
# mount /dev/sda4 /mnt/gentoo 

注意: もし/tmpを別のパーティションとして置きたいのであれば、マウント後にchmod 1777 /mnt/gentoo/tmpを実行してパーミッションを変更するのを忘れないでください。これは/var/tmpも同様です。

最後に、Gentooをインストールしようとしているマウントポイントの中で/devファイルを作成しなければなりません。これはbootloaderをインストールする際に必要です。これは、インストールCDから/devファイルシステムを「bind」マッピングを行うことでできます。

コード表示 1.1: /devファイルシステムをBindマウントする

# mkdir /mnt/gentoo/dev
# mount -o bind /dev /mnt/gentoo/dev

procファイルシステム(カーネルとの仮想インターフェイス)も/procにマウントする必要があります。しかし、最初にパーティション上に色々なファイルを置く必要があります。

(Gentooインストールファイルをインストールする)に進みましょう。

ページの更新日 2005年 8月 25日

このドキュメントのオリジナルバージョン の更新日は2011年 10月 17日

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.