Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

       fdisk - ディスクのパーティションテーブルを操作する

書式

       fdisk [options] device

       fdisk -l [device...]

説明

       fdisk  は、パーティションテーブルの作成と操作を行う対話方式のプログラムである。  この fdisk は、GPT, MBR,
       Sun, SGI, BSD のパーティションテーブルを理解することができる。

       ブロックデバイスは、パーティションと呼ばれる 1 個以上の論理ディスクに分割することができる。この分割に関す
       る情報は、通常ディスクのセクタ 0 に存在するパーティションテーブルに記録される。(BSD の世界では、 「ディス
       クスライス」とか「ディスクラベル」という言い方をする。)

       [訳注]  このマニュアルでは、「パーティションテーブル」と「ディスクラベル」の両方を、 ほぼ同じ意味で、混ぜ
               て使っている。強いて言えば、Linux  や  DOS  (GPT や MBR) については「パーティションテーブル」を使
               い、他の  OS   の場合も含めて、より一般的に言うときは「ディスクラベル」を使うようにしているらしい
               が、 必ずしもそうとは言えないところもある。

       すべてのパーティション分割は、デフォルトではデバイスの I/O リミット (I/O トポロジーとも言う) に基づいて行
       われる。そのため fdisk は、4K-sector のサイズにふさわしくディスクレイアウトを最適化したり、MBR や GPT  の
       ために最近のデバイスで開始点や終了点のオフセットを適切な値に揃えたりできるのである。 だから、デフォルトの
       値に (たとえば、パーティションの最初や最後のセクタの値に) fdisk  の提示するデフォルトを使うのは、いつだっ
       て賢明なことである。 また、パーティションのサイズを +/-<size>{M,G,...} の表記で指定すれば、必ずデバイスの
       プロパティに合わせて大きさが調整されることになる。

       [訳注]  util-linux 所収の blkid(8) の man によれば、blkid -i device で「I/O Limits (aka I/O topology)  の
               情報を表示する」ことになっている。そこで、それを実行すると、MINIMUM_IO_SIZE,
               PHYSICAL_SECTOR_SIZE, LOGICAL_SECTOR_SIZE が表示された。I/O  リミットとは、そうしたもののことなの
               だろう。特に、PHYSICAL_SECTOR_SIZE が重要なようだ。「I/O 境界」「I/O 制約」と訳せるかもしれない。

       CHS    (Cylinder-Head-Sector)    アドレシングは非推奨であり、デフォルトでは使用されない。だから、SSD   や
       4K-sector のデバイスを使うときは、"fdisk -S <n> -H <n>"  といったアドバイスのある古い記事や助言には、どう
       か従わないでいただきたい。

       なお、ディスクレイアウトを表示するスクリプトのためには、partx(8) が豊富なインターフェースを提供している。
       fdisk の方は、主として人間が使うことを想定しているのである。fdisk  は、出力については後方互換を保証してい
       ない。入力 (コマンド) については、どれも後方互換のはずである。

オプション

       -b, --sector-size sectorsize
              ディスクのセクタサイズを指定する。有効な値は、512,  1024, 2048, 4096 である。(最近のカーネルはセク
              タサイズの情報を持っている。 このオプションを使うのは、カーネルが古い場合や、 カーネルの持っている
              情報を変更したい場合のみにすること。)  util-linux-2.17 以来 fdisk は、論理セクタサイズと物理セクタ
              サイズを区別している。 このオプションは、両方のセクタサイズを sectorsize に変更する。

       -B, --protect-boot
              新しいディスクラベルを作成するとき、ディスクの最初のセクタの先頭部分を消去しない。 この機能は、GPT
              と MBR に対してサポートされている。

       -c, --compatibility[=mode]
              互換モードが  'dos'  か  'nondos'  か指定する。デフォルトは、non-DOS  モードである。後方互換のため
              に、このオプションは、引き数の  mode  なしで使うこともできる。その場合は、デフォルトが使用される。
              気を付けてほしいのは、オプションの -c と、指定が任意の引き数 mode との間を空白で区切ってはいけない
              ことだ。正しい書式は、たとえば '-c=dos' である。

       -h, --help
              ヘルプテキストを表示して終了する。

       -L, --color[=when]
              出力をカラー表示にする。指定が任意の引き数 when には、auto, never, always が使える。引き数 when を
              省略すると、デフォルトの  auto になる。カラー表示は無効にすることもできる。 プログラムに埋め込まれ
              た現在のデフォルトが有効か無効かを知りたければ、--help  の出力を見ればよい。「カラー表示」セクショ
              ンも参照していただきたい。

       -l, --list
              指定されたデバイスのパーティションテーブルを一覧表示して、終了する。    デバイスをひとつも指定しな
              かった場合は、 /proc/partitions というファイルが存在するなら、そこに記載されているデバイスを対象に
              する。

       -o, --output list
              どの出力項目  (columns) を表示するかを指定する。サポートされている全項目のリストを知るには、--help
              オプションを使用すればよい。

              list+list という書式で指定すれば、デフォルトのリストに項目を追加することができる (たとえば  -o
              +UUID のように)。

       -s, --getsz
              指定した各ブロックデバイスについて  512-byte  セクタでサイズを表示する。このオプションは非推奨であ
              り、blockdev(8) を使った方がよい。(訳注: 実のところ、手元の v2.35.2 の  fdisk  -s  では、1  セクタ
              1024 バイト計算のセクタ数を表示する。blockdev --getsz の方は 1 セクタ 512 バイトのセクタ数。)

       -t, --type type
              指定したタイプ  (type) のディスクラベルに対してのみサポートを有効にし、 ほかのすべてのタイプに対す
              るサポートは無効にする。

       -u, --units[=unit]
              パーティションテーブルの一覧表示をするとき、  「セクタ数」または「シリンダ数」でサイズを表示する。
              デフォルトは、セクタ数でのサイズ表示である。後方互換を考慮して、このオプションは、 unit 引き数なし
              でも使えるようになっている。その場合は、デフォルトが使用される。  気を付けてほしいのは、オプション
              の  -u  と、指定が任意の引き数  unit  との間を空白で区切ってはいけないことだ。すなわち、正しい書式
              は、たとえば '-u=cylinders' である。

       -C, --cylinders number
              ディスクのシリンダ数を指定する。 どうしてそんなことをしたがるのか、筆者にはさっぱりわからないが。

       -H, --heads number
              ディスクのヘッド数を指定する  (もちろん、物理的なヘッド数ではなく、   パーティションテーブルで使う
              ヘッド数である)。 妥当な値は、255 または 16 である。

       -S, --sectors number
              ディスクの  1 トラックあたりのセクタ数を指定する (もちろん、物理的なセクタ数ではなく、パーティショ
              ンテーブルで使うセクタ数である)。 妥当な値は、63 である。

       -w, --wipe when
              デバイスからファイルシステムや RAID やパーティションテーブルのシグナチャーを消去する (訳注: 前から
              存在する古いシグナチャーを消去するということだろう)。衝突 (collision) が起きないようにするためであ
              る。引き数の when には、auto, never, always が使える。このオプションが指定されない場合のデフォルト
              は、auto であり、その場合シグナチャーが消去されるのは、対話モードのときだけである。 いずれの場合で
              も、新しいパーティションテーブルが作成される前に、検出されたシグナチャーが、  警告メッセージとして
              通知される。wipefs(8) コマンドの説明もご覧いただきたい。

       -W, --wipe-partition when
              新たに作成するパーティションからファイルシステムや RAID やパーティションテーブルのシグナチャーを消
              去する (訳注: 前から存在する古いシグナチャーを消去するということだろう)。衝突 (collision) が起きな
              いようにするためである。引き数の  when には、auto, never, alwaysが使える。このオプションが指定され
              ない場合のデフォルトは、  auto  であり、その場合シグナチャーが消去されるのは、対話モードのときだけ
              で、 それもユーザが承認した後である。 いずれの場合でも、新しいパーティションが作成される前に、検出
              されたシグナチャーが、  警告メッセージとして通知される。wipefs(8)   コマンドの説明もご覧いただきた
              い。

       -V, --version
              バージョン情報を表示して終了する。

デバイス

       「デバイス」は普通、/dev/sda, /dev/sdb などである。デバイス名は、ディスク全体を指している。libata (ATA ホ
       ストコントローラーと ATA デバイスをサポートするために Linux カーネルの内部で使われるライブラリ)  の存在し
       ない古いシステムでは、IDE  と  SCSI のディスクを区別している。そうした場合は、デバイス名が /dev/hd* (IDE)
       や /dev/sd* (SCSI) になるだろう。

       「パーティション」は、デバイス名の後ろにパーティション番号が付いたものだ。 たとえば、/dev/sda1 は、そのシ
       ステムの最初のハードディスクの最初のパーティションである。      Linux      kernel      文書     (この場合
       は、Documentation/admin-guide/devices.txt というファイル) もご覧になっていただきたい。

サイズ

       "Last      sector      (最終セクタ)"       という問い合わせに対しては、パーティションサイズをセクタ数でも
       +/-<size>{K,B,M,G,...} という表記でも指定できる。

       [訳注]  デフォルトでは、最終セクタ番号を指定するようになっている。 サイズを、バイト数ではなく、セクタの数
               で指定する +/-<セクタ数> という指定法もある。

       サイズの前に '+' を付けると、そのパーティションの最初のセクタからの相対的なサイズと解釈される。  サイズの
       前に '-' を付けた場合は、最大位置 (そのパーティションのために利用できる最後のセクタ) からのサイズになる。

       サイズをバイト数で指定する場合は、数字の後に KiB=1024, MiB=1024*1024 のような乗数を表す接尾辞を付けること
       ができる。GiB, TiB, PiB, EiB,  ZiB,  YiB  も同様に使える。"iB"  を続けるのは任意であり、たとえば、"K"  は
       "KiB" と同じ意味である。

       相対的なサイズは、必ずデバイスの I/O リミットに合わせて大きさが調整される。 +/-<size>{K,B,M,G,...} という
       この表記法をお勧めする所以である。

       後方互換のため、fdisk は KB=1000, MB=1000*1000 といった接尾辞も解する。 GB, TB, PB, EB, ZB, YB も同様に使
       える。ただし、こういった 10^N を表す接尾時は非推奨である。

スクリプトファイル

       fdisk  では、sfdisk 互換のスクリプトファイルを読み込むことができる ('I' コマンドを使用する)。スクリプトは
       メモリ中のパーティションテーブルに適用されるので、 そのパーティションテーブルに変更を加えてから、それをデ
       バイスに書き出すことが可能である。

       また逆に、現在メモリ中にあるディスクレイアウトを、'O'  コマンドを使って、スクリプトファイルに書き出すこと
       もできる。

       こうしたスクリプトファイルは、cfdisk,  sfdisk,  fdisk  などの  libfdisk  アプリケーションの間で互換性があ
       る。より詳しいことは、sfdisk をご覧いただきたい。

ディスクラベル

       GPT (GUID Partition Table)
              GPT  は、パーティションテーブルのレイアウトについての最近の規格である。 GPT は、各パーティションに
              対して、64 ビットの論理ブロックアドレス、チェックサム、 UUID、それに、どんなパーティションかを示す
              名前を使用する。  また、パーティションの数に制限がない (とは言え、パーティショニングツールの多くで
              は、パーティション数の上限をたいてい 128 にしている)。

              [訳注]  ここで言う「どんなパーティションかを示す名前」は、fdisk -l -o +Name を実行すると (存在すれ
                      ば) 表示される、簡単なパーティションの説明のことだろう。"EFI system partition" とか "Basic
                      data partition" のようなものである。 sfdisk--part-label オプションの説明や、  「入力の
                      書式」セクションのフィールド名の説明もご覧になっていただきたい。

              なお、GPT  の仕様では、今でも最初のセクタが  protective MBR のために留保されている。MBR 専用のパー
              ティショニングツールが、誤認識して GPT ディスクを上書きしてしまうのを防ぐためである。

              GPT は、MBR より常によい選択である。UEFI  のブートローダーを持つ最近のハードウェアでは、なおさらの
              ことだ。

       DOS-type (MBR)
              DOS 形式のパーティションテーブルは、記述できるパーシションの数に上限がない。 セクタ 0 には、4 パー
              ティションを記述する余地がある (これらは基本パーティションと呼ばれる)。 そのうちのひとつは拡張パー
              ティションにすることができる。  これは、言わば、論理パーティションを入れる容器であり、セクタの連鎖
              リストの形になっている記述子 (descriptors)  が、それぞれの対応する論理パーティションの前に付いてい
              る。  4 個の基本パーティションは、存在する、しないにかかわらず、1-4 の番号を取る。論理パーティショ
              ンの番号は、5 から始まる。

              DOS 形式のパーティションテーブルでは、各パーティションの開始オフセットとサイズは、  二つの方法で記
              録される。すなわち、セクタの絶対数    (32   ビットで指定される)   と、シリンダ数/ヘッド数/セクタ数
              (C/H/S) の三つ組としてである (10+8+6 ビットで指定される)。前者には問題がない。512-byte  セクタで最
              大  2 TB まで表現できる。後者には二つの問題がある。第一に、こうした C/H/S のフィールドを埋めること
              ができるのは、ヘッド数や 1 トラックあたりのセクタ数が分かっているときだけだ。 第二には、そうした数
              値の妥当な値が分かっている場合でも、利用できる  24  ビットでは十分ではない。DOS  は C/H/S のみを使
              い、Windows は両方を使う。Linux は C/H/S を全く使わない。C/H/S  方式のアドレス指定は非推奨である。
              fdisk の将来のバージョンではサポートされないかもしれない。

              DOS  互換のパーティションを作成したいなら、「DOS モード ...セクションをお読みになるとよいfdisk
              はデフォルトでは、シリンダ境界に留意しない。

       BSD/Sun-type
              BSD/Sun 形式のディスクラベルは、8 個のパーティションを記述できる。そのうちの 3  番目は、ディスク全
              体を表すパーティションになるはずだ。  パーティションが (スワップパーティションのように) その最初の
              セクタを実際に使用する場合には、そのパーティションをシリンダ 0  から始めてはいけない。ディスクラベ
              ルを破壊することになるからである。  なお、BSD  ラベル  は、通常 DOS パーティションの中にネストされ
              る。

       IRIX/SGI-type
              IRIX/SGI 形式のディスクラベルは、16 個のパーティションを記述できる。そのうちの 11 番目は、ボリュー
              ム全体を表すパーティションであり、 9 番目は、ボリュームヘッダと名付けられるはずだ。 このボリューム
              ヘッダには、パーティションテーブルも含まれることになる。 すなわち、ブロック 0 から始まって、デフォ
              ルトでは 5 シリンダ分を占めるのである。ボリュームヘッダの残りのスペースは、 ヘッダのディレクトリエ
              ントリ用に使用することができる。  どのパーティションも、ボリュームヘッダと重なってはいけない。  ま
              た、ボリュームヘッダのパーティションタイプを変更してはならないし、  そこにファイルシステムを作って
              もいけない。    パーティションテーブルがなくなってしまうからである。このタイプのラベルを使うのは、
              IRIX/SGI マシンで Linux を動かすときか、Linux の元で IRIX/SGI のディスクを扱うときだけにするべきで
              ある。

       パーティションテーブルが更新されたときは、プログラムを終了する前に、 sync() と ioctl(BLKRRPART) (ディスク
       からパーティションテーブルを再読み込みする) が実行される。

DOS モードと DOS 6.x に関する警告

       ご注意いただきたいが、このセクションで述べることの全てが非推奨である。   最近のオペレーティングシステムで
       は、ジオメトリやシリンダ数といったことに気を使う必要はない。 それでも、本当に DOS  互換のパーティション分
       割をなさりたいのならば、fdisk  のコマンドラインオプション  '-c=dos  -u=cylinders' を使用して DOS モードと
       cylinder 単位を有効にしなければならない。

       DOS 6.x の FORMAT コマンドは、パーティションのデータ領域の最初のセクタに、ある種の情報を探しに行き、 それ
       をパーティションテーブルの情報より信頼できるものとして扱う。また、DOS の FORMAT は、DOS の FDISK が、サイ
       ズの変更があったときには必ず、パーティションのデータ領域の最初の 512 バイトをクリアすることを当てにしてい
       る。DOS  の  FORMAT  は、/U  フラグが指定されたときでさえ、上記の追加情報を見に行こうとする。  我々として
       は、こうした振る舞いは、DOS の FORMAT や FDISK のバグだと思う。

       要するにこういうことだ。fdiskcfdisk を使って、パーティションテーブル上の DOS の領域のサイズを変更する
       場合には、DOS  の FORMAT でそのパーティションをフォーマットする前に、dd(1) コマンドを使って、そのパーティ
       ションの最初の 512 バイトを  0  で初期化することも行わなければならないのである。  たとえば、fdisk  を使っ
       て、パーティションテーブル中の  /dev/sda1  に DOS の領域を作成しているのならば、(fdisk を終了し、パーティ
       ションテーブルの情報が有効になるように Linux をリブートした後で)  "dd  if=/dev/zero  of=/dev/sda1  bs=512
       count=1"  というコマンドを実行して、そのパーティションの最初の  512 バイトを 0 で初期化することになるだろ
       う。

       通常 fdisk はディスクジオメトリを自動的に取得する。  それは必ずしも実際の物理的なディスクジオメトリとはか
       ぎらない (そうなのだ。最近のディスクには、物理的なジオメトリのようなものは実のところ存在しない。 「シリン
       ダ数/ヘッド数/セクタ数」といった単純化された形で記述できるようなものは、    確かに存在しないのだ)。それで
       も、MS-DOS がパーティションテーブルで使用するのは、このディスクジオメトリなのである。

       たいていの場合、デフォルトで万事うまく行くし、Linux  がディスク上の唯一のシステムなら、問題はまったく起き
       ない。 それでも、ディスクを他のオペレーティングシステムと共有しなければならないのなら、他の OS  の  FDISK
       でパーティションを少なくとも   1   つ作っておくのは、多くの場合、よい考えである。Linux   は、ブートすると
       き、パーティションテーブルを調べて、 他のシステムとうまくやって行くためには、どんな (見せかけの) ジオメト
       リが必要かを推測しようとと試みるからである。

       パーティションテーブルが  DOS モードで表示される際には、 パーティションテーブルの各領域について、整合性の
       チェックが必ず行われる。 このチェックは、物理開始点と論理開始点、物理終了点と論理終了点が同じかどうかと、
       各パーティションの開始点や終了点が、シリンダ境界と一致しているかどうかをチェックしている    (ただし後者の
       チェックでは、最初のパーティションは除外される)。

       MS-DOS のバージョンによっては、作成する最初のパーティションを、シリンダ境界ではなく、 先頭シリンダの第  2
       セクタから始めるものがある。   開始点が先頭シリンダ中にあるパーティションでは、  シリンダ境界からパーティ
       ションが始まるわけがないが (訳注: 何故なら、先頭シリンダの先頭には MBR  などがあるはずだから)、それが問題
       になることは、お手元のマシンに OS/2 も入っていないかぎり、まずないだろう。

       最善の結果を得るためには、必ずその OS に固有のパーティションテーブル作成プログラムを使うべきである。 たと
       えば、DOS のパーティションは、DOS の FDISK  プログラムで作り、Linux  のパーティションは、Linux  の  fdisk
       か cfdisk プログラムで作るべきなのだ。

カラー表示

       自動的なカラー表示は、/etc/terminal-colors.d/fdisk.disable という空ファイルを作ることで無効にできる。

       カラー表示の設定についてもっと詳しいことを知りたかったら、terminal-colors.d(5)  をご覧になるとよい。fdisk
       は、以下の論理カラー名をサポートしている。

       header 出力するパーティションテーブルのヘッダ。

       help-title
              ヘルプセクションのタイトル。

       warn   警告メッセージ。

       welcome
              ウェルカムメッセージ。

作者

       Karel Zak <kzak@redhat.com>
       Davidlohr Bueso <dave@gnu.org>

       最初のバージョンを書いたのは、Andries E. Brouwer, A. V. Le Blanc, その他の人たちだった。

環境変数

       FDISK_DEBUG=all
              fdisk のデバッグ出力を有効にする。

       LIBFDISK_DEBUG=all
              libfdisk デバッグ出力を有効にする。

       LIBBLKID_DEBUG=all
              libblkid デバッグ出力を有効にする。

       LIBSMARTCOLS_DEBUG=all
              libsmartcols デバッグ出力を有効にする。

       LIBSMARTCOLS_DEBUG_PADDING=on
              目に見える埋め文字 (padding  characters)  を使用する。LIBSMARTCOLS_DEBUG  を有効にしておく必要があ
              る。

関連項目

       cfdisk(8), mkfs(8), partx(8), sfdisk(8)

入手方法

       この      fdisk      コマンドは、util-linux      パッケージの一部であり、以下の      URL     から入手でき
       る。https://www.kernel.org/pub/linux/utils/util-linux/