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

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

ディスク・ドライブにパーティションを作成する方法、そしてパーティションをフォーマットして、Linux システムでスワップ領域またはデータ領域として使用する方法を学んでください。Linux Professional Institute の LPIC-1: Linux Server Professional Certification 101 試験に備えて勉強するためや、単にパーティションと Linux ファイルシステムについて学んで自分で使用するために、このチュートリアルの内容を利用してください。

Ian Shields, Linux Author, Freelance

Ian ShieldsIan Shields は、Linux のフリー・ライターです。ノースカロライナ州 Research Triangle Park にある IBM を退職した彼が、オーストラリアのキャンベラにある IBM にシステム・エンジニアとして入社したのが 1973年であり、それ以降、カナダのモントリオールやノースカロナイナ州 Research Triangle Park でシステム・エンジニアリングとソフトウェア開発の両方に携わってきました。1990年代後半からは、Linux を使用して Linux 上で開発を行うとともに、Linux に関する執筆も行ってきました。彼は、オーストラリア国立大学で純粋数学および哲学の学士号を取得し、ノースカロライナ州立大学でコンピューター・サイエンスの修士号と博士号を取得しています。普段はオリエンテーリングを楽しんでおり、旅行に行くのも好きです。



2016年 4月 21日 (初版 2010年 7月 12日)

概要

より詳しく学び、さらなる開発を行い、より多くの人とつながる

新たに登場した developerWorks Premium メンバーシップ・プログラムでは、メンバーになると、強力な開発ツールのほか、Safari Books Online を通じて提供される最もホットな 500 タイトルの技術書 (Linux 開発者向けのものが大量にあります) を含む各種のリソースをすべて自由に利用できるようになります。さらに、主要な開発者向けイベントの登録料の大幅な割引や、最新の O'Reilly カンファレンスの全容を閲覧できる再生動画など、その他にもさまざまな特典が提供されます。今すぐサインアップしてください。

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

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

ディスク・スペースの分割

このチュートリアルでは、まず始めにブロック・デバイスとパーティションについて概説した後、ブロック・デバイス上でパーティションを作成、変更、削除するために使われるコマンド fdiskgdiskparted について詳しく説明します。また、mkfs コマンドのさまざまな形についても取り上げます。make filesystem を意味する mkfs は、パーティションを特定のファイルシステムのタイプにフォーマットするために使用するコマンドです。

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

この連載について

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

連載の各チュートリアルに関する説明とリンクについては、developerWorks の「Linux の 101 試験対策: LPIC-1 のロードマップ」を参照してください。現在進行中のこのロードマップは、2015年 4月 15日に更新された LPIC-1 試験の項目のバージョン 4.0 を反映しています。完成したチュートリアルは、その都度ロードマップに追加されていきます。

このチュートリアルは、LPIC-1: Linux Server Professional Certification 101 試験における主題 104 の項目 104.1 に備える上で役に立ちます。この項目は、重要度が 2 とされています。

前提条件

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

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

このチュートリアルでは、いくつかの異なるシステムおよび Linux ディストリビューションの例を取り上げます。大々的なデータ損失もなくディスク全体を再フォーマットする簡単な方法として、これらの例で使用しているのは比較的小さな 16 GB USB フラッシュです。ここで取り上げている以外の Linux システムを使用する場合、このチュートリアルとは異なる結果になるかもしれません。さらに、皆さんのハードウェアには、このチュートリアルとは異なるディスクが接続されているはずなので、取り上げる例の説明だけを参考にしてください。記載する各リストの最初のコマンドには、実際に使用している Linux ディストリビューションを何らかの形で示すコメントを付けてあります。異なる複数のディストリビューションを使用して説明している場合には、複数のコマンドにコメントを付けてあります。


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

チュートリアル「Linux の 101 試験対策: ハード・ディスクのレイアウト」では、ハード・ディスクのレイアウトおよびパーティションについて説明するとともに、fdisk コマンドと gdisk コマンドを使ってパーティション情報を表示する基本的な方法を紹介しました。そのなかでは、マスター・ブート・レコード (MBR)、パーティション・テーブル、そして基本 (primary)、拡張 (extended)、論理 (logical) という 3 つのタイプのパーティションを取り上げた後、MBR レイアウトに付き物のサイズ制限に対処するために使われる新しいフォーマットである、GUID (Globally Unique IDentifier) パーティション・テーブル (GPT) についても紹介し、最後に、Linux ファイルシステムに保管されるファイルは、ディスクやその他のブロック・ストレージ・デバイス上のディレクトリーに配置されることを説明しました。他の多くのシステムと同じく、Linux システムでのディレクトリーには、他のディレクトリーを含めることができます。ディレクトリーに含められたディレクトリーは、サブディレクトリーと呼ばれます。前述のチュートリアルでは、パーティションに関する選択を行う際の指針となる考慮事項についても取り上げました。

今回のチュートリアルでは、MBR レイアウトを使用したパーティショニング用の fdisk コマンドに関係する LPI の要件と、GPT レイアウトを使用したパーティショニング用の gdisk コマンドに関係する LPI の要件にフォーカスします。

ブロック・デバイス

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

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

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

リスト 1. Linux のブロック・デバイスとキャラクター・デバイス
[ian@attic-f21 resent]$ ls -l /dev/null /dev/sd[ab] /dev/sr0 /dev/tty0  #Fedora 21
crw-rw-rw-. 1 root root   1,  3 Jul 27 20:38 /dev/null
brw-rw----. 1 root disk   8,  0 Jul 30 07:46 /dev/sda
brw-rw----. 1 root disk   8, 16 Jul 30 07:46 /dev/sdb
brw-rw----+ 1 root cdrom 11,  0 Jul 27 20:38 /dev/sr0
crw--w----. 1 root tty    4,  0 Jul 27 20:38 /dev/tty0

パーティション

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

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

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


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

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

fdisk を使って MBR パーティション情報を表示する

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

リスト 2. fdisk を使って MBR パーティションを一覧表示する
ian@Z61t-u14:~$ sudo fdisk -l /dev/sda # Ubuntu 14

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xed1f86f7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   185915519    92957728+   7  HPFS/NTFS/exFAT
/dev/sda2       185915520   195365519     4725000   12  Compaq diagnostics
/dev/sda3       195366910   976773119   390703105    5  Extended
/dev/sda5       195366912   293021695    48827392   83  Linux
/dev/sda6       293023744   312553471     9764864   82  Linux swap / Solaris
/dev/sda7       312555520   333035519    10240000   83  Linux

[root@atticf20 ~]# fdisk -l /dev/sda # Fedora 22
Disk /dev/sda: 596.2 GiB, 640135028736 bytes, 1250263728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00064a1a

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1               63    2040254    2040192 996.2M 83 Linux
/dev/sda2          2040255   22523129   20482875   9.8G 82 Linux swap / Solaris
/dev/sda4         22523191 1250258624 1227735434 585.4G  5 Extended
/dev/sda5         22523193  167397299  144874107  69.1G 83 Linux
/dev/sda6        167397363  310761359  143363997  68.4G 83 Linux
/dev/sda7  *     310761423  455442749  144681327    69G 83 Linux
/dev/sda8        455442813  600092009  144649197    69G 83 Linux
/dev/sda9        600092073  744436034  144343962  68.8G 83 Linux
/dev/sda10       744436098  918439935  174003838    83G 83 Linux
/dev/sda11       918441984 1079044095  160602112  76.6G 83 Linux
/dev/sda12      1079053983 1250258624  171204642  81.7G 83 Linux

注:

  1. ヘッダー情報には、ディスクのサイズとジオメトリーが示されます。LBA を使用している大容量のディスクでは、シリンダーあたりのトラック (ヘッド) 数が 255 で、トラックあたりのセクター数は 63 です。従って、セクター数の合計は 16065、つまりシリンダーあたり 8225280 バイトとなります。
  2. 上記のリストで 2 番目に示されている例では、論理パーティション /dev/sda7 にブート可能 (アクティブ) であることを示すマークが付けられています。通常、標準的な DOS PC のマスター・ブート・レコードは、このフラグが立っているパーティションをブートすることができます。ただし、このローダーがブートできるのは、基本パーティションのみです。このフラグは、LILO ブート・ローダーや GRUB ブート・ローダーにとっては何の意味もありません。現在、上記リストの両方の例では、GRUB2 をブート・ローダーとして使用しているので、/dev/sda7 に付けられているブート可能のマークは、過去にこのドライブを使用した際に偶然付けられたものだと思います。
  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) パーティションと示されています。

gdisk を使って GPT パーティション情報を表示する

MBR でフォーマットされたディスクに対する fdisk コマンドと同様に、GPT でフォーマットされたディスクのパーティションを一覧表示するには、-l オプションを指定した gdisk コマンドが使われます。特定のドライブのパーティションを調べたければ、/dev/sda などのデバイス名を追加します。fdisk の場合と同じく、gdisk には root でアクセスする必要があります。リスト 3 に、私のシステムの状態として GPT でフォーマットされたハード・ディスクのパーティションを示します。このシステムでは、使用可能なディスクのほぼ半分をこのパーティションが占めています。

リスト 3. gdisk を使って GPT パーティションを一覧表示する
[root@attic-f21 ~]# # Fedora 21
[root@attic-f21 ~]# gdisk -l /dev/sdc
GPT fdisk (gdisk) version 1.0.0

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdc: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): E5D8C34A-33BF-49EA-8800-AE195E292F1D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 1004111213 sectors (478.8 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       949415935   452.7 GiB   0700

保護 (protective) MBR が存在していることに注意してください。これにより、GPT フォーマットを認識しないプログラムは、ディスク全体が 1 つのパーティションで占められているかのように、ディスクを認識できるようになります。fdisk の現在のバージョンは、GPT フォーマットを認識することから、GPT でフォーマットされたディスクのパーティションも表示するはずです。

parted を使ってパーティション情報を表示する

parted コマンドは、MBR でフォーマットされたディスクと GPT でフォーマットされたディスクの両方を扱うパーティション・エディターです。リスト 4 に、リスト 2 の 2 番目のディスクとリスト 3 のディスクを示します。

リスト 4. parted を使って MBR パーティションと GPT パーティションを一覧表示する
[root@attic-f21 ~]# # Fedora 21
[root@attic-f21 ~]# parted /dev/sda p
Model: ATA WDC WD6401AALS-0 (scsi)
Disk /dev/sda: 640GB
Sector size (logical/physical): 512B/512B
Partition Table   : msdos
Disk Flags: 

Number  Start   End     Size    Type      File system     Flags
 1      32.3kB  1045MB  1045MB  primary   ext3
 2      1045MB  11.5GB  10.5GB  primary   linux-swap(v1)
 4      11.5GB  640GB   629GB   extended
 5      11.5GB  85.7GB  74.2GB  logical   ext4
 6      85.7GB  159GB   73.4GB  logical   ext4
 7      159GB   233GB   74.1GB  logical   ext4            boot
 8      233GB   307GB   74.1GB  logical   ext3
 9      307GB   381GB   73.9GB  logical   ext3
10      381GB   470GB   89.1GB  logical   ext4
11      470GB   552GB   82.2GB  logical   ext3
12      552GB   640GB   87.7GB  logical   ext4

[root@attic-f21 ~]# parted /dev/sdc p
Model: ATA WDC WD1003FZEX-0 (scsi)
Disk /dev/sdc: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table   : gpt
Disk Flags: 

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  486GB  486GB  ext4               msftdata

2 つのディスクの物理セクター・サイズが異なっていることに注意してください。


ディスクのパーティショニング

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

警告

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

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

fdisk 使った MBR ディスクのパーティショニング

普段使用しているパーティションに変更を加える必要がある場合、おそらくライブ CD または USB スティックから行う必要があります。fdisk を使ってパーティションを追加する最初の例として、ここでは Knoppix 7.4.2 ライブ DVD を使用します。

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

リスト 5. 対話型 fdisk を起動する
knoppix@Microknoppix:~$ su -
root@Microknoppix:~# fdisk /dev/sda

Command (m for help):

古いバージョンの fdisk は、1024 を超えるシリンダーのディスクに関して警告を出す可能性があります。BIOS が非常に古くて 1024 を超えるシリンダーからのブートをサポートしていない場合には、警告を受け取るかもしれませんが、現在のほとんどのシステムは、この制限の影響を受けることがなく、fdisk の最近のバージョンが警告を表示することはもはやありません。自分が持っているバージョンに、DOS 互換モードをオフにする -c オプションがあることにお気づきの方もいるかもしれません。一般に推奨されているこのオプションを指定すると、一部の警告が表示されなくなります。

m」と入力すると、使用可能な 1 文字コマンドの一覧が表示されます (リスト 6 を参照)。

リスト 6. 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 コマンドを使って、このディスク上にある既存のパーティションを表示してください。リスト 7 に出力を記載します。

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

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 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              63     2040254     1020096   83  Linux
/dev/sda2         2040255    22523129    10241437+  82  Linux swap / Solaris
/dev/sda4        22523191  1250258624   613867717    5  Extended
/dev/sda5        22523193   167397299    72437053+  83  Linux
/dev/sda6       167397363   310761359    71681998+  83  Linux
/dev/sda7   *   310761423   455442749    72340663+  83  Linux
/dev/sda8       455442813   600092009    72324598+  83  Linux
/dev/sda9       600092073   744436034    72171981   83  Linux
/dev/sda10      744436098   918439935    87001919   83  Linux
/dev/sda11      918441984  1079044095    80301056   83  Linux
/dev/sda12     1079053983  1250258624    85602321   83  Linux

Command (m for help):

このディスクは、2 つの基本パーティション (/dev/sda1 と /dev/sda2) と 1 つの拡張パーティション (/dev/sda4) を持ち、拡張パーティションに 8 つの論理パーティションが含まれる、640 GB のディスクです。このなかには Linux スワップ・パーティションが 1 つあります。

fdisk を使ってパーティションを追加する

早速、ディスクの末尾の極めて小さい空きスペースの一部を使って、最終的に FAT32 としてフォーマットする基本パーティションを追加してみましょう。

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

リスト 8. 1 つ目のパーティションを作成する
Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): p         
Selected partition 3
First sector (22523130-1250263727, default 22523130): 1250258625
Last sector, +sectors or +size{K,M,G} (1250258625-1250263727, default 1250263727): 
Using default value 1250263727

Command (m for help): p

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 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              63     2040254     1020096   83  Linux
/dev/sda2         2040255    22523129    10241437+  82  Linux swap / Solaris
/dev/sda3      1250258625  1250263727        2551+  83  Linux
/dev/sda4        22523191  1250258624   613867717    5  Extended
/dev/sda5        22523193   167397299    72437053+  83  Linux
/dev/sda6       167397363   310761359    71681998+  83  Linux
/dev/sda7   *   310761423   455442749    72340663+  83  Linux
/dev/sda8       455442813   600092009    72324598+  83  Linux
/dev/sda9       600092073   744436034    72171981   83  Linux
/dev/sda10      744436098   918439935    87001919   83  Linux
/dev/sda11      918441984  1079044095    80301056   83  Linux
/dev/sda12     1079053983  1250258624    85602321   83  Linux

Partition table entries are not in disk order

Command (m for help):

基本パーティションには 1 から 4 までの番号が付けられていなければならないので、パーティション・タイプとして「p」を選択したところ、(このディスクでは既に 1、2、4 が使用されているため) 唯一選択できるパーティション番号は「3」でした。開始セクターとしては、/dev/sda12 で使用している最終セクターの 1 セクター先となる「1250258625」を指定し、終了セクターのデフォルトをディスクの最終セクターとみなしたので、新しい /dev/sda3 パーティションは、サイズが 1 K のブロックが 2551 個含まれている、実に小さいパーティションになっています。

パーティションには、連続した番号を割り当てるのが得策です。一部のツールでは、パーティション番号が連続していないとエラーになるため、fdisk はパーティション・テーブルのエントリーがディスクの順でないという警告を出します。

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

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

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

fdisk での作業を終える前に、新しいパーティションのパーティション・タイプを変更します。それには、t サブコマンドを使ってパーティション・タイプを設定します。私たちは、/dev/sda3 をタイプ b (W95 FAT32) に設定しました。サポートされるタイプの完全なリストを表示するには、リスト 9 に示されているように「L」を入力します。

リスト 9. パーティション・タイプを変更する
Command (m for help):  t
Partition number (1-12):  3
Hex code (type L to list codes):  b
Changed system type of partition 3 to b (W95 FAT32)

Command (m for help):

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

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

リスト 10. パーティション・テーブルを保存する
Command (m for help): v
Remaining 12367 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.

fdisk に関するその他の情報

LILO と GRUB はいずれもブート可能フラグを使用しません。この 2 つのブート・ローダーのいずれかが MBR にインストールされている場合、そのブート・ローダーが任意のパーティションを (それが基本パーティションであろうと、論理パーティションであろうと) ブートすることができます。

パーティション・テーブルでのパーティションの順序を修正しなければならない場合にも、fdisk を使うことができます。その場合、通常はパーティション番号も変更されるので、システムを現用システムにリストアするには他の作業が必要になることもあります。パーティションの順序を変更するには、f サブコマンドを使ってエキスパート・モードに切り替えた後、同じく f サブコマンドを使ってパーティションの順序を修正します (リスト 11 を参照)

リスト 11. パーティション・テーブルでパーティションの順序を修正する
root@Microknoppix:~# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 640.1 GB, 640135028736 bytes
255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
Units = sectors of 1 * 512 = 512 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              63     2040254     1020096   83  Linux
/dev/sda2         2040255    22523129    10241437+  82  Linux swap / Solaris
/dev/sda3      1250258625  1250263727        2551+   b  W95 FAT32
/dev/sda4        22523191  1250258624   613867717    5  Extended
/dev/sda5        22523193   167397299    72437053+  83  Linux
/dev/sda6       167397363   310761359    71681998+  83  Linux
/dev/sda7   *   310761423   455442749    72340663+  83  Linux
/dev/sda8       455442813   600092009    72324598+  83  Linux
/dev/sda9       600092073   744436034    72171981   83  Linux
/dev/sda10      744436098   918439935    87001919   83  Linux
/dev/sda11      918441984  1079044095    80301056   83  Linux
/dev/sda12     1079053983  1250258624    85602321   83  Linux

Partition table entries are not in disk order

Command (m for help): x

Expert command (m for help): m
Command action
   b   move beginning of data in a partition
   c   change number of cylinders
   d   print the raw data in the partition table
   e   list extended partitions
   f   fix partition order
   g   create an IRIX (SGI) partition table
   h   change number of heads
   i   change the disk identifier
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   r   return to main menu
   s   change number of sectors/track
   v   verify the partition table
   w   write table to disk and exit

Expert command (m for help): f
Done.

Expert command (m for help): p

Disk /dev/sda: 255 heads, 63 sectors, 77825 cylinders

Nr AF  Hd Sec  Cyl  Hd Sec  Cyl     Start      Size ID
 1 00   1   1    0 254  63  126         63    2040192 83
 2 00   0   1  127 254  63 1023    2040255   20482875 82
 3 00 254  63 1023 254  63 1023   22523191 1227735434 05
 4 00   0   1    1  80  63    1 1250258625       5103 0b
 5 00 254  63 1023 254  63 1023          2  144874107 83
 6 00 254  63 1023 254  63 1023         63  143363997 83
 7 80 254  63 1023 254  63 1023         63  144681327 83
 8 00 254  63 1023 254  63 1023         63  144649197 83
 9 00 254  63 1023 254  63 1023         63  144343962 83
10 00 254  63 1023 254  63 1023         63  174003838 83
11 00 254  63 1023 254  63 1023       2048  160602112 83
12 00 254  63 1023 254  63 1023         63  171204642 83

Expert command (m for help): q

エキスパート・コマンドのメニューを見ると、その多くは使いそうもないことがわかります。これらのコマンドを使うのは、そのコマンドが何を行うことになるかを理解している場合に限るべきです。また、エキスパート・モードでは、パーティション情報の出力フォーマットが異なることにも注意してください。


gdisk を使った GPT ディスクのパーティショニング

このセクションでは、gdisk コマンドを使って、GPT でフォーマットされたディスクにパーティションを追加する方法を見て行きます。追加するのは、4 GB のスワップ・パーティションと 40 GB のデータ・パーティションです。このセクションの例では、CentOS 6 システムを使用します。

警告: MBR でフォーマットされたディスク上で gdisk を使用すると、ディスクを GPT フォーマットに変換するよう提案されますが、この提案に従うと、ディスク上のデータが破壊される可能性があるため、GPT フォーマットへの変換を行う前に、必ず適切なバックアップを取るようにしてください。

リスト 12 に、先ほど使用した MBR ディスク (/dev/sda) を指定して gdisk を起動する様子と、GPT でフォーマットされたディスク (/dev/sdc) を指定して gdisk を起動する様子を示します。新しい 2 つのパーティションに対して使用することになるのは /dev/sdc です。

リスト 12. 対話モードで gdisk を起動する
[root@attic4-cent ~]# gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


Warning! Secondary partition table overlaps the last partition by
33 blocks!
You will need to delete this partition or resize it in another utility.

Command (? for help): q

[root@attic4-cent ~]# gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help):

fdisk の場合と同様に、ヘルプを利用することができます。それには、リスト 13 に示すように ? サブコマンドを使います。

リスト 13. gdisk を起動した状態でヘルプを表示する
Command (? for help): ?
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

Command (? for help):

リスト 14 に、2 つのパーティションを追加する方法を示します。最初は、2 つのパーティションはどちらもデフォルトの Linux データ・パーティション (タイプ 8300) になります。パーティションの最終セクターを指定するために、「+4G」「+40G」を指定していることに注意してください。

リスト 14. gdisk を使ってパーティションを追加する
Command (? for help): n
Partition number (2-128, default 2): 
First sector (34-1953525134, default = 949415936) or {+-}size{KMGTP}: 
Last sector (949415936-1953525134, default = 1953525134) or {+-}size{KMGTP}: +4G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (3-128, default 3): 
First sector (34-1953525134, default = 957804544) or {+-}size{KMGTP}: 
Last sector (957804544-1953525134, default = 1953525134) or {+-}size{KMGTP}: +40G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help):

ここで、/dev/sdc2 のパーティション・タイプを Linux スワップに変更します。リスト 15 に、選択可能なタイプと、/dev/sdc2 のパーティション・タイプを変更する方法、そしてその結果のパーティション・テーブルも示します。このパーティション・テーブルには、ディスク上に既に存在していた先頭のパーティションも含まれています。

リスト 15. gdisk を使ってパーティション・タイプを変更する
Command (? for help): l
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
3000 ONIE boot             3001 ONIE config           4100 PowerPC PReP boot   
4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
8200 Linux swap            8300 Linux filesystem      8301 Linux reserved      
8302 Linux /home           8400 Intel Rapid Start     8e00 Linux LVM           
a500 FreeBSD disklabel     a501 FreeBSD boot          a502 FreeBSD swap        
a503 FreeBSD UFS           a504 FreeBSD ZFS           a505 FreeBSD Vinum/RAID  
a580 Midnight BSD data     a581 Midnight BSD boot     a582 Midnight BSD swap   
a583 Midnight BSD UFS      a584 Midnight BSD ZFS      a585 Midnight BSD Vinum  
a800 Apple UFS             a901 NetBSD swap           a902 NetBSD FFS          
a903 NetBSD LFS            a904 NetBSD concatenated   a905 NetBSD encrypted    
a906 NetBSD RAID           ab00 Apple boot            af00 Apple HFS/HFS+      
af01 Apple RAID            af02 Apple RAID offline    af03 Apple label         
af04 AppleTV recovery      af05 Apple Core Storage    be00 Solaris boot        
bf00 Solaris root          bf01 Solaris /usr & Mac Z  bf02 Solaris swap        
bf03 Solaris backup        bf04 Solaris /var          bf05 Solaris /home       
bf06 Solaris alternate se  bf07 Solaris Reserved 1    bf08 Solaris Reserved 2  
bf09 Solaris Reserved 3    bf0a Solaris Reserved 4    bf0b Solaris Reserved 5  
c001 HP-UX data            c002 HP-UX service         ea00 Freedesktop $BOOT   
eb00 Haiku BFS             ed00 Sony system partitio  ed01 Lenovo system partit
Press the <Enter> key to see more codes: 
ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition 
fb00 VMWare VMFS           fb01 VMWare reserved       fc00 VMWare kcore crash p
fd00 Linux RAID            

Command (? for help): t
Partition number (1-3): 2
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'

Command (? for help): p
Disk /dev/sdc: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): E5D8C34A-33BF-49EA-8800-AE195E292F1D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 911836525 sectors (434.8 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       949415935   452.7 GiB   0700  
   2       949415936       957804543   4.0 GiB     8200  Linux swap
   3       957804544      1041690623   40.0 GiB    8300  Linux filesystem

Command (? for help): i

/dev/sdc1 のタイプは、Microsoft 基本データである 0700 であることに注目してください。このパーティションは、実際には Linux ext4 ファイルシステムとしてフォーマットされています。パーティション・タイプのなかには (Microsoft 基本データのように) オペレーティング・システムにとって重要なものもあれば、(上記リストの Linux スワップや Linux フィルシステムのように) オペレーティング・システムにとって単なるヒントにすぎないものもあります。

最後に行う作業は、パーティション・テーブルを検証して書き込むことです。その様子をリスト 16 に示します。

リスト 16. gdisk を使ってパーティション・テーブルを検証して書き込む
Command (? for help): v

No problems found. 911836525 free sectors (434.8 GiB) available in 2
segments, the largest of which is 911834511 (434.8 GiB) in size.

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdc.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

最後に、リブートが必要であるという警告が表示されているのは、/dev/sdc1 がマウントされたからです。先ほど述べたように、ディスクにマウントされたファイルシステムがない場合には、ディスクの再パーティショニングを行うのが一般に望ましいです。


parted を使ったパーティショニング

現時点では、読者の皆さんは、対話モードで parted を使うこともできることを知っても驚くことはないでしょう。parted は、MBR でフォーマットされたディスクや GPT でフォーマットされたディスクのいずれにも使うことができます。parted と、fdisk または gdisk のいずれかとが大きく異なる点の 1 つは、parted はサブコマンドを即座に実行してパーティション・テーブルを更新することです。

リスト 17 に、parted を起動して /dev/sdc を更新する方法を示します。parted を起動すると、コマンドのリストと、個々のコマンドに関するヘルプを表示することができます。リスト 17 に示しているのは、mklabel サブコマンドの個別のヘルプです。コマンドは、他と識別できる最小限の長さにまで省略できるため、help mklabel の代わりに h mklabel とすることもできました。また、パーティション・テーブルを出力することで、フォーマットされた唯一のパーティションが /dev/sdc1 であると確認することができ、実際に /dev/sdc1 は ext4 としてフォーマットされています。

リスト 17. parted を起動して /dev/sdc を更新する
[root@attic4-cent ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt)
        alignment
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           print general help, or help on
        COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition
        table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on
        partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table,
        available devices, free space, all found partitions, or a particular
        partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START
        and END
  resize NUMBER START END                  resize partition NUMBER and its file
        system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition
        NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and
        copyright information of GNU Parted
(parted) help mklabel
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition
        table)

	LABEL-TYPE is one of: aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun,
        loop
(parted) p                                                                
Model: ATA WDC WD1003FZEX-0 (scsi)
Disk /dev/sdc: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table : gpt

Number  Start   End    Size    File system  Name              Flags
 1      1049kB  486GB  486GB   ext4
 2      486GB   490GB  4295MB               Linux swap
 3      490GB   533GB  42.9GB               Linux filesystem

(parted)

parted では、MB、GB、等々の単位に 2 進の累乗ではなく、10 進の累乗を使用しているため、gdisk によって追加された 40 GB のパーティションは、ここでは parted を使って 42.9 GB と表示されています。

ここで mkpart サブコマンドを使って、さらに 2 つの Linux ファイルシステム・パーティションを追加します。mkpartfs コマンドを使って、パーティションを作成してフォーマットするところまで実行することもできましたが、parted ではより堅牢なパーティション・フォーマット・ツール (この後すぐに紹介します) を使用することを推奨しているため、ここでは単に mkpart を使いました (リスト 18 を参照)。

リスト 18. mkpart を使って 2 つの Linux ファイルシステム・パーティションを追加する
(parted) mkpart
Partition name?  []? "Linux filesystem"
File system type?  [ext2]? xfs
Start? 533GB
End? 573GB
Partition name?  []? "Linux filesystem"
File system type?  [ext2]? 
Start? 573GB                                                              
End? 613GB                                                                
(parted) p                                                                
Model: ATA WDC WD1003FZEX-0 (scsi)
Disk /dev/sdc: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table : gpt

Number  Start   End    Size    File system  Name              Flags
 1      1049kB  486GB  486GB   ext4
 2      486GB   490GB  4295MB               Linux swap
 3      490GB   533GB  42.9GB               Linux filesystem
 4      533GB   573GB  39.7GB               Linux filesystem
 5      573GB   613GB  40.0GB               Linux filesystem

(parted)

お気付きかもしれませんが、parted はパーティション・タイプのコードについて尋ねるのではなく、ファイルシステム・タイプについて尋ねています。私たちは、最初に尋ねられたときは「xfs」と指定し、2 回目に尋ねられたときはデフォルトの「ext2」を選択しました。理論上は、parted は意図されたファイルシステムを使用して、正しいパーティション・タイプを判断します。リスト 19 では、parted が新しいパーティションに対して設定したパーティション・タイプを、gdisk を使って表示しています。

リスト 19. parted が設定したパーティション・タイプを、gdisk を使って表示する
[root@attic4-cent ~]# gdisk -l /dev/sdc
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdc: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): E5D8C34A-33BF-49EA-8800-AE195E292F1D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 756262253 sectors (360.6 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       949415935   452.7 GiB   0700  
   2       949415936       957804543   4.0 GiB     8200  Linux swap
   3       957804544      1041690623   40.0 GiB    8300  Linux filesystem
   4      1041690624      1119139839   36.9 GiB    0700  Linux filesystem
   5      1119139840      1197264895   37.3 GiB    0700  Linux filesystem

おそらく parted あるいは gparted を使って /dev/sdc1 が作成されました。

ここまでで、Linux ワークステーションにパーティションを追加するいくつかの方法を見てきました。このチュートリアルでは、他にも皆さんのツールボックスに追加すべき 2、3 のツールを紹介します。皆さんが行うであろう選択に影響を及ぼす可能性がある、ファイルシステムに関する考慮事項については、「Linux の 101 試験対策: システム・ファイルの検索と配置」で説明しています。


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

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

ext2 ファイルシステム

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

ext3 ファイルシステム

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

ext4 ファイルシステムは、最初は ext3 の拡張として始まりました。その目的は、ストレージの上限を拡大するとともにパフォーマンスを向上させることによって、これまで以上に大規模なファイルシステムの需要に対処することでした。2006年 6月になると、ext3 の安定性を維持するために、この ext3 の拡張を新しいファイルシステム ext4 へ分岐させることが決まりました。ext4 ファイルシステムは 2008年 12月にリリースされ、カーネル 2.6.28 に組み込まれました。ext4 で ext3 から変更された内容の一部を以下に記載します。

  • 最大 16 テラバイトのファイルを持つ、最大 1 エクサバイトのファイルシステムとなりました。
  • パフォーマンスを向上させる手段として、ブロック・マッピングの代わりにエクステントが使われるようになりました。
  • 信頼性を高めるためにジャーナル・チェックサムが導入されました。
  • 非割り当てブロックをチェック時にスキップできるようになったことで、これまでより高速なファイルシステム・チェックが可能になりました。
  • パフォーマンスを向上させるとともにファイル・フラグメンテーションを削減することを目的とした、遅延割り当てとマルチブロック割り当てが導入されました。
  • タイムスタンプが変更されて、より詳細な粒度の新しい作成日が提供されるようになりました (このタイムスタンプを十分有用なものにするためには、その他多くのライブラリーやユーティリティーを最終的に更新する必要があります)。さらなるタイムスタンプの変更によって (タイムスタンプを符号付き 32 ビット整数型で保管していることで生じる) 2038年問題に対処しています。

XFS ファイルシステム

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

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

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

vfat ファイルシステム

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

ReiserFS ファイルシステム

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

Btrfs ファイルシステム

Btrfs (B 木ファイルシステム) は当初、Oracle によって開発された後、現在は GPL ライセンスの下で使用できるようになっています (「参考文献」を参照)。Btrfs は、高度な機能を実装することを目的とする一方で、耐障害性、修理、そして容易な管理に重点を置いた、Linux 向けの新しいコピー・オン・ライト・ファイルシステムです。Btrfs ファイルシステムのコードは、2009年にリリースされたカーネル 2.6.29 以降、メインライン・カーネルに組み込まれています。特にこのファイルシステムは、大規模なファイルを効率的に扱うとともに、複数の機器に分散されたファイルシステムに対処するように設計されています。設計目標のなかには、以下の項目が含まれています。

  • 大規模なファイル・サイズ (最大 2^64 バイト) への対応
  • データおよびメタデータに対するチェックサムの導入
  • 複数の機器に対する統合サポート
  • SSD への対応
  • 効率的なインクリメンタル・バックアップ
  • データ完全性の確保
  • コピー・オン・ライトはデータを上書きしないため、ハードウェアの障害によってデータが一貫性のない状態にならないこと

ほとんどの新しいファイルシステムと同様に、ユーザーが重要なデータをこのファイルシステムにコミットするのに十分な安定性をこのシステムが得るには長い時間がかかるため、大部分の Linux ディストリビューションで、このファイルシステムはまだメインライン・ファイルシステムにはなっていません。

ext3 ファイルシステムは成熟度が高く、多くのディストリビューションでデフォルト・ファイルシステムとして使用されていました。現在、ext4 ファイルシステムは、Red Hat Enterprise Linux 6、Fedora 17、Ubuntu 12.10 といったディストリビューションを始めとする、いくつかのディストリビューションのデフォルト・ファイルシステムとして ext3 ファイルシステムを置き換えています。ReiserFS ファイルシステムも長年、SUSE を含めた一部のディストリビューションでデフォルトとして使用されてきましたが、現在は広く使用されてはいません。


ファイルシステムの作成

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

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

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

上記のようにさまざまな形のコマンドがありますが、例えば mke2fs、mkfs.ext2、および mkfs.ext3 ファイルはどれも同じファイルである一方、mkfs.msdos と mkfs.vfat は一般に mkdosfs へのシンボリック・リンクであることがわかるはずです。システムをブートするために必要となるファイルシステムは、通常はハード・リンクを使用することで、同じファイルに対して異なる名前を提供します。Linux で / ファイルシステムとして使用できないファイルシステム (vfat や msdos など) では、代わりにシンボリック・リンクを使用することができます。チュートリアル「Linux の 101 試験対策: ハード・リンクとシンボリック・リンクの作成および変更」では、こうしたさまざまな種類のリンクについて詳しく説明しています。

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

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

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

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

リスト 21. ext3 ファイルシステムを作成する
[root@attic4-cent ~]# mkfs -t ext3 /dev/sdc3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 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 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

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

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

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

リスト 22. blkid を使って UUID を表示する
[ian@attic4-cent ~]$ blkid /dev/sdc3
/dev/sdc3: UUID="05efd400-c689-4205-a53a-e8b009eb5a55" SEC_TYPE="ext2" TYPE="ext3"

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

ここで新しいパーティション /dev/sdc4 に ext4 ファイルシステムを作成してみましょう。mkfs-L オプションを指定することでパーティションにラベルを付け、前のセクションで ext3 パーティションに対して行ったように、blkid コマンドを使って GUID を表示します。リスト 23 にこの様子を示します。

リスト 23. ext4 パーティションを作成する
[root@attic4-cent ~]# mkfs -t ext4 -L IAN-GPT-EXT4 /dev/sdc4
mke2fs 1.41.12 (17-May-2010)
Filesystem label=IAN-GPT-EXT4
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
2424832 inodes, 9681152 blocks
484057 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
296 block groups
32768 blocks per group, 32768 fragments per group
8192 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 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@attic4-cent ~]# blkid /dev/sdc4
/dev/sdc4: LABEL="IAN-GPT-EXT4" UUID="f69e0b28-beda-4255-ad5a-4d73672ac9e4" TYPE="ext4"

mkfs 出力の先頭行では、ext4 ファイルシステムを作成するための作業が mke2fs によって行われていることが確認されることに注目してください。

ext4 パーティションを作成する際に指定することが可能なすべてのパラメーターを確認するには、mkfs.ext4 の man ページを調べてください。

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

今度は、ext3 としてフォーマットしたパーティション /dev/sdc3 を、XFS ファイルシステムを使用してフォーマットしてみましょう。XFS と一緒に SELinux (Security Enhanced Linux) を使用している場合は、-i パラメーターを使用して、デフォルトの 256 よりも大きな i ノードを指定してください。推奨される値は 512 です。このようにする理由は、デフォルト・サイズの 256 バイトは SELinux XATTR には十分な大きさではないため、別のノードに保管しなければならなくなるからです。XFS フォーマッターは、パーティションで認識済みのファイルシステムを検出すると、それをユーザーに通知することに注意してください。また、UUID は XFS フォーマットによって割り当て直されている点にも注意が必要です。

リスト 24. XFS ファイルシステムを作成する
[root@attic4-cent ~]# mkfs -t xfs -i size=512 /dev/sdc3
mkfs.xfs: /dev/sdc3 appears to contain an existing filesystem (ext3).
mkfs.xfs: Use the -f option to force overwrite.
[root@attic4-cent ~]# mkfs -t xfs -i size=512 -f /dev/sdc3
meta-data=/dev/sdc3              isize=512    agcount=16, agsize=655360 blks
         =                       sectsz=4096  attr=2, projid32bit=0
data     =                       bsize=4096   blocks=10485760, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@attic4-cent ~]# blkid /dev/sdc3
/dev/sdc3: UUID="16df203e-7ee8-4604-b65f-1a490e9a2f8c" TYPE="xfs"

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

リスト 25. vfat ファイルシステムを作成する
[root@attic4-cent ~]# mkfs -t vfat /dev/sda3
mkfs.vfat 3.0.9 (31 Jan 2010)
[root@attic4-cent ~]# blkid /dev/sda3
/dev/sda3: SEC_TYPE="msdos" UUID="8856-9AA8" TYPE="vfat"

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

最後に取り上げるファイルシステムとして、リスト 26 に示すように Btrfs ファイルシステムを使用して GPT パーティションをフォーマットします。

リスト 26. Btrfs ファイルシステムを作成する
[root@attic4-cent ~]# mkfs -t btrfs /dev/sdc5

WARNING! - Btrfs Btrfs v0.20-rc1 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on /dev/sdc5
	nodesize 4096 leafsize 4096 sectorsize 4096 size 37.25GB
Btrfs Btrfs v0.20-rc1

mkfs.btrfs の man ページを調べれば、使用可能なオプションについての詳細を知ることができることは、ここまで読み進めてきた皆さんはおわかりのはずです。


スワップ領域の作成

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

リスト 27. スワップ領域を作成する
[root@attic4-cent ~]# mkswap /dev/sdc2
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=34ec5a36-08a4-458f-bb6e-a62800716211

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

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


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

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

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

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

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

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

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

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

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

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

Linux の論理ボリューム・マネージャー (LVM) を使用すると、複数の物理ストレージ・デバイスを 1 つのボリューム・グループに統合することができます。例えば、対象とするファイルシステムに十分な大きさの連続した領域を見つけ出す代わりに、既存のボリューム・グループにパーティションを追加することも可能です。チュートリアル「Linux の 101 試験対策: ハード・ディスクのレイアウト」には、さらに詳しい情報と、LVM を使用してファイルシステムを作成する例が示されています。Btrfs も複数のボリュームをサポートしていることに注意してください。

RAID

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

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

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

現在 IBM エンタープライズ・サーバーで使用されている IBM のジャーナル・ファイル・システム (JFS) は、高スループットのサーバー環境向けに設計されているファイルシステムです。このファイルシステムは Linux にも対応し、複数のディストリビューションに組み込まれています。そして 64 ビット・カーネルと大きなファイルに対応するように設計された、新たに機能強化されたジャーナル・ファイル・システム (JFS2) があります。JFS2 は IBM の AIX 5.1 オペレーティング・システムで導入されました。初期の JFS は、現在では JFS1 と呼ばれることもあります。JFS ファイルシステムを作成するには、mkfs.jfs コマンドを使います。JFS サポートを得るには、jfsutils パッケージをインストールする必要があるかもしれません。

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

これで、パーティションとファイルシステムの作成に関する概要の説明は終わりです。

参考文献

学ぶために

  • developerWorks Premium のメンバーになると、強力なツールや Safari Books Online から集めて管理する技術ライブラリーをすべて自由に利用できるほか、カンファレンスの割引を受けることや、カンファレンスの記録を閲覧することができ、さらには SoftLayer や Bluemix を利用できるクレジットが提供されるなど、さまざまな特典があります。
  • 2015年 4月時点での LPI のバージョン 4.0 の試験項目に基づく LPIC-1 認定に備えて勉強するのに役立つ developerWorks のチュートリアルを見つけるには、developerWorks の LPIC-1 ロードマップを利用してください。
  • Linux Professional Institute の Web サイトで、LPIC の詳細な試験項目、課題のリスト、例題を調べてください。特に以下のページを参照してください。 必ず Linux Professional Institute の Web サイトで最新の項目を参照してください。
  • FHS (Filesystem Hierarchy Standard) のホームにアクセスしてください。
  • LSB (Linux Standard Base) について学んでください。LSB は、標準バイナリー・オペレーティング環境の開発を目的とする FSG (Free Standards Group) プロジェクトです。
  • ext4 の徹底調査」で ext4 について学んでください。
  • Btrfs ファイルシステム (B-tree file system) について学んでください。
  • ReiserFS の後継である Reiser4 ファイルシステムについて学んでください。
  • The Linux Documentation Project には、HOWTO 文書をはじめ、各種の有益な文書が豊富に揃っています。
  • さまざまな IBM 製品や IT 業界のトピックに焦点を絞った developerWorks テクニカル・イベントで最新の技術情報を入手してください。
  • Twitter で developerWorks をフォローしてください。

議論するために

  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、Wiki を調べることができます。

コメント

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, Open source
ArticleID=1030073
ArticleTitle=Linux の 101 試験対策: パーティションおよびファイルシステムの作成
publish-date=04212016