|
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インストールファイルをインストールする)に進みましょう。
|