次のページ 前のページ 目次へ

12. パーティション分割の実作業

設計が終わった方のために、 ここでは実際にパーティション分割を行うための詳細な手順について示します。 ここにあるのはガイダンスだけですが、 実際に行う作業を自動的に行ってくれるツールを 誰かが作ってくれると素晴らしいですね。 具体的には、設計、パーティション分割、フォーマット、 インストールということになるでしょう。

最近の配布パッケージのインストーラには、 パーティション分割からフォーマット、 /etc/fstab の設定にいたるまでを 自動的に行ってくれる機能がついている場合が多いようです。 しかし後に変更したくなったときのためには、 背後で行われている実際の作業の仕組みについて知っておく必要があるでしょう。

12.1 チェックリスト

はじめるに当たって必要なのは…

12.2 ドライブとパーティション

DOS などでは、起動するとすべてのパーティションが表示され、 それぞれに C: 以降のドライブ文字が割り当てられます。 これは IDE、 SCSI、ネットワークドライブその他、 どんなメディアでも同じように扱われます。 ところが Linux の世界では少々異なります。 ブート時には以下のようなパーティションの表示が出るはずです。


Dec  6 23:45:18 demos kernel: Partition check:
Dec  6 23:45:18 demos kernel:  sda: sda1
Dec  6 23:45:18 demos kernel:  hda: hda1 hda2

SCSI のドライブには sda, sdb, sdc のような、 また (E)IDE のドライブには hda, hdb, hdc のような名前が付きます。 すべてのデバイスには、同様に標準的な名前があります。 詳細が知りたければ /dev/MAKEDEV/usr/src/linux/Documentation/devices.tex を見てください。

パーティションはそれぞれのドライブ名に数字が付加されたものです。 つまり hda1, hda2 のようになります。 SCSI ドライブではドライブ一台あたり 15 パーティションまで、 EIDE ドライブでは 63 パーティションまでです。 両者とも現在のところは、ほとんどのディスクに対して充分でしょう。

これらは /etc/fstab というファイルに書いてある情報に従って マウントされ、ファイルシステムの一部となります。

12.3 パーティション分割

It feels so good / It's a marginal risk / when I clear off / windows with fdisk! (Dustbunny の User Friendly 中の 漫画 における歌 "Refund this" より。)

まず最初にそれぞれのドライブをパーティションに分割する必要があります。 Linux では主として二つの選択肢があります。 fdisk と、これをもう少しスクリーン指向にした cfdisk です。 これらは複雑なプログラムですので、 マニュアルをしっかり読んでおくようにしてください。 熟練者なら、今では sfdisk を用いることもできます。

パーティションには三つの種類があります。基本 (primary) パーティション、 拡張 (extended) パーティション、そして論理 (logical) パーティションです。 Linux 以外の OS をブートさせるパーティションは 基本パーティションでなければなりませんが、 これはドライブあたり 4 つまでしか用いることができません。 これ以上のパーティションを用いたい場合は拡張パーティションを指定し、 その中に複数の論理パーティションを作成します。

各々のパーティションには、対応する OS に応じた id 番号がふられています。 Linux の場合は swap(82)ext2fs(83) を使います。 RAID を autostart で使いたい場合に、 RAID パーティションに用いるべきタイプ番号については、 ドキュメントをチェックしておく必要があります。

fdisk に付属の readme ファイルには、 パーティション分割に関するより詳細な情報が記載されています。

最近 Partitioning HOWTO という文書が出たようです。 これにはパーティション分割のあれこれに関する詳細な情報が 非常に良くまとめられています。 その内容をここに繰り返してこの文書をさらに巨大化させるのは止めておきます。 Partitioning HOWTO を読んでいただくことをおすすめします。

訳注: Partition HOWTO の日本語訳 は JF にあります。

Redhat は Disk Druid というスクリーン指向のユーティリティを作成しました。 これは fdiskcfdisk と同じ動作をする ユーザーフレンドリなプログラムで、いくつかの作業を自動化もしてくれます。 残念ながらこの製品はまだあまり枯れていないので、 うまく動かないことがあるかもしれません。 その場合は fdiskcfdisk を使ってください。

さらに Mandrakesoft も負けじと、よりグラフィカルなツール Diskdrake を開発しました。こちらも、とてもたくさんの機能を持っています。

GNU project も GNU Parted というパーティション分割ツールを提供しています。

Ranish Partition Manager というフリーのソフトウェアや、商用で良く使われているものでは Partition Magic などもあります。後者では ext2fs パーティションのサイズ変更もある程度サポートしています。

Windows は一つのドライブに二つ以上の基本パーティションがあると 文句を行ってきます。また Windows でのドライブレターの割り当てでは、 まず基本パーティションをすべてのドライブから探し、 その後で論理パーティションをそれぞれのディスクで再走査するようです。

DOS/Windows をシステムに共存させたい場合には、 まず最初に DOS の fdisk プログラムを使ってそれらをブートさせる 基本パーティションを作成する必要があります。 さらに NT が必要なら、この段階で配置します。 最後に Linux のためのパーティションを Linux の fdisk プログラム群を用いて作成します。 Linux は柔軟ですので、 基本パーティションからでも論理パーティションからでもブートできます。

DOS の fdisk に関する非常に詳しい情報が Fdisk.comMS-DOS 5.00 - 7.10 Undocumented, Secret + Hidden Features から入手できます。バグや落とし穴に関しても詳しいです。

12.4 再パーティション

時には既存のパーティションのサイズを、 内部のデータを保ったままで変更しなければならないかもしれません。 もちろん一つの方法としては、 すべてをバックアップしてパーティションを作り直し、 元の中身をレストアすれば良いのです。 これはバックアップシステムの良いテストにもなりますが、 しかし時間もかかります。

もう少し楽な別法として、 パーティションをリサイズ (resizing) する方法もあります。 ここではまずどれかのファイルシステムを望む容量に縮めて、 それからそのパーティションの末尾にあわせて パーティションテーブルを書き換えます。 したがってこの手法はファイルシステムに依存します。

パーティションをしなおすには、サイズを縮めるために ファイルシステムの末尾に空きスペースが必要です。 まずデフラグメントを行って、 ドライブに空白の隙間がないようにしてください。

fips を用いれば fat パーティションをリサイズできます。 fips の最新版である 1.6 版や fips 2.0 を使えば、 fat32 のパーティションもリサイズできます。 これらのプログラムは DOS の下で動作します。

その他のファイルシステムのリサイズはずっと難しいのですが、 有名な商用ソフトウェアの Partition Magic では、 resize2fs を用いて ext2fs を含むより多くのファイルシステムをリサイズできます。 最近、大きなディスクに対して問題が生じる版があったので、 最新版を入手するようにしてください。

fips の効果を最大にするには、ドライブのデフラグメントを行う前に まず不必要なファイルや空き領域を削除する必要があります。 こうすれば他のパーティションにより多くの空間を割り当てられます。 プログラムが「ドライブの末尾にファイルがある」と文句を言ってきた場合、 それは Microsoft Mirror か Norton Image によって作成された 隠し属性のファイルである可能性が高いです。 それらには image.idximage.dat という名前がついており、 いくつかのシステムファイルのバックアップ情報を保持しています。

いくつかの報告によれば、 Windows のデフラグメントツールによっては、 "Windows にファイルの再配置を許可する (allow Windows to move files around)" というボックスをチェックしないようにする必要があるのだそうです。 そうしないといくつかのファイルが末尾のシリンダに配置されてしまうので、 FIPS はその空間を再利用できなくなってしまいます。

どうしても DOS パーティションの末尾に動かせないファイルが残ってしまう場合は、 DOS プログラム showfat の 3.0 版以降を入手しましょう。 このプログラムはそこにあるファイルを表示してくれますので、 直接扱うことが可能になります。

同じ機能を持ったフリーウェア版としては Partition Resizer があります。パーティションの縮小・拡大・移動ができます。

DOS / Windows の版によっては、 defrag に隠しオプション /P があり、これを指定すると defrag は hidden ファイルも移動するようになります。 at your own risk でどうぞ。

パーティションの切り直しはとても危険な作業ですから、 最新のバックアップを手元に置いておくようにしましょう。

12.5 Microsoft パーティションのバグ

Windows 98 に至るまでのすべての Microsoft 製品にはちょっと面倒なバグがあって、 これが少々問題になる人もいるかもしれません。 fat パーティションを複数使っているとき、 拡張パーティションの末尾が fat パーティションでないと、 Microsoft のシステムは 「基本パーティションの末尾にある FAT パーティション」の代わりに 「末尾の拡張パーティション」を FAT パーティションとして マウントしようとしてしまうのです。

この問題に関する 詳細な情報 は、ネットワークから入手できます。

これを避けるには、小さな論理 fat パーティションを ディスクの一番最後に配置すれば OK です。

マルチ OS のインストールに関する詳しい情報は V Communications からも入手できます。 しかし彼らはリンクをいじり続けているので、 ここでは直接のリンクを掲載できません。

ハードウェアの設定ソフトには DOS でしか動かないものもありますから、 このパーティションは多少は役にたつでしょう。たとえば DPT の RAID コントローラや多くのネットワークカードなどがそうですね。

12.6 複数デバイスの一括利用 (md: Multiple Devices)

これはカーネルに付属の機能です。まだ開発は続いていますので、 最新のドキュメントを良く読んでおくようにしてください。 不安定かも知れませんので、注意してください。

簡単に説明しますと、この機能は複数のデバイスをまとめて、 md0 (あるいは md1) という新しいデバイスを作ります。 この際には mdadd というプログラムが用いられ、 mdrun によって利用できるようになります。この作業は /etc/mdtab というファイルによって自動化が可能です。

最新版の md システムでは /etc/raidtab を用い、 これは別の書式で書きます。使っている RAID-tools のパッケージが md のバージョンとマッチしているか確認してください。 内部で用いているプロトコルが変更されていますので。

mdrun 以降には、 このデバイスは他のドライブパーティションと全く同じように使うことができます。 以下の記述に従って、フォーマット等の作業を行なってください。

md を用いた RAID に関する HOWTO も成長中です。 読んでおきましょう。

12.7 フォーマット

次に行なうのはパーティションのフォーマットです。 この作業は、ディスク表面にデータ構造を書き込み、 ファイルの書き込み位置を指定できるようにするものです。 一番最初にフォーマットを行なう場合は、 同時にベリファイを行なうように指定すると良いでしょう。 この作業は本来の目的には必要ないのですが、 ディスク I/Oのテストとして有効です。 ディスク入出力が連続して頻繁に行われるので、 潜在的な問題 (ターミネーションの不正など) を発見できる可能性があります。 ベリファイ機能の詳細に関しては mkfs のマニュアルを見てください。

Linux は非常に多くのファイルシステムをサポートしています。 ここでそのすべてを挙げることもできますが、 man fs してもらう方が良いでしょう。 ここには各々のファイルシステムに関する情報も多少書かれています。 なおこれらのファイルシステムを用いるには、 それに応じたドライバをカーネルに組み込む (あるいはモジュールとして用意する) 必要があります。 カーネルをコンパイルする際に、 ファイルシステム機能のリストを注意して読むようにしてください。 make menuconfig を用いれば、 それぞれのファイルシステムに関するオンラインヘルプを見ることもできます。

レスキューディスク作成パッケージには、 minix, msdos, ext2fs のサポートをカーネルに組み込んでいないと使えないものがあるようです。

スワップデバイスにおいても、 フォーマットに準ずる作業を行なう必要があります。 これには mkswap を用います。

DOS や Windows でのフォーマットに関する重要な内容が MS-DOS 5.00 - 7.10 Undocumented, Secret + Hidden Features にあります。

ここでの「フォーマット」は高レベルのフォーマットのことであり、 ファイルシステムをディスクに作成するものです。これに対して 低レベルのフォーマットは、トラックとセクタをディスクに配置します。 後者は今日ではほとんど必要ありません。

12.8 マウント

パーティション上にデータを読み書きするには、 まず適切なマウントポイントにそのパーティションをマウントしなければなりません。 これを手動で行なうには mount コマンドを用います。 またブート時に自動的に行なうには、必要な情報を /etc/fstab ファイルに追加します。 後者を行なう際には mount の man ページをよく読んでください。 記述を間違えた場合は、最悪システムが立ち上がらなくなる場合があります。

12.9 fstab

ブート動作の途中で、システムは fstab ファイルの記述に従って すべてのパーティションをマウントします。 以下のような内容になっているでしょう。


# <file system>   <mount point>   <type>  <options>   <dump>  <pass>
/dev/hda2          /               ext2    defaults    0       1
None               none            swap    sw          0       0
proc               /proc           proc    defaults    0       0
/dev/hda1          /dosc           vfat    defaults    0       1

このファイルは書式に厳しいので、 専用の編集ツールを用いるほうが良いし、また便利でしょう。 例えば Tcl/Tk ベースのファイルシステムマウンターである on the netfstool や、KDE のエディットツール kfstabなどがあります。

それぞれのフィールドを順に簡単に紹介すると、 パーティションの名前、マウント先、 ファイルシステムのタイプ、マウントのオプション、 いつ dump してバックアップをとるか、 そしていつ fsck するか、です。

Linux ではファイルチェック (fsck) を並列動作させることも可能です。 しかし効率のためには、一つのドライブ上にある複数のファイルシステムは 同時に fsck させないことが大事です。

12.10 マウントオプション

(手動にしろ fstab 経由にしろ) マウントの際には たくさんのオプションが利用でき、様々な保護が可能になっています。 以下では中でも便利なオプションを紹介します。

nodev

このファイルシステム上のキャラクタスペシャルデバイスや ブロックスペシャルデバイスを利用禁止にする。

noexec

マウントされたファイルシステム上のバイナリを実行禁止にする。 スプール領域に便利。

nosuid

マウントされたファイルシステム上での SUID, SGID を禁止する。 ホームディレクトリに便利。

より詳しい情報や注意点については mountfstab のマニュアルページを見てください。

12.11 お勧め

設定と実装を賢く行うことができたら、 すべてを「紙に」記録しておきましょう。 ディスク上の情報は、マシンがダウンしたら全く使えませんからね。

パーティションテーブルは破壊されたり失われたりすることもあります。 その場合には、 fdisk の正確な数値の記録が ものすごく価値を持つことになります。 その値を入力すればシステムを救えるのですから。 printpar プログラムを用いて、 テーブルをわかりやすい形に記録しておくこともできます。 またそれぞれのディスクの SCSI 番号や IDE 名も書いておきましょう。 そうしないとシステムを正しい順序で再構成できません。

付録 M: にも、 現在のディスクの設定のサマリを生成する 小さなスクリプトを置いておきました。

ハードディスクのチェックには、 ネットから入手できる Disk Advisor boot disk が利用できます。 disk builder を実行するには Windows が必要でした。 このシステムはおかしくなったディスクの診断に有用です。

なお、レスキューディスクは是非作成してテストしておきましょう。 ほとんどのディストリビューションで (おそらくインストールディスクの一部として) 提供されています。 RedHat 6.1 などの一部のディストリビューションでは、 ディスクをレスキュー用途で起動するには、 ブートプロンプトで linux rescue とタイプすることになっています。

レスキュー用途に特化したディスクもネットで配布されています。

これらが必要になったときは、システムの root と boot パーティションが どこにあり、どこに書いてよいか・いけないかを把握している必要があります。

メモ: ブートディスクとレスキューディスクの違いは、 前者はファイルシステムを (通常はハードディスク上のものを) マウントできない場合、起動に失敗するという点にあります。 レスキューディスクはそれ自体のシステムを含んでおり、 ハードディスクがなくても動作します。


次のページ 前のページ 目次へ