[ << ]
[ < ]
[ ホーム ]
[ > ]
[ >> ]
4. ディスクの準備
目次:
4.a. ブロックデバイス入門
ブロックデバイス
Linuxファイルシステム、パーティション、ブロックデバイスを含めて、Gentoo LinuxとLinux全般でのディスクに適している側面を詳しく見て行きましょう。
そして、ディスクとファイルシステムの一部始終を理解してもらった上で、Gentoo Linuxのインストールの為にパーティションとファイルシステムのセットアップの手順を案内します。
初めに、ブロックデバイスを紹介します。
おそらく最も有名なブロックデバイスはLinux上で1番目のドライブ、すなわち/dev/sdaでしょう。
SCASIもしくはシリアルATAドライブは両方とも/dev/sd*という名前が付けられます。
カーネルで新しいlibataフレームワークを使用していれば、IDEドライブさえ/dev/sd*という名前が付けられます。
もし古いデバイスフレームワークを使用していたら、1番目のIDEドライブは/dev/hdaになるでしょう。
上記のブロックデバイスはディスクへの抽象的インターフェイスを表しています。
ユーザープログラムはドライブがIDEやSCSIもしくは他のどんなものかどうかを気にすること無く、ディスクと情報をやりとりするためにブロックデバイスを使用できます。
プログラムは簡単にディスク上の記憶領域をランダムアクセス可能な512Mバイトごとの連続したブロックとしてアドレスを指定できます。
パーティション
Linuxシステムを格納するのにディスクの全体を使用することは理論上可能ですが、実際にはほとんどそうはされません。代わりにディスク全体のブロックデバイスはもっと扱いやすいブロックデバイスにより小さく分割されます。x86システムではこれら分割されたものをパーティションと呼びます。
パーティションは以下の3つのタイプに分けられます。
基本、 拡張そして論理です。
基本パーティションはMBR(マスターブートレコード)にその情報が格納されているパーティションです。MBRはとても小さい(512バイト)ので、4つの基本パーティションだけが定義できます。(例えば、/dev/sda1から/dev/sda4)です。
拡張パーティションはより多くのパーティションが含まれた特殊な基本パーティションです。(これは拡張パーティションは4つの基本パーティションの1つで無ければならないということです)。こういったパーティションは元々あった訳ではありません。しかし4つのパーティションでは少なすぎるので、下位互換性を損なうこと無く構成仕様を拡張する為に生まれたものです。
論理パーティションは拡張パーティション内のパーティションです。これらの定義はMBRの中ではなく、拡張パーティション内で宣言されています。
高度な記憶領域
x86のインストールCDではEVMSとLVM2のサポートを提供します。EVMSやLVM2ではパーティション設定の柔軟性が増します。このインストールハンドブックでは、"通常"のパーティションに焦点を当てますが、EVMSとLVM2もサポートされていることを知っておくのも良いことです。
4.b. パーティション構成を計画する
通常のパーティション構成
もしシステムのパーティション構成を編集するのに興味が無ければ、このハンドブックを通して使っているパーティション構成を使用できます。
| パーティション |
ファイルシステム |
サイズ |
種別 |
| /dev/sda1 |
ext2 |
32M |
ブートパーティション |
| /dev/sda2 |
(swap) |
512M |
スワップパーティション |
| /dev/sda3 |
ext3 |
残りのディスク領域 |
ルートパーティション |
もしパーティション(もしくは論理ボリューム)がどれぐらいのサイズにすればいいのか、どれだけの数のパーティション(もしくはボリューム)かにすべきかを知りたいのならば読み進んでください。そうでなければ、今からパーティション作成にfdiskを使うを読みながら、ディスクのパーティション作成作業を進めてください。
パーティション数とその大きさ
パーティションの数は環境に大きく依存します。例えば、多数のユーザーがいるのならセキュリテイを強めバックアップを容易にする為に多分/homeを別にしたいでしょう。もしメールサーバーとして稼働させる為にGentooをインストールしようとしているのなら、全てのメールは /var内に保存されるので/varは別にすべきでしょう。ファイルシステムの良い選択はパフォーマンスを最大限にするでしょう。ゲームサーバーではほとんどのゲームサーバーパッケージが/optにインストールされるので、そこは別にされます。理由は/homeをセキュリティとバックアップの為に別にするのと同じようなものです。/usrは絶対に大きく取らなければならないです。大部分のアプリケーションが含まれるだけでなく、Portageツリーだけで、保存されるソースは別にしても500MB程度は取られます。
こういったように、どういうシステムにしたいのかにかなり依存します。分割されたパーティションまたはボリュームには以下の利点があります。
-
それぞれのパーティションまたはボリュームに最適なパフォーマンスを上げるファイルシステムを選択できます。
-
パーティションを分けておくと、あるゾンビプロセスがパーティションまたはボリュームにデータを書き込み続けてシステム全体の空き容量を使い果たすのを防ぐことができます。
-
必要ならば、並行した複数のチェックを行えるのでファイルシステムのチェック時間を減らせます。(この利点は複数のパーティションでよりも複数のディスクでより有効ですが)。
-
セキュリティは読込専用、nosuid(setuidビットは無視されます)、noexec(実行ビットは無視されます)等でいくつかのパーティションをマウントすることで増大します。
しかし、複数のパーティションには一つ大きな欠点があります。
正しく設定しないと、空き容量がかなりあるパーティションと空き容量の無いパーティションのあるシステムになってしまうでしょう。また、SCSIとSATAでは15個迄というパーティション数の制限があります。
パーティション設定例として、ラップトップのデモ機(ウェブサーバー、メールサーバー、gnome等を含む)として使われている20GBのディスクを見ていただききましょう。
コード表示 2.1: ファイルシステム使用例 |
$ df -h
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext3 509M 132M 351M 28% /
/dev/sda2 ext3 5.0G 3.0G 1.8G 63% /home
/dev/sda7 ext3 7.9G 6.2G 1.3G 83% /usr
/dev/sda8 ext3 1011M 483M 477M 51% /opt
/dev/sda9 ext3 2.0G 607M 1.3G 32% /var
/dev/sda1 ext2 51M 17M 31M 36% /boot
/dev/sda6 swap 516M 12M 504M 2% <not mounted>
|
/usrはここでかなりの量(83%使用)を占めていますが、一旦全てのソフトがインストールされると /usrはそんなに増えて行きません。/varに数ギガバイトのディスク容量を割り当てるのは多過ぎる様に思われますが、Portageシステムではパッケージをコンパイルするのに、標準でこのパーティションを使用する事を心に留めておいて下さい。もし/varを1GBのようなもっと適当なサイズにしておきたい場合は、OpenOfficeのような巨大なパッケージをコンパイルするのに十分な空き容量のあるパーティションを指すように、/etc/make.confのPORTAGE_TMPDIRの値を変える必要があります。
4.c. パーティション作成にfdiskを使う
以下の部分では先に紹介した例のパーティション設定の作成方法を説明します。
| パーティション |
種別 |
| /dev/sda1 |
ブートパーティション |
| /dev/sda2 |
スワップパーティション |
| /dev/sda3 |
ルートパーティション |
パーティションの割当てを自分の望むように変更してください。
現在のパーティションの割当てを見る
fdiskはディスクをパーティションに分割するのに高機能かつ普及しているツールです。
さあfdiskを実行しましょう。(例では/dev/sdaを使っています)。
コード表示 3.1: fdiskを起動する |
# fdisk /dev/sda
|
fdiskを起動すると、下記の様なプロンプトが出ます。
コード表示 3.2: fdiskプロンプト |
Command (m for help):
|
現在のディスクのパーティション情報を表示するにはpを入力します。
コード表示 3.3: パーティション情報例 |
Command (m for help): p
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 49 264600 82 Linux swap
/dev/sda3 50 70 158760 83 Linux
/dev/sda4 71 2184 15981840 5 Extended
/dev/sda5 71 209 1050808+ 83 Linux
/dev/sda6 210 348 1050808+ 83 Linux
/dev/sda7 349 626 2101648+ 83 Linux
/dev/sda8 627 904 2101648+ 83 Linux
/dev/sda9 905 2184 9676768+ 83 Linux
Command (m for help):
|
このディスクの例では7つのLinuxファイルシステム("Linux"と表示されてた各パーテイション)とスワップ("Linux swap"と表示されたパーテイション)で構成するように設定されています。
全てのパーティションを削除する
最初に現在の全てのパーティションをディスクから削除します。dを入力するとパーティションを削除します。例えば、現在の/dev/sda1を削除するには、以下のようにします。
コード表示 3.4: パーティションを削除する |
Command (m for help): d
Partition number (1-4): 1
|
パーティションの削除準備ができました。これでpと入力してもパーティションは表示されませんが、変更が保存されるまで実際には削除されません。もし間違えてしまって変更を保存せずに取消たいときはすぐにqと入力し、エンターキーを押してください。これでパーティションは削除されません。
さあ、これでシステム上の全パーティションを削除したい!と思っているでしょう?パーティションを表示するのにpを、 削除するのにdとパーティション番号を繰り返し入力してください。最後にパーティションテーブルに何も無くなれば終了です。
コード表示 3.5: 空のパーティションテーブル |
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
Command (m for help):
|
さて今はメモリー上のパーティション構成は空になりました。パーティションを作成する準備が整いました。先程検討したように、通常のパーティション構成を使うことにしましょう。同じパーティション構成にしたくなければ、当然ですがこのハンドブックの例の通りにしてはいけません。もちろん同じパーティション構成にしたくなければ、厳密に案内にならわないでください。
ブートパーティションを作成する
最初に小さなブートパーティションを作成します。新しいパーティションを作成するにはnと入力します。そして基本パーティションを選択するのにpと入力するのに続き、1番目の基本パーティションを選択するのに1と入力します。最初のシリンダーが表示されると、エンターキーを押してください。最後のシリンダーが表示されたら、32Mバイトサイズののパーティションを作成するのに+32Mと入力し、ブート可能(bootable)フラグをセットしてください。
コード表示 3.6: ブートパーティションを作成する |
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M
|
さて、pと入力すれば以下のパーティションテーブル表示が見られるはずです。
コード表示 3.7: 作成されたブートパーティション |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 14 105808+ 83 Linux
|
このパーティションをブート可能にする必要があります。このパーティションにブート可能フラグを付加するにはaと入力します。もう一度pを入力すると、"Boot"欄に*が付いているのがわかるでしょう。
スワップパーティションを作成する
さあスワップパーティションを作成しましょう。この作業のためには、新規パーティションを作成するのにn、基本パーティションを選択するのにpを入力します. そして2番目の基本パーティション、この例では/dev/sda2を作成するのに2と入力します。最初のシリンダーが表示されると、エンターキーを押してください。最後のシリンダーが表示されたら、512Mバイトサイズののパーティションを作成するのに+512Mと入力してください。この作業の後、パーティションタイプを設定するのにtと入力します。先程作成したパーティションを選択するのに2と入力して、このパーティションタイプを"Linux Swap"にする為に82と入力します。これらの手順が完了後、pを入力すれば下記のようなパーティションテーブルが表示されるはずです。
コード表示 3.8: スワップパーティション作成後のパーティションテーブル |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
|
ルートパーティションを作成する
最後にルートパーティションを作成しましょう。この作業のためには、新規パーティションを作成するのにn、基本パーティションを選択するのにpを入力します. そして3番目の基本パーティション、この例では/dev/sda3を作成するのに3と入力します。最初のシリンダーが表示されると、エンターキーを押してください。最後のシリンダーが表示されたら、ディスクの残りの空き容量を確保する為にエンターキーを押します。これらの手順が完了後、pを入力すれば下記のようなパーティションテーブルが表示されるはずです。
コード表示 3.9: ルートパーティション作成後のパーティションテーブル |
Command (m for help): p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 105808+ 83 Linux
/dev/sda2 15 81 506520 82 Linux swap
/dev/sda3 82 3876 28690200 83 Linux
|
パーティションの割当てを保存する
パーティションの割当てを保存して、fdiskを終了するにはwを入力します。
コード表示 3.10: 保存してfdiskを終了する |
Command (m for help): w
|
これでパーティションが作成されましたので、ファイルシステムの作成に進むことができます。
4.d. ファイルシステムを作成する
はじめに
さてパーティションが作成されましたので、それぞれにファイルシステムを作成するときが来ました。
もしファイルシステムを選ぶことに興味がなくて、このハンドブックのデフォルトのものを使うことで満足ならば、パーティションにファイルシステムを適用するに進んでください。そうでなければ利用可能なファイルシステムに関して知るために読み進めてください...。
Filesystems
Linuxカーネルでは様々なファイルシステムをサポートしています。
ここではLinuxシステムの多くで共通して使われているext2、ext3、ReiserFS、XFS、JFSについて説明します。
ext2は実証済みで真のLinuxファイルシステムですがメタデータジャーナリングを持ちません。
これは起動時の定期のext2ファイルシステムのチェックにかなりの時間が掛かることもあるということです。
現在、整合性のチェックをとても早く終わらせることのできる次世代のジャーナリングファイルシステムの選択肢があります。
そのために一般的には非ジャーナリングファイルシステムより好まれています。
ジャーナリングファイルシステムはファイルシステムの不整合状態の発生やシステム起動時の大幅な遅延を防ぎます。
ext3はext2ファイルシステムのジャーナル化バージョンです。
full data及びordered dataジャーナリングの様に優れたジャーナリングモードに加えて、素早い回復のためのメタデータジャーナルを提供します。
ほぼすべての状況下で高いパフォーマンスを上げることができるHtreeインデックスを使用しています。
要するにext3は素晴らしいファイルシステムだということです。
ext3はすべての目的、すべてのプラットフォームに推奨されるファイルシステムです。
JFSはIBMの高性能なジャーナリングファイルシステムです。
JFSは軽くて速くて信頼できるB+treeに基づくファイルシステムで、様々な状況下で良いパフォーマンスを上げます。
ReiserFSはB+treeに基づくジャーナル付きのファイルシステムです。
全般的に高パフォーマンスであり、特により多くのCPUサイクルを犠牲にしてたくさんの小さなファイルを扱うようなときに顕著です。
ReiserFSは他のファイルシステムと比べるとあまりメンテナンスされていないようです。
XFSは堅牢という特徴を持ち、拡張性に最適化されたメタデータジャーナリングを持つファイルシステムです。
XFSは様々なハードウェアの問題にあまり寛容ではないようです。
パーティションにファイルシステムを適用する
パーティションやボリュームにファイルシステムを作成するには、それぞれのファイルシステムに合った利用可能なツールがあります。
| ファイルシステム |
作成コマンド |
| ext2 |
mke2fs |
| ext3 |
mke2fs -j |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
例えば、 ブートパーティション(この例では/dev/sda1)をext2に、ルートパーティション(この例では/dev/sda3)をext3(今回の例として)にするには、以下の様にします。
コード表示 4.1: パーティションにファイルシステムを適用する |
# mke2fs /dev/sda1
# mke2fs -j /dev/sda3
|
さあ新しく作成されたパーティション(もしくは論理ボリューム)にファイルシステムを作成しましょう。
スワップパーティションを有効にする
mkswapはスワップパーティションを初期化するのに使うコマンドです。
コード表示 4.2: スワップパーティションを初期化する |
# mkswap /dev/sda2
|
スワップパーティションを有効にするにはswaponを使用します。
コード表示 4.3: スワップパーティションを有効にする |
# swapon /dev/sda2
|
上記のコマンドでスワップを作成して有効にしましょう。
4.e. マウント
さてパーティションが初期化されてファイルシステムが収まったので、それらのパーティションをマウントするときが来ました。mountというコマンドを使います。作成したそれぞれのパーティション用にマウントに必要なディレクトリを作成するのを忘れないでください。例ではルートとブートパーティションをマウントします。
コード表示 5.1: パーティションをマウントする |
# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot
|
注意:
もし/tmpを別のパーティションとして置きたいのであれば、マウント後にパーミッションを変更するのを忘れないでください。: chmod 1777 /mnt/gentoo/tmp。これは/var/tmpも同様です。
|
procファイルシステム(カーネルとの仮想インターフェイス)も/procにマウントする必要があります。しかし、最初にパーティション上に色々なファイルを置く必要があります。
Gentooインストールファイルをインストールするに進みましょう。
[ << ]
[ < ]
[ ホーム ]
[ > ]
[ >> ]
このドキュメントの内容は
Creative Commons -
Attribution / Share Alikeライセンスです。
|