Linux の 101 試験対策: パーティションおよびファイルシステムの作成

ディスク・スペースを分割して、利用する

ディスク・ドライブにパーティションを作成する方法、そしてパーティションをフォーマットして、Linux® システムでスワップ領域またはデータ領域として使用する方法を学んでください。この記事の内容は、Linux のシステム管理者として認定するための LPI 101 試験に備えるためにも、パーティションと Linux ファイルシステムについて自ら学んで使用する上でも役立ちます。

Ian Shields, Senior Programmer, IBM

Ian ShieldsIan Shields は、developerWorks Linux ゾーンの様々な Linux プロジェクトに関わっています。彼はノースキャロライナ州 Research Triangle Park にある IBM のシニア・プログラマーです。1973年にオーストラリアのキャンベラでシステム・エンジニアとして IBM に入社して以来、カナダのモントリオールやノースキャロライナ州 Research Triangle Park で、コミュニケーション・システムやパーベイシブ・コンピューティングに携わってきました。彼はいくつかの特許を保持しています。Australian National University にて純粋数学および哲学で学位を取得し、また North Carolina State University にてコンピューター・サイエンスで修士号と博士号を取得しています。Ian について詳しく知るには、My developerWorks で彼のプロフィールを見てください。


developerWorks 貢献著者レベル

2010年 7月 12日

この連載について

この連載は Linux システム管理タスクの学習に役立つだけでなく、LPIC-1 (Linux Professional Institute Certification レベル 1) 試験に備えるための教材にもなります。

連載の各記事についての説明とリンクについては、developerWorks の LPIC-1 ロードマップを参照してください。現在進行中のこのロードマップは、LPIC-1 試験の最新の目標 (2009年 4月) を反映しています。完成した記事はその都度ロードマップに追加されていきますが、当面は developerWorks の LPI 認定試験対策チュートリアルで同様の教材の以前のバージョンを調べてください。これらのバージョンは、2009年 4月より前の LPIC-1 目標に対応しています。

概要

この記事では、ディスク・パーティションと Linux のファイルシステムについて学びます。この記事で説明する内容は以下のとおりです。

  • パーティションを作成する方法
  • mkfs コマンドを使って ext2、ext3、xfs、reiserfs v3、および vfat ファイルシステムをセットアップする方法
  • スワップ領域を作成し、管理する方法

この記事は、Linux Professional Institute の Junior Level Administration (LPIC-1) 101 試験の主題 104 の 104.1 の試験対策に役立ちます。この目標の重要度は 2 です。

前提条件

この連載の記事を最大限に活用するには、Linux の基礎知識と、記事に記載されたコマンドを演習できる実際の Linux システムが必要です。プログラムのバージョンによって出力のフォーマットに違いが出てくる場合もあるため、コマンドの実行結果は必ずしもここに記載するリストや図とまったく同じであるとは限りません。

また、記事「Linux の 101 試験対策: ハード・ディスクのレイアウト」で説明している内容について十分に理解している必要もあります。


ブロック・デバイスとパーティション

Ian とつながるには

Ian は developerWorks で人気の高いお馴染みの著者の 1 人です。Ian が書いたすべての developerWorks 記事を閲覧してみてください。また、My developerWorks では、Ian のプロフィールを調べることや、彼やその他の著者、そして他の読者とつながることができます。

この連載の記事「Linux の 101 試験対策: ハード・ディスクのレイアウト」では、ハード・ディスクのレイアウトおよびパーティションについて説明するとともに、fdisk コマンドを使用してパーティション情報を表示する基本的な方法を紹介しました。そのなかで、基本 (primary)、拡張 (extended)、論理 (logical) という 3 つのタイプのパーティションについて学び、Linux ファイルシステムに保管されるファイルはディスクやその他のブロック・ストレージ・デバイス上でディレクトリーという形式で整理されることも学びました。他の多くのシステムと同じく、Linux システムでのディレクトリーには、他のディレクトリーを含めることができます。ディレクトリーに含められたディレクトリーは、サブディレクトリーと呼ばれます。前述の記事では最後に、パーティションに関する選択を行う際の指針となる考慮事項についても説明しました。

今回の記事では、ブロック・デバイスとパーティションについて復習した後、fdisk コマンドのさらなる使い方として、ブロック・デバイス上のパーティションを作成、変更、削除する方法を説明します。また、mkfs コマンドのさまざまな形についても説明します。make filesystem を意味する mkfs は、パーティションを特定のファイルシステムのタイプにフォーマットするために使用するコマンドです。

注: LPI 試験で対象としているツールとファイルシステムの他にも、目にすることがあったり、必要になったりするツールやファイルシステムがあるかもしれません。他にも使用できるツールについては、「その他のツールとファイルシステム」で概説しています。

ブロック・デバイス

ブロック・デバイスとは、ある一定のサイズのブロック単位でフォーマットできる、ストレージ・デバイスの抽象化層であり、それぞれのブロックには個別にアクセスすることができます。このようなアクセスはよく、ランダム・アクセスと呼ばれます。

抽象化層はランダム・アクセスが可能な固定サイズのブロックであることから、プログラムではブロック・デバイスを使用するときに、そのベースにあるデバイスがハード・ディスク、フロッピー、CD、半導体ドライブ、またはネットワーク・ドライブであるか、あるいはある種の仮想デバイス (メモリー内ファイルシステムなど) であるかを考慮する必要がありません。

ブロック・デバイスの例としては、システム上の最初の IDE ハード・ディスク (/dev/sda または /dev/hda) や、2 番目の SCSI、IDE、または USB ドライブ (/dev/sdb) などが挙げられます。/dev エントリーは、ls -l コマンドを使用して表示することができます。各出力行の先頭文字は、ブロック・デバイス (フロッピー、CD ドライブ、IDE ハード・ディスク、SCSI ハード・ディスクなど) の場合には bキャラクター・デバイス (ターミナル (tty) や null デバイスなど) の場合には c になります。リスト 1 の具体的な例を見てください。

リスト 1. Linux のブロック・デバイスとキャラクター・デバイス
[ian@echidna ~]$ ls -l /dev/loop1 /dev/null /dev/sd[ab] /dev/sr0 /dev/tty0
brw-rw----. 1 root disk   7,  1 2010-06-14 07:25 /dev/loop1
crw-rw-rw-. 1 root root   1,  3 2010-06-14 07:25 /dev/null
brw-rw----. 1 root disk   8,  0 2010-06-14 07:25 /dev/sda
brw-rw----. 1 root disk   8, 16 2010-06-14 07:25 /dev/sdb
brw-rw----+ 1 root cdrom 11,  0 2010-06-14 07:25 /dev/sr0
crw--w----. 1 root root   4,  0 2010-06-14 07:25 /dev/tty0

パーティション

フロッピー・ディスクや CD、DVD ディスクなどの一部のブロック・デバイスでは、メディア全体を 1 つのファイルシステムとして使用するのが一般的です。けれども大容量のハード・ディスクの場合、さらには USB メモリー・キーの場合でも、使用可能なスペースを複数のパーティションに分割 (パーティショニング) するのがより一般的となっています。

パーティションは異なるサイズにすることができます。さらに、パーティションごとに異なるファイルシステムを配置することもできるので、1 つのディスクをさまざまな目的で使用することができます (例えば、1 つのディスクを複数のオペレーティング・システムで共有するなど)。一例として、私のテスト・システムでは複数の異なる Linux ディストリビューションと、ときには Windows® システムを使用していますが、そのすべてが、1 つか 2 つのハード・ディスクを共有しています。

記事「Linux の 101 試験対策: ハード・ディスクのレイアウト」で説明したように、ハード・ディスクのジオメトリーは、シリンダーの数、ヘッドの数、およびセクターの数で定義されます。最近のディスクでは論理ブロック・アドレッシング (LBA) を使用するため、ジオメトリーはそれほど関係してきませんが、それでもパーティショニングを目的とした基本的な割り当て単位がシリンダーであることに変わりはありません。


パーティション情報の表示

パーティション情報は、ディスク上のパーティション・テーブルに格納されます。パーティション・テーブルに記載される情報は、各パーティションの開始および終了シリンダー、パーティションのタイプ、そしてパーティションがブート可能であるかどうかです。パーティションを作成、あるいは削除するには、パーティション・テーブルを編集します。その際に使用するのは、このジョブ専用に設計されたプログラムです。LPI 試験に備えるためには、この fdisk プログラムについて知っておかなければなりません。そのため、記事ではこのプログラムを取り上げますが、他にも使用できるツールはあります。記事の最後では、そのうちのいくつかを紹介します。

パーティションを表示するには、fdisk コマンドに -l オプションを指定して使用します。特定のドライブ上にあるパーティションを調べる場合は、さらにデバイス名 (/dev/sda など) を追加します。注意する点として、パーティショニング・ツールを使用するには root アクセス権が必要です。リスト 2 に、私が使用している 2 つのシステムのうち、プライマリー・ハード・ディスクのパーティションを示します。

リスト 2. fdisk によるパーティションの表示
[root@attic4 ~]# fdisk -l /dev/sda

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00064a1a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         127     1020096   83  Linux
/dev/sda2             128        1402    10241437+  82  Linux swap / Solaris
/dev/sda3   *       46340       56538    81920000   83  Linux
/dev/sda4            1403       46339   360956422    5  Extended
/dev/sda5            1403       10420    72437053+  83  Linux
/dev/sda6           10421       19344    71681998+  83  Linux
/dev/sda7           19345       28350    72340663+  83  Linux
/dev/sda8           28351       37354    72324598+  83  Linux
/dev/sda9           37355       46339    72171981   83  Linux

Partition table entries are not in disk order

[root@echidna ~]# fdisk -l /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux

注:

  1. ヘッダー情報には、ディスクのサイズとジオメトリーが示されます。LBA を使用している大容量のディスクでは、シリンダーあたりのトラック (ヘッド) 数が 255 で、トラックあたりのセクター数は 63 です。したがって、セクター数の合計は 16065、つまりシリンダーあたり 8225280 バイトとなります。
  2. 上記のリストで 2 番目に示されている例では、最初の基本パーティション (/dev/sda1) にブート可能 (アクティブ) であることを示すマークが付けられています。したがって、標準 DOS PC のマスター・ブート・レコードはこのパーティションをブートすることができます。このフラグは、LILO または GRUB ブート・ローダーにとっては何の意味もありません。上記の最初の例では、GRUB をブート・ローダーとして使用しているので、/dev/sda3 に付けられているブート可能のマークは、過去にこのドライブを使用した際に偶然付けられたものだと思います。
  3. Start 列と End 列に示されているのは、それぞれ各パーティションの開始シリンダー、終了シリンダーです。これらのシリンダーを重複させることはできません。また、通常は隙間が入ることなく連続している必要があります。
  4. Blocks 列には、パーティションに含まれる 1K (1024 バイト) のブロック数が示されます。この記事を執筆している時点で使用されているディスクのほとんどでは、セクターのサイズは 512 バイトとなっています。したがって、パーティションに含まれるブロックの最大数は、シリンダーの数 (End + 1 - Start) とシリンダーあたりのセクター数を掛けて 2 で割った数です。末尾の + 記号は、パーティション内に未使用のセクターがあることを示します。
  5. Id フィールドは、パーティションの用途を示します。タイプ 82 は Linux スワップ・パーティション、タイプ 83 は Linux データ・パーティションを指します。定義されているパーティション・タイプは約 100 種類あります。2 番目のディスクは、Windows/XP を含む複数のオペレーティング・システムで共有されるため、Windows NTFS (場合によっては FAT32) パーティションと示されています。

fdisk によるパーティショニング

前のセクションでは、fdisk コマンドを使用してパーティション情報を表示する方法を説明しましたが、このコマンドは、パーティション・テーブルを編集してパーティションを作成または削除するための、メニュー形式の環境も提供します。

注意

パーティションの変更作業に取り掛かる前に、注意すべき重要な事項がいくつかあります。以下に説明するガイドラインに従わなければ、既存のデータを失う可能性があります

  1. 作業を始める前に、重要なデータのバックアップを取っておくこと。これは、データ損失の原因となり得るあらゆる操作を行う場合と同じです。
  2. 使用中のパーティションを変更しないこと。アクションを計画し、その計画に従って慎重に実行してください。ハード・ディスクのパーティションが 1 つも使用されていないことを確実にするには、CD、DVD、または USB からライブ・ディストリビューションをブートするという方法が有効です。
  3. 使用するツールを知ることfdisk コマンドは、ユーザーが指示するまではディスクに対する変更を確定しません。一方、parted などのその他のツールは、操作と同時に変更を確定する場合があります。
  4. 操作を誤った場合には中断すること。パーティショニング・ツールはパーティション・テーブルに書き込みます。使用しているツールにディスクのデータ領域の移動、サイズ変更、フォーマット、あるいは書き込み機能が組み込まれていない限り、データには影響ありません。操作を誤った場合には、できるだけ早く操作を停止し、ヘルプを求めてください。そうすれば、以前のパーティション・テーブル定義を復元することによって、パーティションとデータを回復できる可能性が残ります。

fdisk を実行する

対話モードで fdisk を実行するには、ただ単にディスクの名前 (/dev/hda や /dev/sdb など) をパラメーターとして指定するだけのことです。以下に、Knoppix ライブ DVD をブートする例を記載します。このコマンドを実行するには、root 権限が必要です。コマンドを実行すると、リスト 3 のような出力が表示されます。

リスト 3. 対話型 fdisk の開始
knoppix@Microknoppix:~$ su -
root@Microknoppix:~# fdisk /dev/sda

The number of cylinders for this disk is set to 121601.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

最近のほとんどのディスクには 1024 を超えるシリンダーがあるため、通常はリスト 3 に記載されている警告が表示されます。「m」と入力すると、使用可能な 1 文字コマンドの一覧が表示されます (リスト 4 を参照)。

リスト 4. fdisk でのヘルプ
Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):

p コマンドを使用して、この特定のディスク上にある既存のパーティションを表示してください。リスト 5 に出力を記載します。

リスト 5. 既存のパーティション・テーブルの表示
Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux

Command (m for help):

この特定のディスクは、80GB をわずかに下回る Windows/XP パーティションを持つ 1TB のディスクです。これは基本パーティションであり、典型的な Windows システムと同じく、ブート可能のマークが付けられています。

パーティションを追加する

早速、空きスペースの一部を使用して、以下のパーティションを追加してみましょう。

  1. スワップ・パーティションを /dev/sda4 として作成します。これを基本パーティションとし、/dev/sda1 の終了シリンダーと /dev/sda2 の開始シリンダーの間にある 521 のシリンダーのギャップを埋めます。このギャップが存在することになった原因は考える必要もありません。これは、この記事を書くために意図的に設けたものです。
  2. 40GB の論理パーティションを /dev/sda8 として作成します。
  3. 最後に、小さな 2000MB の論理パーティションを作成します。これは、Linux と Windows システムとでデータを共有するためのパーティションです。最終的に FAT32 (vfat) としてフォーマットするこのパーティションは、/dev/sda9 として作成します。

サンプル・パーティションを作成する

まず始めに、n コマンドを使用して 1 つのパーティションを新規に作成します (リスト 6 を参照)。

リスト 6. 最初のパーティションの作成
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
p
Selected partition 4
First cylinder (9112-121601, default 9112): 
Using default value 9112
Last cylinder, +cylinders or +size{K,M,G} (9112-9633, default 9633): +521

Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   83  Linux
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux

Partition table entries are not in disk order

Command (m for help):

最初のシリンダーにはデフォルトの値を指定し、シリンダーの数として +521 の値を指定しました。リスト 6 を見るとわかるように、このパーティションのサイズは約 4GB です。これは基本パーティションであることから、1 から 4 までの番号を付ける必要があります。パーティションには、連続した番号を割り当てるのが得策です。一部のツールでは、パーティション番号が連続していないとエラーになるため、fdisk はパーティション・テーブルのエントリーがディスクの順でないという警告を出します。

新規パーティションには、Linux データ・パーティションとしてタイプ 83 が割り当てられていることにも注目してください。これはいわば、オペレーティング・システムに対してパーティションの用途を示す指標のようなものです。最終的な用途は割り当てられたタイプと同じでなければなりませんが、現時点でこのパーティションはフォーマットされていないどころか、どんなデータでも置けるようになっています。パーティション・タイプを変更する方法は、残りのパーティションを作成してから説明します。

お気付きかもしれませんが、n サブコマンドを入力して新規パーティションを作成する際に、パーティションのタイプとして選択できたのは、論理 (logical) を表す「l」と、基本 (primary) を表す「p」だけでした。表示される選択肢は、選択できる残りのパーティション・タイプだけです。ディスクに拡張パーティションがまだなかったとしたら、拡張 (extended) を表す「e」が表示されていたはずです。また、拡張パーティション (/dev/sda3) がタイプ 5 となっている点にも注意してください。

次に、40GB の Linux パーティションと 2000MB の FAT32 パーティションの定義に取り掛かります。今回は単に、40GB と 2000MB をそれぞれ示す、+40G および +2000M のサイズだけを指定し、シリンダーの数は fdisk に計算させます。その結果は、リスト 7 のとおりです。

リスト 7. データ・パーティションの作成
Command (m for help): n
First cylinder (53906-116679, default 53906): 
Using default value 53906
Last cylinder, +cylinders or +size{K,M,G} (53906-116679, default 116679): +40G

Command (m for help): n
First cylinder (59129-116679, default 59129): 
Using default value 59129
Last cylinder, +cylinders or +size{K,M,G} (59129-116679, default 116679): +2000M

Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   83  Linux
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+  83  Linux

Partition table entries are not in disk order

Command (m for help):

パーティション・タイプを変更する

fdisk での作業を終える前に、スワップおよび vfat パーティションのパーティション・タイプを変更します。それには、t サブコマンドを使用してパーティション・タイプを設定します。/dev/sda4 はタイプ 82 (Linux スワップ) に設定し、/dev/sda9 はタイプ 9 (FAT32) に設定してください。サポートされるタイプの完全なリストを表示するには、リスト 8 に示されているように「L」を入力します。

リスト 8. パーティション・タイプの変更
Command (m for help): t
Partition number (1-9): 4
Hex code (type L to list codes): 82
Changed system type of partition 4 to 82 (Linux swap / Solaris)

Command (m for help): t
Partition number (1-9): 9
Hex code (type L to list codes): b
Changed system type of partition 9 to b (W95 FAT32)

Command (m for help):

パーティション・テーブルを保存する

これまでの作業では、パーティション・テーブルをメモリー内で編集していたにすぎません。q コマンドを使用すれば、変更内容を保存しないで終了することができます。意に沿わないパーティションがあったら、d コマンドを使用して 1 つ以上のパーティションを削除し、パーティションを再定義することもできます。セットアップに満足であれば、v コマンドを使ってセットアップを検証した後、w コマンドで新しいパーティション・テーブルを書き込んで終了します。リスト 9 を見てください。このリストのように fdisk -l をもう一度実行すると、Linux が今度は新規パーティションを認識していることを確認することができます。一部のオペレーティング・システムとは異なり、変更を確認するには常にリブートが必要であるわけではありません。リブートが必要になるのは、例えば /dev/hda2 が削除されたために、/dev/hda3 が /dev/hda2 になった場合などです。リブートが必要な場合は、fdisk がその旨を通知してくれます。

リスト 9. パーティション・テーブルの保存
Command (m for help): v
999521580 unallocated 512-byte sectors

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
root@Microknoppix:~# fdisk -l /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   82  Linux swap / Solaris
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+   b  W95 FAT32

Partition table entries are not in disk order

fdisk に関するその他の情報

お気付きかもしれませんが、いずれのパーティションでもブート可能フラグの変更は行っていません。今のところ、Windows MBR (Master Boot Record) はまだこのディスクにあるため、ディスクはブート可能としてマークが付けられた最初の基本パーティション (この例の場合は、NTFS パーティション) をブートします。

LILO と GRUB はいずれもブート可能フラグを使用しません。この 2 つのブート・ローダーのいずれかが MBR にインストールされている場合、そのブート・ローダーが Windows/XP パーティションをブートすることができます。また、LILO または GRUB を /boot パーティション (/dev/hda2) にインストールして、そのパーティションにブート可能のマークを付けて、ブート可能フラグを /dev/hda1 から削除するという方法も使えます。マシンが後で Windows 専用マシンに復帰した場合に備え、元の MBR は残しておくのが賢明です。

fdisk は、パーティション・テーブルでのパーティションの順序を修正しなければならない場合にも使用することができます。その場合、通常はパーティション番号も変更されるので、システムを現用システムにリストアするためには他の作業が必要になることもあります。パーティションの順序を変更するには、f サブコマンドを使ってエキスパート・モードに変更した後、f サブコマンドを使用してパーティションの順序を修正します (リスト 10 を参照)。新しいパーティションの順序をただ確認したいだけで、順序を変更する必要がないのであれば、以下の例で行っているように q サブコマンドを使用すれば、更新後のパーティション・テーブルをディスクに書き込まずに終了することができます。

リスト 10. パーティション・テーブルでの順序の修正
Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9634        9730      779152+  83  Linux
/dev/sda3            9731      116679   859067842+   5  Extended
/dev/sda4            9112        9633     4192965   82  Linux swap / Solaris
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+   b  W95 FAT32

Partition table entries are not in disk order

Command (m for help): x

Expert command (m for help): f
Done.

Expert command (m for help): r

Command (m for help): p

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000de20f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        9111    73184076    7  HPFS/NTFS
/dev/sda2            9112        9633     4192965   82  Linux swap / Solaris
/dev/sda3            9634        9730      779152+  83  Linux
/dev/sda4            9731      116679   859067842+   5  Extended
/dev/sda5            9731       20917    89859546   83  Linux
/dev/sda6           20918       39644   150424596   83  Linux
/dev/sda7           39645       53905   114551451   83  Linux
/dev/sda8           53906       59128    41953716   83  Linux
/dev/sda9           59129       59384     2056288+   b  W95 FAT32

Command (m for help): q

以上で説明したのは、Linux ワークステーションにパーティションを追加する方法の 1 つでしかありません。その他の方法については、「Linux の 101 試験対策: システム・ファイルの検索と配置」で説明しています。


ファイルシステムのタイプ

Linux では数種類のファイルシステムをサポートしています。それぞれのファイルシステムごとに、長所と短所、そして固有のパフォーマンス特性があります。ファイルシステムに備わっている 1 つの重要な特性は、ジャーナリングです。ジャーナリングにより、システムのクラッシュ後のリカバリーが大幅に高速化されます。一般的に、選択の余地がある場合には非ジャーナリング・ファイルシステムよりもジャーナリング・ファイルシステムが望ましい選択肢となります。また、選択するファイルシステムが SELinux (Security Enhanced Linux) をサポートしているかどうかも考慮する必要があります。このセクションでは、LPI 試験に備えるために知っておかなければならないファイルシステムのタイプについて概説します。さらに詳しい背景知識については、「参考文献」を参照してください。

ext2 ファイルシステム

ext2 ファイルシステム (second extended filesystem) は、Linux の初期の頃のバージョンで使用されていた Minix ファイルシステムの不足を補うために開発されました。Linux では長年の間、ext2 が広く使われてきましたが、ext2 はジャーナリングを備えていないことから、概して ext3 に置き換えられています。

ext3 ファイルシステム

ext3 ファイルシステムは標準の ext2 ファイルシステムにジャーナリング機能を追加することから、極めて安定したファイルシステムへと進化しています。大抵の条件下で十分なパフォーマンスを実現する ext3 は、現在でも改善が進められています。ext3 は実績のある ext2 ファイルシステムをベースにジャーナリング機能を追加するため、既存の ext2 ファイルシステムを ext3 に変換することも、さらには必要に応じて ext2 に戻すことも可能です。

ReiserFS ファイルシステム

ReiserFS は B 木 をベースとしたファイルシステムで、特に多数の小さいファイルに対する全体的なパフォーマンスに非常に優れています。また、ReiserFS はスケーラビリティーにも優れ、ジャーナリングも備えています。現在 ReiserFS の開発は行われていないこと、さらに ReiserFS は SELinux をサポートしないことから、概して Reiser4 に置き換えられるようになっています。

XFS ファイルシステム

XFS はジャーナリングを備えたファイルシステムです。堅牢な機能を備えた XFS は、スケーラビリティーを目的に最適化されています。XFS は送受信されるデータを積極的に RAM にキャッシュするので、XFS を使用する場合には常時電力が供給されるようにしておくことをお勧めします。

スワップ・ファイルシステム

スワップ領域は、スワップ領域として使用するようにフォーマットする必要がありますが、一般にはファイルシステムと見なされます。

vfat ファイルシステム

vfat (別名、FAT32) はジャーナリング・ファイルシステムではなく、完全な Linux ファイルシステムの実装に必要な多くの機能が欠けています。しかし、Windows と Linux の両方で読み取り可能なファイルシステムであることから、vfat ファイルシステムは Windows システムと Linux システムの間でデータを交換するのに役立ちます。ただし Linux では、Windows システムと Linux システムの間でデータを共有する以外の目的では、vfat ファイルシステムを使用しないでください。Linux アーカイブを vfat ディスクで解凍または展開すると、実行権限などのアクセス権を失うとともに、アーカイブに保管されていた可能性のあるシンボリック・リンクをすべて失うことになります。

ext3 ファイルシステムは成熟度が高く、多くのディストリビューションでデフォルト・ファイルシステムとして使用されています。ReiserFS ファイルシステムも長年、SUSE を含めた一部のディストリビューションでデフォルトとして使用されてきましたが、今ではそれほどでもありません。


ファイルシステムの作成

Linux は mkfs コマンドを使用してファイルシステムを作成し、mkswap コマンドを使用してスワップ領域を作成します。mkfs コマンドは実際には、ファイルシステムに固有のコマンド (ext3 の mkfs.ext3、ReiserFS の mkfs.reiserfs など) のフロントエンドです。

システムにインストール済みのファイルシステムのサポートを調べるには、ls /sbin/mk* コマンドを使用してください。リスト 11 に、一例を記載します。

リスト 11. ファイルシステムの作成コマンド
[ian@echidna ~]$ ls /sbin/mk*
/sbin/mkdosfs      /sbin/mkfs.ext2     /sbin/mkfs.ntfs
/sbin/mke2fs       /sbin/mkfs.ext3     /sbin/mkfs.vfat
/sbin/mkfs         /sbin/mkfs.ext4     /sbin/mkfs.xfs
/sbin/mkfs.btrfs   /sbin/mkfs.ext4dev  /sbin/mkhomedir_helper
/sbin/mkfs.cramfs  /sbin/mkfs.msdos    /sbin/mkswap

上記のように、さまざまな形のコマンドがありますが、例えば mke2fs、mkfs.ext2、および mkfs.ext3 ファイルはどれも同じで、mkreiserfs と mkfs.reiserfs も同じであることがわかるはずです。システムをブートするために必要となるファイルシステムは、内容がまったく同じファイルを、それぞれに異なる名前で使用します。Linux で / ファイルシステムとして使用できないファイルシステム (vfat や msdos など) では、代わりにシンボリック・リンクを使用することができます。

オプションには、すべての mkfs コマンドに共通するものがいくつかあります。一方、作成するファイルシステムのタイプに固有のオプションは、-type オプションに指定されたファイルシステムのタイプに応じて、該当する作成コマンドに渡されます。この記事の例では mkfs -typeを使用しますが、例えば mkfs -type ext2mk2fsmkfs.ext2 などの別の形を使っても、同じ効果が得られるはずです。特定のファイルシステムに関するマニュアル・ページを参照するには、該当する mkfs コマンドを名前として使用してください (man mkfs.ext3 など)。以降に記載する出力例に表示されている値の多くは、mkfs のオプションによって制御することができます。

サンプル・パーティションはすべて作成済みなので、ここで Fedora 12 システムをリブートし、ライブ Knoppix DVD よりも幾分高速な手段でファイルシステムをフォーマットします。もちろん、お望みであれば Knoppix システムを引き続き使用するのでも構いません。注意する点として、ファイルシステムを作成するには root 権限が必要です。

ext3 ファイルシステムを作成する

まずは、mkfs コマンドを使用して /dev/sda8 パーティションを ext3 としてフォーマットします (リスト 12 を参照)。

リスト 12. ext3 ファイルシステムの作成
[root@echidna ~]# mkfs -t ext3 /dev/sda8
mke2fs 1.41.9 (22-Aug-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2624496 inodes, 10488429 blocks
524421 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
321 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

ext3 ではジャーナルが作成されることに注意してください。ジャーナルを既存の ext2 システムに追加したい場合には、-j オプションを指定して tune2fs コマンドを実行します。

ext2 および ext3 ファイルシステムに役立つオプションは、名前を指定した -L オプションです。このオプションにより、パーティションにラベルが割り当てられるので、ファイルシステムをマウントする際には、このラベルをデバイス名の代わりに使用することができます。こうすると、各種の制御ファイルに反映させなければならない可能性のある変更をある程度、防ぐことができます。既存の ext2 または ext3 ファイルシステムのラベルを表示、または設定するには、e2label コマンドを使用してください。ラベルの長さは最大 16 文字に制限されます。

しかし最近では、ラベルではなく UUID (Universally Unique Identifier) を使用するようになっています。UUID は 128 ビットの ID で、通常は 32 桁の 16 進数と 4 つのハイフンとして表示されます。ほとんどの Linux ファイルシステムは、ファイルシステムのフォーマット時に UUID を自動的に生成します。blkid コマンド (root 権限は不要です) を使って、上記でフォーマットしたパーティションの UUID を調べてみてください (リスト 13 を参照)。UUID はラベルよりも一意性に優れているので、USB ドライブのようなホット・プラグ・デバイスにはとりわけ役立ちます。

リスト 13. blkid による UUID の表示
[ian@echidna ~]$ blkid /dev/sda8
/dev/sda8: UUID="87040def-920e-4525-9c81-c585ddc46384" SEC_TYPE="ext2" TYPE="ext3"

XFS ファイルシステムを作成する

上記の手順で ext3 としてフォーマットしたパーティションを、今度は XFS ファイルシステムを使用して再フォーマットしてみましょう。ここで使用している Fedora 12 システムは SELinux (Security Enhanced Linux) をサポートしているので、-i パラメーターを使用して、デフォルトの 256 よりも大きな i ノードを指定してください。推奨される値は 512 です。XFS フォーマッターは、パーティションで認識済みのファイルシステムを検出すると、それをユーザーに通知することに注意してください。また、UUID は XFS フォーマットによって割り当て直されている点にも注意が必要です。

リスト 14. XFS ファイルシステムの作成
[root@echidna ~]# mkfs -t xfs -i size=512 /dev/sda8
mkfs.xfs: /dev/sda8 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@echidna ~]# mkfs -t xfs -f -i size=512 /dev/sda8
meta-data=/dev/sda8              isize=512    agcount=4, agsize=2622108 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=10488429, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=5121, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@echidna ~]# blkid /dev/sda8
/dev/sda8: UUID="1b6798f2-f07f-4d5e-af06-2470df37ddb3" TYPE="xfs"

XFS システムにラベルを付けるには、-L オプションとラベル名を指定します。-L オプションを指定した xfs_admin コマンドを使用して、既存の XFS ファイルシステムにラベルを追加することもできます。ラベルを表示するには、xfs_admin-l オプションを使用します。ext2、ext3、そして ReiserFS とは異なり、XFS ラベルの最大長は 12 文字です。

ReiserFS ファイルシステムを作成する

ReiserFS ファイルシステムを作成するには、-t reiserfs オプションを指定した mkfs コマンドか、mkreiserfs コマンドを使用します。ReiserFS は SELinux をサポートしていないため、現在は Resier4 への置き換えが進んでいます。

ReiserFS システムにラベルを付けるには、-l (または --labeloption と名前) を使用します。reiserfstune コマンドによって、ラベルを追加することも、既存の ReiserFS ファイルシステムのラベルを表示することもできます。ラベルの最大長は 16 文字に制限されます。

ReiserFS はデフォルト・インストールには含まれていないことがあるので、これを使用するには、お使いのシステムに ReiserFS パッケージをインストールしなければならない場合があります。詳細は、man ページまたは info ページを参照してください。

vfat ファイルシステムを作成する

最後に、/dev/sda9 に FAT32 (vfat) ファイルシステムを作成します。

リスト 15. vfat ファイルシステムの作成
[root@echidna ~]# mkfs -t vfat /dev/sda9
mkfs.vfat 3.0.9 (31 Jan 2010)
[root@echidna ~]# blkid /dev/sda9
/dev/sda9: LABEL="" UUID="CF72-99A8" TYPE="vfat"

vfat ファイルシステムの UUID は通常の UUID よりも短いため、多少一意性に欠ける可能性があります。ラベルを代わりに使用する場合には、dosfslabel コマンドを使用してください。DOS パーティションのラベルは、長さ 11 文字に制限されます。


スワップ領域の作成

今度は mkswap コマンドを使用して、/dev/sda4 パーティションにスワップ領域を作成してみましょう (リスト 16 を参照)。

リスト 16. スワップ領域の作成
[root@echidna ~]# mkswap /dev/sda4
Setting up swapspace version 1, size = 4192960 KiB
no label, UUID=8f5a3a05-73ef-4c78-bc56-0e9b1bcc7fdb

mkswap の最近のバージョンは、生成された UUID を表示することに注意してください。

通常のファイルシステムとは異なり、スワップ・パーティションはマウントされません。スワップ・パーティションを有効にするには、swapon コマンドを使用します。Linux システムの起動スクリプトは、スワップ・パーティションを自動的に有効にするはずです。


その他のツールとファイルシステム

このセクションで取り上げるツールとファイルシステムは、LPI 試験の目標には含まれていません。ここでは、使用する可能性のあるツールとファイルシステムをいくつか抜粋し、その概要を簡単に紹介します。

パーティショニング・ツール

Linux ディストリビューションの多くには、cfdisk または sfdisk コマンドが含まれています。cfdisk コマンドは ncurses ライブラリー関数を使用して、fdisk よりもグラフィカルなインターフェースを提供します (図 1 を参照)。一方、プログラマー向けの sfdisk は、スクリプトにできるコマンドです。このコマンドは、自分で何をしているのかがわかっている場合に使用してください。

図 1. cfdisk の使用
パーティション操作用の cfdisk ツールのグラフィカル・インターフェースを示すスクリーン・ショット

パーティション・テーブルの操作によく使われているツールとしては、parted もあります。このツールでは、さまざまなパーティション・タイプのサイズ変更とフォーマットだけでなく、パーティションの作成、破棄を行うこともできます。parted で NTFS パーティションのサイズを変更することはできませんが、ntfsresize でなら可能です。このparted の関数と ntfsresize の関数が両方とも組み込まれているのが、qtparted ツールです。qtparted ツールは、Qt ツールキットを使用してグラフィカル・インターフェースを提供します。

qtparted ツールは、GNOME デスクトップ用に設計されたグラフィカル・パーティショニング・ツールです。このツール (図 2 を参照) は GTK+GUI ライブラリーを使用します (qtparted および gparted のリンクについては、「参考文献」を参照)。

以上のパッケージはデフォルトのインストールに含まれていない可能性があるため、使用するにはパッケージをインストールしなければならない場合があります。

図 2. gparted の使用
パーティション操作用の gparted ツールのグラフィカル・インターフェースを示すスクリーン・ショット

多くのディストリビューションでは、インストール・プロセスの一環としてユーザーがディスクをパーティションに区分したり、場合によっては既存の Windows NTFS または FAT32 パーティションを縮小したりすることができます。お使いのディストリビューションのインストール・マニュアルを調べてみてください。

論理ボリューム・マネージャー

Linux の論理ボリューム・マネージャー (LVM) を使用すると、複数の物理ストレージ・デバイスを 1 つのボリューム・グループに統合することができます。例えば、対象とするファイルシステムに十分な大きさの連続した領域を見つけ出す代わりに、既存のボリューム・グループにパーティションを追加することも可能です。

RAID

RAID (Redundant Array of Independent Disks) は、ハイエンド・システムにあるようなディスクよりも遥かに手頃な低価格のディスクを使用して、信頼性の高いデータ・ストレージを実現するための技術です。RAID には複数の種類があり、ハードウェアまたはソフトウェアとして実装することができます。Linux では、ハードウェア RAID とソフトウェア RAID の両方をサポートしています。

その他のファイルシステム

これまでに説明したファイルシステムの他にも、皆さんが目にする可能性のあるファイルシステムにはさまざまなものがあります。

現在 IBM エンタープライズ・サーバーで使用されている IBM の JFS (Journaled File System) は、高スループットのサーバー環境向けに設計されているファイルシステムです。このファイルシステムは Linux にも対応し、複数のディストリビューションに組み込まれています。JFS ファイルシステムを作成するには、mkfs.jfs コマンドを使用します。

btrfs (B-Tree file system) は元々 Oracle によって開発されたファイルシステムで、現在は GPL ライセンスの下で使用できるようになっています。Linux 向けの新しいコピー・オン・ライト・ファイルシステムである btrfs は、高度な機能を実装することを目的にすると同時に、耐障害性、修理、そして容易な管理に重点が置かれています。デフォルトではインストールされない可能性があるので、btrfs のサポートを有効にするには、btrfs-progs などのパッケージをインストールする必要があります。

その他にも、組み込みデバイスでよく使用されている cramfs などのファイルシステムがあります。

参考文献

学ぶために

製品や技術を入手するために

  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。プロフィールで選択した情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=506703
ArticleTitle=Linux の 101 試験対策: パーティションおよびファイルシステムの作成
publish-date=07122010