連載
» 2001年07月04日 00時00分 公開

Windowsユーザーに教えるLinuxの常識(1):パーティション分割/非分割のセオリー (2/2)

[関野史朗,@IT]
前のページへ 1|2       

分割するべきか非分割か、それが問題だ

ここがポイント

  • パーティション分割のメリット
  • パーティション分割のデメリット
  • 実例で見るパーティション分割

 それでは、一般論としてファイルシステムをパーティションで分割するメリット、デメリットを考えてみましょう。

 まずメリットから考えると、バックアップやアップデートが楽になります。定期的にバックアップする必要があるのは、変化していくデータとユーザーのデータです。この2つをシステムとは別のパーティションに分ければ、バックアップするのはそのパーティションだけでよくなります。システムのアップデートを行っても、ユーザーデータの入ったパーティションをフォーマットしないようにすればちゃんと残ります。

 さらに、作業用のファイルシステム(一般的には/varや/tmp)を独立させておくと、システムやユーザーデータへの影響を小さくできます。例えば、だれかが50Mbytesのメールを出したとしましょう。このメールでファイルシステム(編注)があふれたとしても、パーティションを分けておけばシステムやユーザーが使うパーティションにはまだ余裕があるというわけです。まあ実際には、作業用のパーティションがいっぱいになった時点でかなり制限を受けますが、よほどのことがない限りシステムやユーザーデータが書き換わってしまうという心配はしなくて済みます。

編注:ここでいう「ファイルシステム」は、FATやext2のようなディスクフォーマット形式ではなく、ディレクトリを指していることに注意。

 デメリットとしては、見積もりを誤るとパーティションの使用率に偏りが出ることです。単に偏るだけならまだいいのですが、/usrは余っているのに/varが足りないとか、/homeを使い切ってしまった、などになると深刻です。まあ最近はHDDが安いので、追加すれば解決するのですが。使用量の見積もりは結構難しくて、どんな仕事をさせるのか、どのくらいの規模になるのかで変わってきます。

 では、HDDを複数のパーティションに分割するべきでしょうか?

 慣れないうちは練習ということで、全部1つのパーティションにしてしまって様子を見るというのもいいでしょう。これで当たりを付けてから、次にインストールするときには適当にパーティションを分けるのです。

 このあたり、実はWindowsでも事情は大差なかったりします。私はシステムをインストールするドライブと、アプリケーションをインストールするドライブ、作ったデータを保存しておくドライブと、最低でも3つのドライブを作成して使っています。本当に大事なファイルはファイルサーバに保存して、毎朝7時にテープでバックアップするようにしています。

 閑話休題、いくつか実例を挙げておきましょう。

パーティション分割例 1

 まずは、自宅でファイルサーバに使っているLinuxマシンから。このマシンは、

Linux$ df
Filesystem       1k-blocks      Used Available Use% Mounted on
/dev/hda1           295474    163525    116689  58% /
/dev/hdc2          4128572     32840   4095732   1% /tmp
/dev/hda3          3540515    571551   2785823  17% /usr
/dev/md0         120933456  51485304  69448152  43% /usr/share/public

となっています。ちょっと特殊ですが、まず1台目のIDE HDDを3つのパーティションに分けています。300Mbytesの/ファイルシステム3.5Gbytesの/usrファイルシステム、そして128Mbytesのスワップ領域です(dfコマンドではスワップ領域は表示されません)。最後のmd0は、ソフトウェアでストライピングを実現しているドライブです。実際には40Gbytesクラスのドライブを3台まとめています。このとき、/dev/hdcで4Gbytesほど領域が余ったので、ここを/tmpに割り当てています。

 使っているディストリビューションはDebian GNU/Linux 2.2で、後からパッケージとして追加できるソフトウェアは/usrに配置されます。基本的なシステムだけなら300Mbytesもあれば十分で、これ以上増えることはありません。/usrの下にはユーザーのホームディレクトリも含まれますから、ここは別のパーティションにしてあります。欲をいえば、作業エリアである/varも独立させたいところですが、ファイルサーバならそれほど/varを使うこともないようなのでこうしています。

パーティション分割例 2

 次に外部向けに公開しているサーバだと、

FreeBSD$ df
Filesystem   1K-blocks     Used    Avail Capacity  Mounted on
/dev/ad0s1a      63503    39157    19266    67%    /
/dev/ad0s1g    3372366  1410597  1691980    45%    /usr
/dev/ad0s1f    5954477  2392054  3086065    44%    /usr/share/public
/dev/ad0s1e      99183    10509    80740    12%    /var

です。これはFreeBSDなのでデバイスの表記が違いますが、パーティションを分けるという点ではLinuxと共通するものがあります。

 10GbytesのHDDを64Mbytesの/3Gbytesの/usr100Mbytesの/varとに分け、残りの6Gbytes弱をネットワーク経由で使えるファイル置き場に、100Mbytesをスワップ領域にしています。スワップが中途半端なのは、OSをバージョンアップした際に/ファイルシステムが足りなくなったため、スワップを削って/ファイルシステムに回したわけです。結局バージョンアップではなく再インストールになりましたが、データの収まっている/usrと/usr/share/publicは別のパーティション(正確にいうと、FreeBSDではスライス)だったので壊さずに済みました。ファイルシステムを分割しておいたメリットを享受できたわけですね。

 Linuxと比べると、/の容量が少なくなっています。このマシンはメールサーバでもあり、各人あてにきたメールを保存しているので、ホームディレクトリのある/usrは少し大きめにしてあります。また、外部に公開しているとはいえ個人ベースの代物ですから、/varはかわいいものです。会社の業務で使うなら、もっと増やさないといけないかもしれません。

パーティション分割例 3

 もう1台、ADSL回線につなげてプロキシサーバとして使っているマシンだと、こんな具合です。

FreeBSD$ df
Filesystem     1K-blocks     Used    Avail Capacity  Mounted on
/dev/ad0s1a        49583    34575    11042    76%    /
/dev/ad0s1f      3452950  1226777  1949937    39%    /usr
/dev/ad0s1e        19815     4171    14059    23%    /var

 3.8GbytesのHDDに128Mbytesのスワップ領域50Mbytesの/20Mbytesの/var、そして残りが/usrです。実は、インストーラのデフォルトをそのまま使っているようなものです。これはプロキシサーバ専用なので、あまり深く考えていないのです。

 なお、ファイルシステムをパーティションに振り分けるとき、/bin、/etc、/root、/sbinは/と同じパーティションにしておいた方がいいでしょう(別のパーティションに分けない、というべきでしょうか)。/binと/sbinには基本的なコマンドが入っています。/etcには各種設定ファイルがあり、/rootはスーパーユーザーのホームディレクトリです(各ディレクトリの役割については、次回で詳しく解説します)。つまり、このパーティションさえ無事なら、多少の修復作業を行えるというわけです。

悩ましいスワップ領域確保

ここがポイント

  • スワップ領域
  • スワップ領域のサイズは?

 パーティションの設定はそうそう行うものではなく、だいたいインストール時にやれば終わりです。Windowsとのデュアルブートにするのなら最低でもWindows用とLinux用の2つのパーティションが必要です。Linux専用なら、最低1つのパーティションということになります。

 ここで悩ましいのが、スワップ領域(スワップ用のパーティション)です。スワップ用パーティションは仮想メモリを使うためのもので、仮想メモリは実装しているメモリよりも大きなメモリがあるかのように見せかけるための仕掛けです。

 ただ現在では64Mbytes、多い人は512Mbytesなどというメモリを実装しているのでいささか事情が違います。例えば私の作業用マシンは256Mbytesのメモリを実装しているのですが、長らくWindows 2000のページングファイルを0にして使っていました。これは意図して行ったのではなく、何の拍子かそういった設定になっていたのです。別段支障なく使えていたので全然気が付かず、何げなくページングファイルを確認して驚いたというわけです。これだけメモリがあると、たいていの作業は全部オンメモリで行えるのか、スワップが発生しなかったのです。自宅で使っている3台のサーバは、メモリを64Mbytesないし128Mbytes載せてLinuxやFreeBSDを動かしていますが、これらもスワップが発生している気配がありません。

コラム Windowsの仮想メモリ

 Windowsでは専用のパーティションを作らず、通常のファイルシステム上にスワップファイル(Windows 9x系)やページングファイル(Windows NT/2000系)として作っています。この方法は、パフォーマンス的にはやや不利が予想されますが、スワップパーティションで悩まずに済みます。

 実はこれ、MS-DOSのころはアプリケーションが自分自身で行っていて、「オーバーレイ」といっていました。使用頻度を考えて、メモリ上に置くモジュールとHDDに置くモジュールを切り分けたり、いちいち状況に応じてプログラムからオーバーレイを実行したり、結構面倒なのです。仮想メモリはOSに組み込まれているので、アプリケーションは何も考えずに大量のメモリを要求できるのがミソです。UNIXには当初実装されておらず、4BSDで実装されました。このため、大量のメモリを必要とするアプリケーションを使う大学を中心としてBSDは普及していったそうです。


 また、スワップが発生すると確実に実行速度が落ちます。メモリが高価だった時代ならいざ知らず、いまや256Mbytesのメモリが5000円以下で買える時代です。スワップ領域など使わないように、メモリをたくさん実装するのもあながち的はずれではないでしょう。Linuxでは、プロセスが使わないメモリはファイルキャッシュとして使われるので、たくさんメモリを実装しても無駄にはなりません。

 しかし、プログラムによっては積極的にスワップを使うものもあるようです。このため、スワップ領域をなくすわけにもいきません。昔は「実メモリの2倍」ともいわれていましたが、経験的には64Mbytesもあれば十分という気がします。もちろん、これもやらせる仕事の内容と規模によって変わってきます。後からファイルシステム上にスワップファイルを作ることもできるので、とりあえず64Mbytes確保して様子を見るのが無難です。

 BIOSやブートローダが対応しているなら、64Mbytesをスワップ領域にして、残りすべてを/ファイルシステムに分けるのをお勧めします。もし、BIOSやブートローダの制限でうまくカーネルをロードできないなら、/ファイルシステムをHDDの先頭から1Gbytes確保して、残りの中から64Mbytesのスワップ領域、あとは/usrファイルシステムという構成が簡単で分かりやすいでしょう。もっと細かい分割は、運用に慣れてから考えればいいのです。

 ちなみに、FreeBSDのインストーラは、デフォルトでは/、/usr、/var、スワップの4つを独立したファイルシステムとして設定します。

注意が必要なパーティション操作

ここがポイント

  • FIPS
  • Partition Magic

 実はもっと大変なことがあります。それは、非破壊的にパーティションを変更するツールは、Windowsに標準装備されていないということです。つまり、すでにWindowsのインストールされたマシンにLinuxを入れようとしてパーティションを変更すると、いま使っているWindowsがきれいさっぱり消えてしまいます。

 もちろん、非標準なら内容を壊さずにパーティションを変更できるプログラムもあります。フリーのものではFIPSが有名です。また、商用だとPartition Magicが嚆矢です。FIPSはコマンドラインツールで、事前にデフラグをかけておく必要があります。MS-DOSプロンプトでの作業に慣れていないなら、Partiton Magicの方が失敗の可能性は低いでしょう。ただ、最近の大容量HDDに対応しているかどうかはきちんと確認する必要があります。どちらのツールもあまり失敗したという話は聞きませんが、操作ミスなどに備えてデータのバックアップを取っておいた方が確実です。

次回:8月上旬公開予定

 Windowsユーザーなら、\Program Filesや\System32といったディレクトリの役目を理解していると思います。もちろん、Linuxのディレクトリにもそれぞれ決まった役割や使い方があります。

 そこで、次回は各ディレクトリの役目や使い方を紹介しましょう。設定ファイルはどこに保存するの? 自分でインストールするプログラムはどこに入れるべきか?

などの疑問にお答えします。


 パーティションの作成がうまくいったとしても、今度はデュアルブートの設定をしなければなりません。このあたりは趣味として楽しむ分には面白いのですが、仕事で使うなら面倒この上ありません。失敗したときのダメージも大きくなります。増設したHDDにインストールする方法もありますが、慣れないと解説書の記述とは微妙に違ってこれまた混乱します。安心して作業するためにも、専用マシンを用意して作業することをお勧めします。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。