parted を使用してソートされたパーティションの作成

parted を使用してソートされたパーティションの作成

SSDではなくハードドライブをパーティショニングしています。別れたGPTパーティションテーブルが欲しいからです。

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

正しく整列されたパーティションを作成するには?私は何が間違っていましたか?

答え1

パーティションをソートするには、オプションをparted使用できます--align。有効なソートタイプは次のとおりです。

  • まったく - ディスクの種類に応じて許容される最小のソートを使用します。
  • シリンダー- パーティションをシリンダーと位置合わせします。
  • 最小- ディスクトポロジ情報によって提供される最小アライメントを使用します。この値と opt 値は、ディスクによって提供されるレイアウト情報を使用して、論理パーティション表アドレスをディスクの物理ブロックと整列させます。最小値は、パフォーマンスの低下を防ぐために、パーティションを物理ブロックに正しくソートするために必要な最小ソートです。
  • 最高ディスクトポロジ情報によって提供される最高のソートを使用します。これは、最適な性能を保証するように物理ブロックサイズの倍数に整列される。

別の有用なヒントは、パーセンテージを使用してサイズが揃うように設定できることです。 0%から始めて100%で終わります。たとえば、

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

答え2

これ@likの回答が承認されました。デフォルトのソートを指定する方法を示します。ただし、partedは結果のパーティションを確認するために常にこのソートを使用しますが、パーティションを作成するために必ずこのソートを使用するわけではありません。

重要な要約:1MiBが最適なアライメントのときに0%を指定すると、200MiB以上のディスクで動作します。より小さいディスクまたはより大きなアライメントの場合は、0Gを指定すると機能できますが、0%は機能しません。理由については、下記をご覧ください。

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

mkpartコマンドの開始(または終了)位置を指定すると、内部で許容される値の範囲が生成されます。範囲は指定された値の中心にあり、使用中の単位サイズの半分だけ両側で均等に拡張されます(これは私の意味です)。コードから読む、これコメントは言う各端に1つの合計単位サイズ)。

たとえば、「10M」を指定すると、9.5M~10.5Mの値を使用しようとします。パーセンテージにも同様に適用されるため、0%を指定すると0%から0.5%の間の値が使用されます(明らかに負にはなりません)。

1つの例外は、2つの単位の累乗を使用するとき(例えば、1000をKで表すのではなくKiBを1024として使用する)、partedはユーザーが正確な位置を指定しようとし、ユーザーが指定した正確な値のみを考慮することです。

通常、最適なアライメントは1MiBアライメントとして現れるため、KおよびMセルには通常最適なアライメントを達成するのに十分なスペースがありません。 Gに位置を指定するには十分なスペースが必要ですが、通常%も機能します。

これが0%が一般的に機能する理由です。たとえこれにも限界がありますが、言葉です。

答え3

私の解決策はgdiskデフォルトでは、2048セクタ(1024KiB)でパーティションの整列が自動的に実行されますが、エキスパートメニューから変更できます。

答え4

小さな修正。私が理解したのは、GPTディスクにはパーティションタイプがなく、すべて「基本」ディスクです。 "mkpartprimary"コマンドは、msdosディスクと同様にプライマリパーティションを作成せず、Primaryというパーティションのみを作成します。次のコマンドを使用することもできます。

(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

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

関連情報