Parted

提供: ArchWiki
2023年11月23日 (木) 00:30時点におけるKgx (トーク | 投稿記録)による版 (項目を整理)
ナビゲーションに移動 検索に移動

関連記事

GNU Parted はパーティションテーブルを作成したり操作するためのプログラムです。GParted は GUI フロントエンドです。

インストール

parted パッケージをインストールしてください。グラフィカルインターフェイスを使いたい場合、parted のグラフィカルフロントエンドである gparted パッケージをインストールしてください。

使用方法

Parted には2つのモードがあります: コマンドラインモードとインタラクティブモードです。Parted は以下のように実行します:

# parted device

device は編集するハードディスクデバイスに置き換えて下さい (例: /dev/sda)。device を省略すると、parted が編集するデバイスを推測します。

コマンドラインモード

コマンドラインモードでは、1つまたは複数のコマンドを指定します。例:

# parted /dev/sda mklabel gpt mkpart P1 ext3 1MiB 8MiB 
ノート: (--help などの) オプションはコマンドラインでだけ指定することが可能です。

インタラクティブモード

インタラクティブモードではパーティショニングを簡単に行うことができ、指定したデバイスにパーティショニングコマンドで自動的に適用されるためコマンドを繰り返し実行する必要がありません。

デバイスの操作を開始するには、以下のコマンドを実行:

# parted /dev/sdx

コマンドラインプロンプトがハッシュ (#) から (parted) に切り替わります。プロンプトの (parted) は手動で入力する必要があるコマンドではありません。

利用可能なコマンドを確認するには:

(parted) help

パーティショニングが完了したときや、他のデバイスのパーティションテーブル・スキームを変更したい場合、以下のコマンドで parted を終了します:

(parted) quit

終了後、コマンドラインプロンプトは元の # に戻ります。

コマンドにパラメータを指定しなかった場合、Parted はパラメータを尋ねます。例:

(parted) mklabel
New disk label type? gpt

ラウンディング

多くのパーティショニングシステムには複雑な制約が存在するため、Parted はあなたが要求したことと少しだけ違うことをすることがあります (例えば、パーティションの開始位置を 10.4Mb から 10.352Mb に変えることがあります)。計算された値があまりにも食い違った場合、Parted はあなたに確認を行います。Parted が何をするのか詳しく知りたい場合は、"unit s" コマンドを使うことでパーティションの終末点がセクタで表示されます。また、細かく指定したい場合、セクタでパーティションの終末点を指定することもできます ("s" を後ろに付ける)。

parted-2.4 から、“MiB”, “GiB”, “TiB” などのように IEC バイナリ単位を使って開始地点や終末地点を指定したとき、parted はそれらの値をバイト数で指定したときと同じ数値として正確に扱います (つまり “B” を付けたときと同じ)。そのため曖昧な誤差は生じません。逆に、“4GB” のようにパーティションの開始位置を指定した場合、その地点よりも最大で 500MB ほど前だったり後ろだったりになることがあります。従って、パーティションを作成するときは、バイト (“B”) やセクタ (“s”) を使うか “MiB” のような IEC バイナリ単位を使うほうが良いでしょう。

パーティショニング

新しいパーティションテーブルの作成

パーティションを作成したことがない場合やパーティションテーブルのタイプを変更したいときはデバイスのパーティションテーブルを(再)作成する必要があります。スクラッチからパーティションスキームを再構築したい場合もデバイスのパーティションテーブルを再作成すると良いでしょう。

パーティションテーブルを(再)作成したいデバイスを開いてください:

# parted /dev/sdx

GUID Partition Table を新しく作成したい場合、以下のコマンドを使用します:

(parted) mklabel gpt

Master Boot Record/MS-DOS パーティションテーブルを新しく作成したい場合、以下のコマンドを実行:

(parted) mklabel msdos

パーティションスキーム

デバイスを分割するパーティションの数と容量、どのディレクトリをパーティションにマウントするか (マウントポイント) 決めます。必要なパーティションについてはパーティショニング#パーティションスキームを見てください。

以下のコマンドを使ってパーティションを作成できます:

(parted) mkpart part-type fs-type start end
  • part-typeprimary, extended, logical のどれかになります。MBR パーティションテーブルでのみ意味があります。
  • fs-type は使用するファイルシステムに一番適した識別子になります (help mkpart と入力してリストを確認できます)。mkpart コマンドはファイルシステムを作成するわけではありません: fs-type パラメータは単に parted が1バイトのコードを設定するのに使われ、コードによってブートローダーはパーティションに含まれているデータの種類をプレビューします。Wikipedia:Disk partitioning#PC partition types を参照。
ヒント: 大抵の Linux ファイルシステム は同じ MBR パーティションタイプコード (0x83) にマッピングされるため、例えば ext4 でフォーマットするパーティションに ext2 を使っても全く問題ありません。
  • start はパーティションのデバイスにおける開始位置です。数字と 単位 で指定し、例えば 1MiB なら 1 MiB が開始位置になります。
  • end はデバイスの先頭からのパーティションの終末位置です (start の値からの位置ではありません)。start と同じ形式で指定し、例えば 100% はデバイスの末尾までを意味します (全ての領域を使用します)。
警告: パーティションは互いに被らないようにする必要があります。デバイスに未使用の領域を残したくない場合、パーティションの開始位置と終末位置を合わせてください。
ノート: parted が以下のように警告を表示する場合:
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?
パーティショニング#パーティションアライメント#アライメントを読んで修正してください。

/boot ディレクトリを含むパーティションには以下のコマンドを使ってパーティションを起動可能にします:

(parted) set partition boot on
  • partition はフラグを立てるパーティションの数字に置き換えてください (print コマンドの出力で数字を確認できます)。

UEFI/GPT の例

どのようにパーティショニングする場合でも、特殊な EFI System Partition が必要となります。

EFI システムパーティションを新しく作成する場合、以下のコマンドを使います (推奨サイズは 550 MiB):

(parted) mkpart ESP fat32 1MiB 551MiB
(parted) set 1 esp on

後はどのようにパーティションするかはあなた次第です。残り領域の 100% を使うパーティションをひとつだけ作成する場合:

(parted) mkpart primary ext4 551MiB 100%

あるいは / (20 GiB) と /home (残り全ての領域) パーティションに分ける場合:

(parted) mkpart primary ext4 551MiB 20.5GiB
(parted) mkpart primary ext4 20.5GiB 100%

もしくは / (20 GiB), スワップ (4 GiB), /home (残りの全ての領域) パーティションに分割する場合:

(parted) mkpart primary ext4 551MiB 20.5GiB
(parted) mkpart primary linux-swap 20.5GiB 24.5GiB
(parted) mkpart primary ext4 24.5GiB 100%

BIOS/MBR の例

ディスク領域を全て占有するプライマリパーティションをひとつだけ作る最小の構成の場合、以下のコマンドを使用:

(parted) mkpart primary ext4 1MiB 100%
(parted) set 1 boot on

20 GiB の / パーティションを作成してから残り領域全てを使って /home パーティションを作成する例:

(parted) mkpart primary ext4 1MiB 20GiB
(parted) set 1 boot on
(parted) mkpart primary ext4 20GiB 100%

/boot (100 MiB), / (20 GiB), スワップ (4 GiB), /home (残り全領域) パーティションに分割して作成する場合:

(parted) mkpart primary ext3 1MiB 100MiB
(parted) set 1 boot on
(parted) mkpart primary ext3 100MiB 20GiB
(parted) mkpart primary linux-swap 20GiB 24GiB
(parted) mkpart primary ext3 24GiB 100%

パーティションのリサイズ

警告: パーティションのサイズを変更するときはアンマウントして使用されてない状態にする必要があります。(/ をマウントしているパーティションなど) アンマウントできない場合、ライブメディア環境などを使って下さい。
ノート:
  • parted で出来るのはパーティションの末端を移動することだけです。
  • parted v4.2 現在、resizepart を使うには #インタラクティブモード でなければなりません [1]
  • 以下の手順は ext2, ext3, ext4 ファイルシステムを使っているパーティションの場合です。

パーティションを拡大したい場合、パーティションをリサイズしてからパーティション上のファイルシステムをリサイズする必要があります。逆に、縮小する場合は、データが消失しないように先にファイルシステムをリサイズしてから、パーティションのリサイズを行います。

パーティションの拡大

パーティションを拡大するには (parted のインタラクティブモード):

(parted) resizepart number end

number は拡大したいパーティションの番号に置き換えて下さい。end がパーティションの新しい末端です (古い末端よりも大きくする必要があります)。

次に、パーティションのファイルシステムを拡大します:

# resize2fs /dev/sdaX size

sdaX は拡大するパーティションに、size はパーティションの新しい容量に置き換えて下さい。

パーティションの縮小

パーティションのファイルシステムを縮小するには:

# resize2fs /dev/sdaX size

sdaX は縮小するパーティションに、size はパーティションの新しい容量に置き換えて下さい。

次にパーティションを縮小 (parted のインタラクティブモード):

(parted) resizepart number end

number は縮小したいパーティションの番号に置き換えて下さい。end がパーティションの新しい末端です (古い末端よりも小さくする必要があります)。

完了したら、util-linux の 'resizepart コマンドを使ってカーネルに新しい容量を通知します:

# resizepart device number size

device はパーティションが存在するデバイスに、number はパーティションの番号に、size はパーティションの新しい容量に置き換えて下さい。

ワーニング

危険な操作をしようとすると Parted はかならず警告を表示します。ただし本質的に危険なコマンドについては別です (viz., rm, mklabel, mkpart)。

アライメント

警告: parted は、パーティションの先頭のみアラインメントし、サイズはアライメントしません。これは dm-crypt/LUKS には十分ではありません。Advanced Format#パーティションのアライメント を参照してください。

パーティションの作成時、parted はパーティションのアライメントが正しくないと警告することがありますが、正しいアライメントについてのヒントは教えてくれません。例:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                    

この警告はパーティションの開始位置がアラインされていないことを意味しています。"Ignore" と入力すると先に進み、開始位置がわかるようにパーティションテーブルがセクタで表示され、警告がなくなるまで2の冪まで開始セクタが切り上げられてパーティションが削除/再作成されます。例えば、512B セクタのフラッシュドライブの場合、Parted は 2048 の倍数のセクタでパーティションを開始させようとします (1MiB アライメント)。

parted に適切なアライメントを計算して欲しいときは、開始位置に具体的な数字の代わりに 0% を指定してください。例えば巨大なひとつの ext4 パーティションを作成する場合:

(parted) mkpart primary ext4 0% 100%

ヒントとテクニック

アライメントのチェック

警告: parted は、パーティションの開始位置のアラインメントのみを検証し、サイズは検証しません。これは dm-crypt/LUKS には十分ではありません。Advanced Format#パーティションのアライメント を参照してください。

既にパーティション済みのディスクで parted を使ってデバイスのパーティションのアライメントを検証することができます。例えば、/dev/sda の1番目のパーティションのアライメントを確認するには:

# parted /dev/sda
(parted) align-check optimal 1
1 aligned

参照