SFDISK

Section: System Administration (8)
Updated: June 2015
Index Return to Main Contents
 

名前

sfdisk - ディスクパーティションテーブルの表示と操作を行う。  

書式

sfdisk [options] device [-N partition-number]

sfdisk [options] command  

説明

sfdisk はスクリプトベースのツールで、ブロックデバイスのパーティション操作が できる。

バージョン 2.26 から sfdisk は MBR (DOS), GPT, SUN, SGI ディスクラベルをサポートしているが、 CHS (Cylinder-Head-Sector) アドレス指定をサポートしなくなった。 CHS は Linux では重要でなくなっており、このアドレス指定の考え方は 新しいデバイスでは意味をなさなくなった。

sfdisk (バージョン 2.26 以降) は、相対サイズが指定された場合、 またはデフォルト値が使われた場合、またはサイズに乗数のサフィックス (例えば、MiB) が使われた場合、ブロックデバイスの I/O 制限に パーティションの開始と終了を揃える。 開始オフセットが厳密にセクタに指定され、かつパーティションサイズが相対値、 または乗数のサフィックスが指定された場合、調整のために、 パーティションサイズが最適化 (縮小または拡大) される。

推奨される方法は、開始オフセットを全く指定せず、 パーティションサイズを MiB, GiB (など) で指定することである。 この場合、sfdisk は全てのパーティションを ブロックデバイス I/O 制限に揃える (もしくは、I/O 制限がとても小さい場合、ディスクレイアウトを他でも 利用できるようにするため、メガバイト境界にされる)。 このデフォルトの挙動が望ましくない場合 (通常はとても小さいパーティションの場合)、 オフセットとサイズをセクタ数で指定する。 この場合、sfdisk は最適化をせずに指定された数値に完全に従う。

sfdisk は、 fdisk(8) のようには、SGI と SUN ディスクラベルに対して、 標準的なシステムパーティションを作成しない。 ディスクシステムパーティション全体を含むように、 明示的に全部のパーティションを作成する必要がある。

sfdisk は BLKRRPART (パーティションテーブルの再読み込み) ioctl を使い、 デバイスがシステムまたは他のツールで使われていないかを確かめる (--no-reread を参照)。 この機能または他の sfdisk の操作が、udevd と競合する可能性がある。 衝突の可能性を回避するのに推奨される方法は、デバイスアクセスを 直列化するために、ディスクデバイス全体に対して排他 flock を使うことである。 排他ロックを使うと、udevd がデバイスのイベントハンドリングをスキップする可能性がある。 例えば:

flock /dev/sdc sfdisk /dev/sdc

この使い方は MD と DM デバイスについての udevd ではサポートされていない。

 

コマンド

コマンドはどれか 1 つしか使用できない。
[-N partition-number] device
デフォルトの sfdisk コマンドは、 device について希望するパーティション分割の仕様を、標準入力から読み取り、 その仕様に従ってパーティションテーブルを作成する。 入力フォーマットの説明は下記を参照すること。 標準入力が端末の場合、sfdisk は対話型のセッションを開始する。

オプション -N が指定されると、 partition-number で指定されたパーティションに変更が適用される。 指定されないパーティションのフィールドは、変更されない。

使用されていないパーティションを -N で指定できる点に注意すること。 例えば、MBR は常に 4 つのパーティションを持ち、 使用されているパーティションの番号は、小さい方から使われる。 この場合、sfdisk は、-N で指定された使用されていないパーティションについて、 パーティションテーブルからのデフォルト値に従い、 組み込みのデフォルト値を使わない。 --append を参照すること。

-A, --activate device [partition-number...]
指定されたパーティションのブート可能フラグをオンにし、 指定されていない全てのパーティションのブート可能フラグをオフにする。 特別なプレースホルダー '-' はパーティション番号の代わりに使われ、 全てのパーティションのブート可能フラグをオフにする。

アクティブ化コマンドは、MBR と PMBR のみでサポートされている。 GPT ラベルが検出されると、sfdisk は警告を表示して、 自動的に PMBR に入る。

partition-number が指定されない場合、 有効化フラグの付いたパーティションのリストを表示する。

--delete device [partition-number...]
全てのパーティション、または指定されたパーティションを削除する。
-d, --dump device
sfdisk の入力として利用可能なフォーマットで、 デバイスのパーティションをダンプする。 パーティションテーブルのバックアップ のセクションを参照すること。
-g, --show-geometry [device...]
全てのパーティション、または指定されたパーティションのジオメトリを 表示する。 後方互換のため、推奨されないオプション --show-pt-geometry は、 このオプションと同じ意味を持つ。
-J, --json device
デバイスのパーティションを JSON フォーマットでダンプする。 sfdisk は JSON を入力フォーマットとして使えない点に注意すること。
-l, --list [device...]
全てのデバイス、または指定されたデバイスのパーティションを表示する。 このコマンドは、--verify とともに利用できる。
-F, --list-free [device...]
全てのデバイス、または指定されたデバイスのパーティション作成 されていない領域を表示する。
--part-attrs device partition-number [attributes]
GPT パーティション属性ビットを変更する。 attributes が指定されない場合、現状のパーティション設定が表示される。 attributes 引き数は、カンマ、またはスペース区切りのビットのリストである。 現状サポートされている属性ビットは以下の通り: RequiredPartition, NoBlockIOProtocol, LegacyBIOSBootable そして、GUID 固有ビットは 48 から 63 の範囲である。 例えば、"RequiredPartition,50,51" は 3 ビットを設定する。
--part-label device partition-number [label]
GPT パーティション名 (ラベル) を変更する。 label が指定されない場合、現在のパーティションラベルを表示する。
--part-type device partition-number [type]
パーティションタイプを変更する。 type が指定されない場合、現在のパーティションタイプを表示する。 type 引き数は、MBR については 16 進数であり、GPT については GUID である。 後方互換のため、オプション -c--id は、 このオプションと同じ意味を持つ。
--part-uuid device partition-number [uuid]
GPT パーティションの UUID を変更する。 uuid が指定されない場合、現在のパーティション UUID を表示する。
-r, --reorder device
パーティション番号を開始オフセットの順番に振りなおす。
-s, --show-size [device...]
全てのデバイス、または指定されたデバイスのサイズを、1024 バイトサイズを単位として表示する。 このコマンドは「推奨されず」、 blockdev(1) を使うべきである。
-T, --list-types
現在のディスクラベル、または --label で指定されたラベルについて、 全てのサポートされたタイプを表示する。
-V, --verify [device...]
パーティションテーブルとパーティションが正しく見えるかを テストする。

 

オプション

-a, --append
新しいパーティションテーブルを作成せず、指定したパーティションの 追加のみを行う。
-b, --backup
パーティション作成を開始する前に、現在のパーティションテーブル セクタをバックアップする。 デフォルトのバックアップファイル名は ~/sfdisk-<device>-<offset>.bak である。 他の名前を使う場合は、オプション -O, --backup-file を参照すること。
--color[=when]
出力をカラー表示する。 オプションの引き数 when は、 auto, never, always のいずれかである。 when 引き数が省略された場合、デフォルトは auto である。 カラー表示は無効化できる。 現在の組み込みのデフォルトは、--help の出力を参照すること。 カラー表示 セクションも参照すること。
-f, --force
全ての整合性チェックを無効化する。
--Linux
推奨されず、無視されるオプション。 Linux (と他の現代的な OS) と互換のパーティション作成は、デフォルトである。
-n, --no-act
デバイスに書き込む以外の全てを行う。
--no-reread
パーティションテーブルの再読み込み ioctl を使った、 デバイスが使用中か否かのチェックを行わない。
--no-tell-kernel
パーティションの変更をカーネルに知らせない。 このオプションは、使用されているディスクのパーティションを 変更する際に、--no-reread とともに使うことが推奨される。 変更されたパーティションは使用 (例えば、マウント) すべきではない。
-O, --backup-file path
デフォルトのバックアップファイル名を上書きする。 デバイス名とオフセットは常にファイル名に追加される点に注意すること。
--move-data[=path]
例えば、パーティションの始まりをディスク上で他の場所に移動する 場合などで、パーティションの再配置の後で、データを移動する。 パーティションのサイズは同じでなければならず、 新しい場所と古い場所は重なっても良い。 このオプションは特定の 1 つのパーティションのみを扱うために、 オプション -N が必要である。

path はデフォルトのログファイル名 (~/sfdisk-<devname>.move) を上書きする。 このログファイルは、パーティションデータの読み書き操作の情報を 保持する。

この操作は危険を伴い、アトミックでない点に注意すること。 データのバックアップを忘れないこと!

以下の例では、最初のコマンドは、最初のパーティションの前に 100MiB の 空き領域を作成し、最初のパーティションが保持するデータ (例えば、ファイルシステム) を移動する。 2 つ目のコマンドは空き領域に (オフセット 2048 で) 新しいパーティションを作成する。 最後のコマンドは、ディスクの順番に合うようにパーティションを 並べ直す (元の sdc1 は sdc2 になる)。

echo '+100M,' | sfdisk --move-data /dev/sdc -N 1
echo '2048,' | sfdisk /dev/sdc --append
sfdisk /dev/sdc --reorder

-o, --output list
どの列を表示するかを指定する。 サポートされている全ての列のリストを見るには、 --help を使うこと。

list を (例えば. -o +UUID のように) +list の形式で指定すると、デフォルトの列のリストを拡張できる。

-q, --quiet
余分な情報のメッセージを抑制する。
-u, --unit S
推奨されないオプション。 セクタ単位のみがサポートされる。 --show-size コマンドが使われた場合、このオプションはサポートされない。
-X, --label type
ディスクラベルタイプ (例えば、dos, gpt, ...) を指定する。 このオプションが指定されない場合、sfdisk は既存のラベルをデフォルトとするが、 デバイスにまだラベルがない場合、デフォルトは dos になる。 デフォルト、または現在のラベルはスクリプトヘッダ行 "label: <name>" で上書きできる。 オプション --label を指定した場合、 sfdisk は空のディスクラベルを作成しない (下記の 空のディスクラベル のセクションを参照すること)。
-Y, --label-nested type
入れ子の (nested) ディスクラベルを強制的に編集する。 プライマリディスクラベルが存在していなければならない。 このオプションは、例えば GPT を持つデバイス上の ハイブリッド/保護 MBR の編集を可能にする。

-w, --wipe when
衝突の可能性を避けるため、デバイスからファイルシステム、RAID、 パーティションテーブルシグネチャを消す。 引き数 whenauto, never, always のいずれかである。 このオプションが指定されない場合、デフォルトは auto であり、 シグネチャは対話モードでのみ消すことができる。 引き数 whennever でない場合、 新しいパーティションテーブルを作成する前に、 古いパーティションテーブルのシグネチャが常に消去される点が 例外である。 全ての場合で、新しいパーティションテーブルが作成される前に、 検出されたシグネチャは警告メッセージを出して報告される。 wipefs(8) コマンドも参照すること。

-W, --wipe-partitions when
衝突の可能性を避けるため、デバイスからファイルシステム、RAID、 パーティションテーブルシグネチャを消す。 引き数 whenauto, never, always のいずれかである。 このオプションが指定されない場合、デフォルトは auto であり、 シグネチャは対話モードでユーザーが確認した後にのみ 消すことができる。 全ての場合で、新しいパーティションテーブルが作成される前に、 検出されたシグネチャは警告メッセージを出して報告される。 wipefs(8) コマンドも参照すること。

-v, --version
バージョン情報を表示して、終了する。
-h, --help
ヘルプを表示して、終了する。

 

入力フォーマット

sfdisk は 2 つの入力フォーマットとジオメトリヘッダ行をサポートする。

ヘッダ行

オプションのヘッダ行は、パーティションテーブルに適用されるジオメトリ情報を指定する。 ヘッダ行の形式は以下の通り:

<name>: <value>

現在、認識できるヘッダは以下の通り:
unit
パーティション作成の単位を指定する。 サポートされている単位は、セクタ のみである。
label
パーティションテーブルタイプを指定する。 例えば、dos または gpt である。
label-id
パーティションテーブル識別子を指定する。 識別子は、MBR については (0x を前に付けた) 16 進数で、 GPT については MBR である。
first-lba
GPT パーティションの最初の利用可能なセクタを指定する。
last-lba
GPT パーティションの最後の利用可能なセクタを指定する。
table-length
GPT パーティションの最大数を指定する。
grain
パーティション配置を計算するために使われる 最小サイズをバイト単位で指定する。 デフォルトは 1MiB であり、デフォルトとして使うことが強く推奨される。 良く分からない場合は、この値を変更しないこと。

入力で指定される最初のパーティションの前に、 ヘッダ行を使うことが可能である点に注意すること。

無名フィールド形式

start size type bootable

ここで各行が 1 つのパーティションディスクリプターに対応する。

フィールドは、空白、カンマ、セミコロンで区切られ、 空白を続けることができる。 最初と最後の空白は無視される。 数値は 8 進数、10 進数、16 進数のいずれかであり、10 進数がデフォルトである。 フィールドがない場合、空白の場合、'-' が指定された場合、 デフォルト値が使われる。 (1 つのパーティションを変更する) -N オプションが指定された場合、 各フィールドのデフォルト値は、前の値である。

start のデフォルト値は、デバイスの I/O 制限に基づいて配置された、 最初のアサインされていないセクタである。 最初のパーティションのデフォルトの開始オフセットは、1 MiB である。 オフセットには乗数のサフィックス (KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB) を付けることができる。 数値はバイト単位のオフセットとして解釈される。

size のデフォルト値は「可能か限り大きく」を表す。 つまり、次のパーティションまで、またはデバイスの終わりまでである。 数値の引き数はデフォルトではセクタ数として解釈されるが、 サイズに乗数のサフィックス (KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB) を付けると、 数値はバイト単位のパーティションサイズとして解釈され、 デバイスの I/O 制限に基づいて配置される。 数値の代わりに '+' を使うと、パーティションをできる限り拡張する。 既存のパーティションは、必要に応じてリサイズされる。

パーティションタイプ type は、MBR (DOS) については、プレフィックス 0x を付けない 16 進数で指定する。 また、GPT については、GUID 文字列で指定する。 もしくは、ショートカットで指定する:

L
Linux; MBR では 83 であり、 GPT では 0FC63DAF-8483-4772-8E79-3D69D8477DE4 である。
S
スワップ領域; MBR では 82 であり、 GPT では 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F である。
E
拡張パーティション; MBR では 5 である。
H
ホームパーティション; GPT では 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 である。
X
Linux 拡張パーティション; MBR では 85 である。
U
EFI システムパーティション; MBR では EF であり、 GPT では C12A7328-F81F-11D2-BA4B-00A0C93EC93B である。
R
Linux RAID; MBR では FD であり、 GPT では A19D880F-05FC-4D3B-A006-743F0F84911E である。
V
LVM; MBR では 8E であり、 GPT では E6D6D379-F507-44C2-A23C-238F2A3DF928 である。

デフォルトの type の値は L である。

bootable は [*|-] で指定する。 デフォルトではブート可能でない。 このフィールドの値は Linux とは関係ない。 - Linux が稼働しているなら、既にブート済みである - しかし、このフィールドはある種のブートローダや他の OS で用いられる。

名前付きフィールド形式

この形式は、より読みやすく、堅牢で、拡張可能で、追加の情報 (例えば、UUID) を指定できる。 スクリプトをより読みやすくするために、この形式を使うことが 推奨される。

[device :] name[=value], ...

device フィールドはオプションである。 sfdisk はデバイス名からパーティション番号を抽出する。 パーティションをランダムな順番で指定できる。 この機能は主に --dump で使われる。 良く分からない場合は、使わないこと。

value はクォーテーションマークの間に指定できる (例えば name="This is partition name")。 現在サポートされているフィールドは以下の通り:

start=number
デバイスの I/O 制限に基づいて配置された、 最初のアサインされていないセクタである。 最初のパーティションのデフォルトの開始オフセットは、1 MiB である。 オフセットには乗数のサフィックス (KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB) を付けることができる。 数値はバイト単位のオフセットとして解釈される。
size=number
パーティションサイズをセクタ数で指定する。 数値に乗数のサフィックス (KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB) を付けると、 数値はバイト単位のサイズとして解釈され、デバイスの I/O 制限に基づいて配置される。
bootable
パーティションをブート可能に設定する。
attrs=string
パーティション属性。通常は GPT パーティション属性ビット。 GPT ビット文字列の形式の詳細は、--part-attrs を参照すること。
uuid=string
GPT パーティション UUID。
name=string
GPT パーティション 名。
type=code
MBR パーティションについては、(0x なしの) 16 進数である。 GPT パーティションについては、GUID である。 後方互換のため、Id= フィールドは同じ意味を持つ。

 

空のディスクラベル

sfdisk は、デフォルトでは、パーティションなしではパーティションテーブルを 作成しない。 スクリプトは、デフォルトでは、パーティションを指定した行を想定している。 空のパーティションテーブルを明示的に要求するには、 パーティションの行がない "label: <name>" スクリプトヘッダを指定すればよい。 例えば:

echo 'label: gpt' | sfdisk /dev/sdb

で空の GPT パーティションテーブルを作成できる。 --append は、この機能を無効化する点に注意すること。

 

パーティションテーブルのバックアップ

デバイスのレイアウトを保存することが推奨される。 sfdisk は 2 つの方法をサポートしている。

--dump オプションでデバイスレイアウトの記述を テキストファイルに保存できる。 ダンプ形式は、その後の sfdisk の入力に適している。 例えば:

sfdisk --dump /dev/sda > sda.dump

これは、後から以下のようにして復旧できる:

sfdisk /dev/sda < sda.dump

パーティションテーブルが格納されている、 全てのセクタの完全な (バイナリ) バックアップをしたい場合、 --backup オプションを使うこと。 このオプションは、セクタに ~/sfdisk-<device>-<offset>.bak ファイルを書き出す。 バックアップファイルのデフォルトの名前は、 --backup-file オプションで変更できる。 バックアップファイルは、device からの生データを保持する。 バックアップファイルの同じ考え方が、 wipefs(8) で使われている点に注意すること。 例えば:

sfdisk --backup /dev/sda

GPT ヘッダは、後から以下のようにして復旧できる:

dd  if=~/sfdisk-sda-0x00000200.bak  of=/dev/sda  \
  seek=$((0x00000200))  bs=1  conv=notrunc

sfdisk は、バージョン 2.26 以降で、 セクタの復旧に -I オプションを提供しない点に注意すること。 dd(1) が必要な全ての機能を提供している。

 

カラー表示

暗黙のカラー表示は空ファイル /etc/terminal-colors.d/sfdisk.disable で 無効化できる。

カラー表示設定の詳細は terminal-colors.d(5) を参照すること。 sfdisk でサポートされている論理的なカラー名は以下の通り:

header
出力テーブルのヘッダー。
warn
警告メッセージ。
welcome
ようこそのメッセージ。

 

注意

バージョン 2.26 以降で sfdisk は、 カーネルにパーティションテーブルを再読み込みさせるための、 -R--re-read オプションを提供しない。 代わりに blockdev --rereadpt を使うこと。

バージョン 2.26 以降で sfdisk は、 --DOS, --IBM, --DOS-extended, --unhide, --show-extended, --cylinders, --heads, --sectors, --inside-outer, --not-inside-outer オプションを提供しない。

 

環境変数

SFDISK_DEBUG=all
sfdisk デバッグ出力を有効化する。
LIBFDISK_DEBUG=all
libfdisk デバッグ出力を有効化する。
LIBBLKID_DEBUG=all
libblkid デバッグ出力を有効化する。
LIBSMARTCOLS_DEBUG=all
libsmartcols デバッグ出力を有効化する。

 

関連項目

fdisk(8), cfdisk(8), parted(8), partprobe(8), partx(8)

 

著者

Karel Zak <kzak@redhat.com>

現在の sfdisk の実装は、オリジナルの Andries E. Brouwer の sfdisk に基づいている。

 

入手方法

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


 

Index

名前
書式
説明
コマンド
オプション
入力フォーマット
空のディスクラベル
パーティションテーブルのバックアップ
カラー表示
注意
環境変数
関連項目
著者
入手方法

This document was created by man2html, using the manual pages.
Time: 15:39:32 GMT, April 02, 2020