GpartedとGdiskの最適パーティションサイズ

GpartedとGdiskの最適パーティションサイズ

4TB(4,000,225,165,312バイト)ドライブを1TBの偶数パーティションに切り捨てようとしています。

このパーティションを少なくとも1^3バイト(〜1 GB)(1000000000)のパーティションにさらに分割したいと思います。

さて、数時間のレビューの後、私はいくつかの矛盾する結論を見つけました。

  • Gpartedを使用して1000000000バイト(953.67431640625MB)パーティションを作成することはできません。
  • KDEpartedを使用して1000000000バイトのパーティションを選択でき、最終的に1000341504になりました。
    • 954MBの結果は1000341504バイトです。
    • 1000341504*1000*4(~4TB)がドライブより大きいため、4001366016000なので拡張されません。
    • 1,000,000,000,000を稼ぐと、最終結果は1,000,000,716,800です。
    • したがって、全体のサイズが大きくなるほど、追加のオーバーヘッドは減少します。
    • KDEparted は、セクタを使用しない sfdisk バックエンドを使用します。
    • Gparted は MB ソートを使用します。
  • Gdiskを使用すると、1953125000セクタ(それぞれ512バイト)を使用して1000000000000(1000 ^ 4)B(〜1 TB)パーティションを作成できます。

これを可能にするには、Gdiskを使用してセクタを持つパーティションを作成し、Gpartedを使用して移動する必要があります。ただし、1000 ^ 4Bパーティションを削除してGpartedを使用して空き容量を埋めるために新しいパーティションを作成すると、1,000,000,716,800バイト(143セクタ)が追加されます。

これはGdiskの警告「パーティションが2048セクタの境界に揃っています」と関連している可能性がありますが、Gdiskのスペースを最大化していると思います。今Gdiskを最初に使用し、Gpartedを使用し、Gdiskを再使用する必要があるようです..?この問題を解決するためのより最適化された方法はありますか?

重要な部分は、どのアライメント(バイト、シリンダー、MiB)が最善かを理解することです。この記事は次のように役立ちます。 「多くの最新のパーティショニングツールは、1M [i] Bの境界に沿ってドライブ全体を揃えます。これは賢いです。512バイトセクタ、4KBセクタ、すべてのブロックサイズのSSDなど、さまざまな種類のドライブがあります。」https://superuser.com/questions/393914/what-is-partition-alignment-and-why-whould-i-need-it

明らかに、最近のドライブは4096バイトのセクタサイズ、SSD 512の取り外し要件、およびOG 512のセクタサイズを使用しているため、1MiBが選択されました。私を混乱させるのは、MiB(1,048,576バイト)が4096バイトよりどれほど大きいかです。まだ理由を理解していませんが、MiBが支配的な陣営のようです。これまで働きました。 「2048セクタ境界」は、実際には2048バイトで始まるのではなく、2048 * 512 = 1MiBを意味します(「MiBソート」がより明確になります)。次のリンクも役立ちます。https://www.rodsbooks.com/gdisk/advice.html

バイナリと考える必要があります。 10を掛けることはできません。最大1TBまで加算することはできません。それでは、MiBが4K 4096Bセクタサイズよりはるかに大きいときにMiBアライメントを使用するのはなぜですか?これは未来を見つめる試みですか?

答え1

バイト解像度に分割することは不可能です。可能であっても、無限のソートの問題が発生する可能性があります。

セクタサイズは512または4096で、すべてのパーティションサイズはこのサイズの倍数でなければなりません。慣例的に、そうしない妥当な理由がない限り、MiBソート(1048576バイトの倍数)に固執する必要があります。

別の問題は、パーティションテーブル自体に少しのスペースが必要なため、どのパーティションもセクタ0から起動できないことです。同様に、ドライブの最後のセクタ(GPTバックアップヘッダに使用されます)は使用できません。

したがって、すべてのパーティションのサイズが同じでバイト境界を超えないようにしたい場合は、おおよその内容を助けることはできません。

以下は、4 TBディスク上の1 TBパーティションの例です。

(parted) unit b
(parted) print
Model: Loopback device (loopback)
Disk /dev/loop0: 4000225165312B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start           End             Size           File system  Name  Flags
 1      1048576B        999999668223B   999998619648B
 2      1000000716800B  1999999336447B  999998619648B
 3      2000000385024B  2999999004671B  999998619648B
 4      3000000053248B  3999998672895B  999998619648B

(parted) unit mib
(parted) print
Model: Loopback device (loopback)
Disk /dev/loop0: 3814912MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start       End         Size       File system  Name  Flags
 1      1.00MiB     953674MiB   953673MiB
 2      953675MiB   1907348MiB  953673MiB
 3      1907349MiB  2861022MiB  953673MiB
 4      2861023MiB  3814696MiB  953673MiB

これは単なる例であり、他の境界を選択することもできます。

より多くのパーティション(1 GBを参照)を作成する必要がある場合は、これらの境界を決定するスクリプトを直接作成する必要があります。 GPTにはデフォルトで128のパーティション制限があります。

答え2

それいいえパーティションサイズは1'000'000'000の倍数であることをお勧めします。この数字は 4096 に分割できません。これは、多くのLinuxサブシステムの適切なパフォーマンスにとって非常に重要です。私があなたの場合は、代わりに1024 * 1024 * 1024(1073741824バイトまたはまさに1GiB)またはそれに近いものを使用します(ただし、多くのLinuxディスクユーティリティは1MiB境界を好むので、少なくとも1024 * 1024に等しく分割できます)。

答え3

いくつかのパーティションスキームを追加しています。

MiBに降りる:

999999668224 ~1TB    /2  953674MiB
499999834112 ~500GB  /2  476837
249999917056 ~250GB  /2  238418.5 ->  238418  249999392768
124999958528 ~125GB  /2  119209.25    119209  124999696384
62499979264  ~63GB   /2  59604.625 -> 59604   62499323904
31249989632  ~32GB   /2  29802                31249661952
15624994816  ~16GB   /2  14901.15625  14901   15624830976
7812497408   ~8GB    /2  7450.578125  7450    7811891200
3906248704   ~4GB    /2  3725.28.. -> 3725    3905945600
1953124352   ~2GB    /2  1862.64.. -> 1862    1952448512
976562176    ~1GB        931.32..  -> 931     976224256
1024 * 976224256 = 999653638144

調整あたり最大0.64MiBが失われます。つまり、未使用の合計 346030080B(330MiB)(999999668224-999653638144) または合計 1000^4-999653638144 = 346361856/1048576 = 33.おそらくこれが最善の方法でしょう。許容可能な損失です。

931MiBからビルド:

953334, 479672, 238336, 119168, 59584, 29792, 14896, 7448, 3724, 1862, 931 MiB

999643152384 ~1TB        953334 MiB
502972547072 ~500GB  *2  479672  
249913409536 ~250GB  *2  238336  
124956704768 ~125GB  *2  119168  
62478352384  ~63GB   *2  59584   
31239176192  ~34GB   *2  29792   
15619588096  ~16GB   *2  14896   
7809794048   ~8GB    *2  7448    
3904897024   ~4GB    *2  3724
1952448512   ~2GB    *2  1862
976224256    ~1GB    *2  931

953674-953334 = 340MiB.

893760  ~960GB
446880  ~480GB
223440  ~240GB
111720  ~120GB
55860   ~60GB
27930   ~30GB
9310    ~10GB
4655    ~5GB
931 MiB ~1GB

これらのサイズはSSDおよびOSサイズに適しています。 953334-893760 = 59574MiBは使用されていませんが、〜60GBのパーティションに十分です(残りの3714に20MiBを加えると20971520B、通常のHDDの追加バイトは〜4GBのパーティションに十分です)(最終的なソートの問題によって異なります)。

たとえば、私の4TBドライブには225,165,312Bの追加スペース、つまり53.68MiBがあります。私の2TBドライブでは、2x893760、2x55860、2x3724、1x931(合計1907619)を収容でき、256MiBが残りました(109、88に変更、おそらくGPTテーブルに使用されます)。私は最初から最後までこれを満たしました。最後には0.7MiB(90113 B)が使用されず、最初は1MiBがありました。しかし、私のパーティション番号は逆になっています(fdiskに逆にリストされているにもかかわらず、おそらくそのまま使用できるはずです)。別のアプローチは、事前に計算することです。まず、MiB で可能な最大のパーティションを作成し、最終的なソート数を読み込みます。上記と同じように 1907728-1907619=109MiB でなければなりません。

ただし、Gpartedで許容される最小サイズは256MiBです。 ..Ahaha、基本型をbtrfsとして残したので、256を使用し、ext4は8MiBのみを使用します。だからこれは実際に動作します。はい!

編集:931MiBを930に調整すると、より均一な故障が得られることに気づきました。

892800  ~960GB
426400  ~480GB
223200  ~240GB
111600  ~120GB
55800   ~60GB
27900   ~30GB
18600   ~20GB
9300    ~10GB
4650    ~5GB
930 MiB ~1GB
465

それから465を464に変えると、「7MiB」までさらに分けることができることに気づきました。

890880  ~960GB
445440  ~480GB
223720  ~240GB
111360  ~120GB
55680   ~60GB
27840   ~30GB
9280    ~10GB
4640    ~5GB
928 MiB ~1GB
464
232
116
58
26
14
7 MiB

上記の2つのうちどれがもっと好きなのかわかりません。または 900 に丸めると、読みやすいチャンクが生成されます。

864000  ~960GB
432000  ~480GB
216000  ~240GB
108000  ~120GB
54000   ~60GB
27000   ~30GB
18000   ~20GB
9000    ~10GB
4500    ~5GB
900 MiB ~1GB
450
275

これは3.2%のスペース(30/931)だけを失い、より記憶に残り、読みやすいサイズを提供します。

または800,000MiBまで丸めることができますが、そうすると11%の損失(833.3/931)が発生し、〜1GBブロックは833.33MiBに均等になりません。 25000から5を10進数で割ることで、5GBを5000MiBのサイズにすることができますが、5000MiBは5GBのUSBドライブに収まらないので混乱する可能性があります。ただし、1 GBなどのより小さなドライブでは、「930」または「900」プランを使用できます。実際、1GBは953.67MiBなので、950MiBが適しています。これにより、最後のソートに3.67MiBが残り、開始GPTパーティションテーブルに2048個のセクタが残ります(例:1MiB)。

800000  ~960GB
400000  ~480GB
200000  ~240GB
100000  ~120GB
50000   ~60GB or 64GB drive
25000   ~30GB or 32GB drive
15000   ~15GB part or 16GB drive
5000    ~5GB  part or 8GB  drive
smaller drives (and backups as partitions):
950 MiB ~1GB    (4750 ~5GB)
425

あるいは、中間サイズを均一に保つことは、最大120 GB SSDまでのほとんどのドライブに適しています。より小さな1GBのパーティションも通常USBスティックに収まるように50MiB減らすことができ、HDDで1000MiBに保つことができます。

800000  ~960GB
400000  ~480GB
200000  ~240GB
100000  ~120GB
60000   ~60GB or 64GB drive
30000   ~30GB or 32GB drive
15000   ~15GB part or 16GB drive
5000    ~5GB  part or 8GB  drive
1000    ~1GB  part or 1GB  drive
smaller drives (and backups as partitions):
950 MiB ~1GB    (4750 ~5GB)
425

関連情報