web-dev-qa-db-ja.com

partedを使用して整列されたパーティションを作成する

GPTパーティションテーブルが必要なため、partedを使用して非SSDハードディスクをパーティション分割しています。

parted /dev/sda mklabel gpt

ここで、正しく配置されたパーティションを作成しようとしているので、次のコマンドを使用して、最初のセクターがどこから始まるかを確認します。

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

セクター34から始まることがわかります(これは、このパーティションテーブルが使用されるときのデフォルトです)。

だから、私が試した最初のパーティションを作成するには:

parted /dev/sda mkpart primary 63s 127s

8の倍数なので、セクター64に揃えますが、次のように表示されます。

警告:最適なパフォーマンスを得るために、結果のパーティションは適切に調整されていません。

ハードディスクの論理セクターサイズと物理セクターサイズはどちらも512バイトです。

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

正しく配置されたパーティションを作成するにはどうすればよいですか?何が悪いのですか?

72
Marc

パーティションをpartedに合わせるには、--alignオプション。有効な配置タイプは次のとおりです。

  • none-ディスクタイプで許可されている最小の配置を使用します。
  • cylinder-パーティションをシリンダーに揃えます。
  • minimal-ディスクトポロジ情報で指定された最小の配置を使用します。これとopt値は、ディスクによって提供されるレイアウト情報を使用して、論理パーティションテーブルアドレスをディスク上の実際の物理ブロックに揃えます。 min値は、パーティションを物理ブロックに適切に配置するために必要な最小の配置であり、パフォーマンスの低下を回避します。
  • optimalディスクトポロジ情報で指定された最適な配置を使用します。これは、最適なパフォーマンスを保証する方法で、物理ブロックサイズの倍数に合わせます。

その他の便利なヒントは、サイズをパーセンテージで設定して整列させることができることです。 0%で開始し、100%で終了します。例えば:

parted -a optimal /dev/sda mkpart primary 0% 4096MB

73
lik

Arch Wiki から:

パーティションを作成するとき、partedは不適切なパーティション配置について警告する場合がありますが、適切な配置についてのヒントはありません。例えば:

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

警告は、パーティションstartがアライメントされていないことを意味します。

Ignoreと入力して先に進みます。パーティションテーブルをセクター単位で印刷して、開始位置を確認し、パーティションを削除/再作成します。警告が停止するまで、開始セクターは2の累乗に切り上げられます。一例として、512Bセクターのフラッシュドライブで、Partedは2048の倍数であるセクター(1MBアライメント)でパーティションを開始することを望んでいました。

さらに、このセクションのすぐ上に、より正確なIEC KiB、MiB、GiBなどのバイナリユニットは、精度の低いKB、MB、GBだけでなく、ユニットにも受け入れられると述べています。 、など.

個人的に、これを解決した私の正確なコマンドは:

mkpart hd ext4 1024KiB 8470MB

それは文句を言わなかった、私はそれが1MBの整列を望んでいたと思います。

9
Travis Rodman

私の解決策はgdiskを使用することでした。これにより、デフォルトで2048セクター(1024KiB)のパーティションアライメントを自動的に実行できますが、エキスパートメニューで変更できます。

9
Marc

マイナーな修正。私が理解しているように、GPTディスクにはもうパーティションタイプがありません。すべて「プライマリ」です。コマンド「mkpart primary」は、msdosディスクで行うようにプライマリパーティションを作成しません。プライマリと呼ばれるパーティションを作成するだけです。コマンドも使用できます

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

論理パーティションを作成しようとすると、混乱が生じる可能性があります。

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

「拡張」というパーティション内に「論理」というパーティションを作成することはできません。

7
Miksa

@ likによる承認済みの回答 は、優先配置を指定する方法を示しています。ただし、partedは常に結果のパーティションをチェックするためにそのアライメントを使用しますが、常にそのアライメントでパーティションを作成するわけではありません。

TL; DR:1MiBが最適な配置の場合、0%を指定すると、200MiB以上のディスクで機能します。小さいディスクまたは大きい配置の場合、0Gを指定すると、0%が機能しない場合に機能します。理由については以下をご覧ください。

Partedは、パーティションを作成するときに配置の制約を満たそうとしますが、要求された値から大きく逸脱することもありません。 「多すぎる」と見なされるのは、位置を指定した方法によって異なります。

Mkpartコマンドに開始(または終了)位置を指定すると、許容範囲の値が内部的に生成されます。この範囲は、指定した値を中心とし、使用した単位サイズの半分で両側に等しく拡張されます(これが私が コードから読み取ったものコメントは言う 1両端のフルユニットサイズ)。

たとえば、「10M」を指定すると、9.5Mから10.5Mの間の任意の位置を使用しようとします。同じことがパーセンテージにも当てはまるので、0%を指定すると、0%から0.5%の間の任意の値が使用されます(明らかにマイナスにはなりません)。

1つの例外は、2の累乗(1000のKではなく1024のKiBなど)を使用する場合、partedは正確な位置を指定しようとしていると想定し、指定された正確な値のみを考慮することです。

通常、最適な配置は1MiBに配置されているように見えるため、KユニットとMユニットには、最適な配置に到達するための十分なスペースがないことがよくあります。 Gでの位置の指定には十分な余地があるはずですが、通常は%でも問題ありません。

そのため、制限はありますが、通常は0%が機能します。

7