Linuxコマンドについて学ぶ - fdisk

fdisk - Linux用のパーティションテーブルマニピュレータ

シノプシス

fdisk [-u] [-b セクタス ] [-C cyls ] [-H heads ] [-S sects ] デバイス

fdisk -l [-u] [ device ... ]

fdisk -s パーティション...

fdisk -v

説明

ハードディスクは、 パーティションと呼ばれる1つまたは複数の論理ディスクに分割できます。 この分割は、ディスクのセクタ0にあるパーティションテーブルに記述されています

BSDの世界では、 `disk slices 'と` disklabel'について語っています。

Linuxには少なくとも1つのパーティション、つまりルートファイルシステムが必要です。 スワップファイルやスワップパーティションを使用できますが、後者の方が効率的です。 ですから、通常はスワップパーティションとして専用の2番目のLinuxパーティションが必要です。 インテル互換のハードウェアでは、 システムを起動するBIOSは 、しばしばディスクの最初の1024シリンダにしかアクセスできません。 このため、大容量のディスクを使用する人は、ブート時に必要なカーネルイメージといくつかの補助ファイルを格納するために、通常は/ bootにマウントされたわずか3 MBのパーティションを作成することがよくあります。 BIOSにアクセスできます。 最低限のパーティション数以上を使用するセキュリティ、管理の容易さ、バックアップ、テストの理由があるかもしれません。

印刷問題を解決し、印刷キュー管理ソフトウェアで時間を節約する。

fdisk (最初の呼び出し形式)は、パーティションテーブルの作成と操作のためのメニュー駆動型プログラムです。 これは、DOSタイプのパーティションテーブルとBSDまたはSUNタイプのディスクラベルを認識します。

通常、 デバイスは次のいずれかです。

/ dev / hda / dev / hdb / dev / sda / dev / sdb

(IDEディスクの場合は/ dev / hd [ah]、SCSIディスクの場合は/ dev / sd [ap]、ESDIディスクの場合は/ dev / ed [ad]、XTディスクの場合は/ dev / xd [ab])。 デバイス名は、ディスク全体を指します。

パーティションは、 デバイス名とそれに続くパーティション番号です。 たとえば、 / dev / hda1は、システム内の最初のIDEハードディスクの最初のパーティションです。 ディスクには最大15個のパーティションがあります。 /usr/src/linux/Documentation/devices.txtも参照してください

BSD / SUNタイプのディスクラベルは8つのパーティションを記述することができ、そのうち3つ目は `ディスク全体のパーティション 'でなければなりません。 シリンダ0の最初のセクタ(スワップパーティションのような)を実際に使用するパーティションは、ディスクラベルを破壊するので、起動しないでください。

IRIX / SGIタイプのディスクラベルは16個のパーティションを記述することができ、11番目のパーティションは `volume 'パーティション全体でなければなりません.9番目のパーティションには` volume header'というラベルを付ける必要があります。 ボリュームヘッダーはパーティションテーブルもカバーします。つまり、ブロック0から始まり、デフォルトで5つのシリンダーにわたって拡張されます。 ボリュームヘッダ内の残りのスペースは、ヘッダディレクトリエントリによって使用されてもよい。 ボリュームヘッダーと重複するパーティションはありません。 また、パーティションテーブルを失うので、そのタイプを変更したり、ファイルシステムを作成したりしないでください。 このタイプのラベルは、IRIX / SGIマシンのLinux、またはLinuxのIRIX / SGIディスクで作業する場合にのみ使用してください。

DOS タイプのパーティションテーブルでは、パーティション数を無制限に記述できます。 セクタ0には、4つのパーティション(「プライマリ」と呼ばれます)の記述の余地があります。 これらのうちの1つは拡張パーティションです。 これは論理区画を保持するボックスであり、それぞれが対応する論理区画に先行するセクターのリンクされたリスト内に見出される記述子を有する。 存在するかどうかに関わらず、4つのプライマリパーティションには番号1〜4が割り当てられます。 論理区画は5から番号付けを開始します。

DOSタイプのパーティションテーブルでは、開始オフセットと各パーティションのサイズはセクタの絶対数(32ビットで与えられる)とシリンダ/ヘッド/セクショントリプル(10 + 8 + 6で与えられる)ビット)。 前者はOKです.512バイトのセクタでは2 TBまで動作します。 後者には2つの異なる問題があります。 まず、これらのC / H / Sフィールドは、ヘッド数および1トラック当たりのセクタ数が分かっているときにのみ充填することができる。 第二に、たとえこれらの数字が何であるべきかを知っていても、利用可能な24ビットで十分ではありません。 DOSはC / H / Sのみを使用し、 Windowsは両方を使用し、LinuxはC / H / Sを使用しません。

可能であれば、 fdiskは自動的にディスクジオメトリを取得します。 これは必ずしも物理ディスクのジオメトリではありません(実際のところ現代のディスクには物理的なジオメトリのようなものはありませんが、シンプルなシリンダー/ヘッド/セクタ形式で記述できるものではありません)が、MS-DOSが使用するディスクジオメトリパーティションテーブル用。

通常はすべてデフォルトで正常に動作し、Linuxがディスク上の唯一のシステムであれば問題はありません。 ただし、ディスクを他のオペレーティングシステムと共有する必要がある場合は、別のオペレーティングシステムのfdiskに少なくとも1つのパーティションを作成させることをお勧めします。 Linuxが起動すると、パーティションテーブルが表示され、他のシステムとの良好な連携に必要な(偽の)ジオメトリを推測しようとします。

パーティションテーブルが印刷されるたびに、パーティションテーブルエントリに対して整合性チェックが実行されます。 このチェックは、物理的および論理的な開始点と終了点が同一であること、およびパーティションがシリンダ境界(最初のパーティションを除く)で開始および終了することを確認します。

MS-DOSのいくつかのバージョンは、シリンダ境界ではなく、最初のシリンダのセクタ2で開始する最初のパーティションを作成します。 シリンダー1で始まる区画はシリンダー境界で始めることはできませんが、マシンにOS / 2がなければ問題は起こりにくいでしょう。

パーティションテーブルが更新されたときに終了する前に、sync()とBLKRRPART ioctl()(ディスクからの再読み込みパーティションテーブル)が実行されます。 以前は、fdiskの使用後にリブートする必要がありました。 私はもうこれが当てはまるとは思わない - 確かに再起動すると、まだ書かれていないデータが失われる可能性がある。 カーネルとディスクハードウェアの両方がデータをバッファリングできることに注意してください。

Dos 6.x警告

DOS 6.xのFORMATコマンドは、パーティションのデータ領域の最初のセクタ内の情報を検索し、この情報をパーティションテーブルの情報よりも信頼できるものとして扱います。 DOS FORMATは、サイズの変更が発生するたびにDOS FDISKがパーティションのデータ領域の最初の512バイトをクリアすることを想定しています。 / Uフラグが指定されていても、DOS FORMATはこの余分な情報を調べます - これはDOS FORMATとDOS FDISKのバグです。

要点は、cfdiskまたはfdiskを使用してDOSパーティションテーブルエントリのサイズを変更する場合、DOS FORMATを使用してパーティションをフォーマットする前に、そのパーティションの最初の512バイトをゼロにする必要があるということです。 たとえば、cfdiskを使用して/ dev / hda1のDOSパーティションテーブルエントリを作成していた場合(fdiskまたはcfdiskを終了し、パーティションテーブル情報が有効になるようにLinuxをリブートした後)、 "dd if = / dev / hda1 bs = 512 count = 1 "に設定して、パーティションの最初の512 バイトをゼロにします

小さな誤植でディスク上のすべてのデータを無駄にする可能性があるので、 ddコマンドを使用すると非常に注意してください。

最良の結果を得るには、OS固有のパーティションテーブルプログラムを常に使用する必要があります。 たとえば、DOS FDISKプログラムを使用してDOSパーティションを作成し、Linux fdiskまたはLinux cfdiskプログラムを使用してLinuxパーティションを作成する必要があります。

オプション

-b セクタス

ディスクのセクタサイズを指定します。 有効な値は512、1024、または2048です(最近のカーネルはセクタサイズを知っています。これは古いカーネルでのみ使用するか、カーネルのアイデアを上書きします)。

-C cyls

ディスクのシリンダ数を指定します。 なぜ誰かがそうしたいと思うのか分かりません。

-H ヘッド

ディスクのヘッド数を指定します。 (物理番号ではなく、もちろん、パーティションテーブルに使用される番号です。)合理的な値は255と16です。

-S 宗派

ディスクの1トラックあたりのセクタ数を指定します。 (物理番号ではなく、もちろん、パーティションテーブルに使用される番号です。)妥当な値は63です。

-l

指定したデバイスのパーティションテーブルを一覧表示して終了します。 デバイスが指定されていない場合は、 / proc / partitionsに記述されているデバイス(存在する場合)が使用されます。

-u

パーティションテーブルを表示するときは、シリンダーではなくセクターでサイズを指定します。

-s パーティション

パーティションのサイズ (ブロック単位)は、標準出力に表示されます。

-v

fdiskプログラムのバージョン番号を表示して終了します。