パーティションを「揃える」とはどういう意味ですか?


回答:


15

パーティションの位置合わせは、真の基礎となるブロック構造に一致するようにパーティションを位置合わせすることを意味します。

長い間、ハードディスクは512バイトブロックを使用していました。これは長い間続いているため、ブロックサイズを変更することはほとんど不可能です。修正が必要なソフトウェアが多すぎます。

SSDでは、真のブロックサイズは128 KBです。RAIDアレイでは、64 KBになる場合があります。高度なフォーマットのドライブでは、4 KBになります。

下位互換性のために、ドライブは512バイトブロックで引き続き動作します。しかし、パフォーマンス上の理由から、システムは実際のブロックサイズを実際に知っている必要があります。

最も簡単なパフォーマンス調整の1つは、OSが4 KB、64 KB、または128 KBを書き込むときにブロック全体を書き込むように、ドライブパーティションを実際のブロックサイズに揃えることです。

パーティションがアライメントされていない場合、結果は最初のブロックに512バイトを書き込み、2番目のブロックに4K-512バイトを書き込み、ディスク/ SSD / RAIDに1回の書き込みではなく2回の読み取り-変更-書き込みサイクルを実行させます。



@AnkurTank:いいえ、そこの質問はよくカバーされているようです。
ザンリンクス

ご注意いただきありがとうございます。残っているのは、パーティションが整列していることを確認する方法だけです。私にとって、partedはまだパーティションが整列していないと不平を言っているからです。さらに、gdiskなどの他のツールを使用してみましたが、gdiskのクロスコンパイルはできません。それで、それを確認する方法について何か提案があれば役立つと思いました。
AnkurTank

3

パーティションはブロックのシーケンスであり、長年の慣例により、1ブロックは512バイトです。

そのため、パーティションは、ディスク内の512バイトの倍数で始まり、非常に長いバイトストリングとして「見える」場合があります。

ただし、元々は512バイトのセクターサイズが同じであった基盤となるディスクハードウェアは、効率のために大きなサイズを使用しています。4096バイトだとしましょう。

互換性の理由から、OSとハードウェアの間にあるファームウェアは、まだ「セクター内で通信​​」しています。したがって、最初のセクターを尋ねると、ハードウェアは最初のブロック(4096バイト)を取得し、ファームウェアは適切なスライスを抽出して配信します。2番目のブロックを要求すると、ブロックはおそらくキャッシュから取得されます。

これまでのところ、セクターサイズの不一致には欠点はありません。

しかし、OS は効率のためにブロック(通常はclusterと呼ばれる)も使用し、それらをパーティションに合わせます。したがって、4セクターのクラスターは、セクター5、6、7、および8で構成されます。

OSがファイルシステムクラスター#2を要求すると、ファームウェアは論理セクター5、6、7、および8を要求されます。それらがすべて同じディスクブロックにある場合、ディスクは1回の読み取りを実行する必要があります。

しかし、パーティションが「間違った」セクターから始まる場合、ファイルシステムの最初のクラスターは、例えばセクター2、3、4、5で単純化されます。そして、それらは最初のディスクブロックの半分になる可能性があります(1 -2-3-4)、2番目の半分(5-6-7-8)。

今度は、追加の読み取り1つ必要です。OSとディスクの比率が1:1の場合、これは読み取りを2倍にすることと同じです。OSとディスクの比率が2:1の場合、クラスターは2つのハードウェアディスクブロックであるため、2 + 1 = 3の読み取りが必要になり、ペナルティは50%です。

OS   |--- cluster  12 ---|--- cluster  13 ---|--- cluster  14...
     |                   |                   |
HDD  --|----|----|----|-a--|--b-|-c--|-d--|-e--|----|---        BAD
     |                   |                   |
HDD  |----|----|----|----|-a--|--b-|-c--|-d--|----|----|---     GOOD

上記のクラスターは、それぞれ2セクターの4つのハードウェアブロック(比率4:1)です。「偶数」セクターに揃えることは、クラスターを読み取るために、これらの8セクター読み取りが4ブロック読み取りに変換されることを意味します。奇数のセクターで整列すると、同じ8セクターの読み取りに4 + 1 = 5ブロックの読み取りが必要になり、パフォーマンスが25%低下します(4つごとに1つの読み取りを追加します)。

4:1の比率でディスクの位置がずれている場合、位置合わせを行うと20%高速になります(5回ごとに1回の読み取りを保存します)。

パーティションを「整列」するには、ディスクの先頭から適切な512bセクターの倍数にオフセットを移動/設定するか、(ツールに応じて)ディスクの先頭に小さなパーティションを挿入します。次のパーティションがディスクセクターの境界で正確に始まるようなサイズで。この2番目のケースでは、理論上は最大でN-1セクター、つまり非常に数キロバイトが必要ですが、実際には、パフォーマンスを最大限に引き出すために、おそらく数百キロバイト、場合によってはメガバイト全体を浪費する必要がありますマルチギガバイトのハードドライブ。

(OS クラスターのサイズを適切に選択することで、おそらくそのスペースなどを回復できます)。


1
読み取りはそれほど悪くありません。はい、少し余分なデータを読み取る必要がありますが、3つの連続したブロックを読み取ることは、2つの読み取りよりも大幅に時間がかかりません。実際の問題は書き込みです。基礎となるブロックサイズよりも小さいセクションを書き込むには、データを読み取り、ディスクが完全な回転をスピンしてから書き換えるのを待つ必要があります。
プラグウォッシュ

1
また、追加のパーティションを作成する必要はありません。ディスク上のすべてのスペースをパーティション分割する必要はありません。
プラグウォッシュ

2

ドライブはほぼ常に512バイトの論理セクターに分割され、他のサイズも可能ですが、互換性の問題のために使用されることはほとんどありません。古いハードドライブでは、これらは個別に書き込むことができる別個のセクターでした。

2000年代半ばまで、パーティションは伝統的に「シリンダー」境界に合わせられていました。歴史的な理由により、「シリンダー」は通常63セクターでした。セクター0には、ブートセクターとパーティションテーブルが含まれています。シリンダー0の後のセクターは、ブートローダーの追加情報を継続する場合がありました。通常、最初のパーティションはシリンダー1の開始時に始まりました。

ほとんどのファイルシステムは、セクターを大きなブロックにグループ化します(「クラスター」と呼ばれることもあります)。これらのサイズは通常4KiBです。

ある時点で、ドライブベンダーは、4Kの物理セクターも使用する方が効率的だと確信しましたが、互換性の理由から、論理セクターサイズを512バイトに保ちました。ホストが物理セクター全体を一度に読み書きする場合、高速です。ドライブが不要なデータを破棄するだけなので、読み取りの一部がまだ非常に高速です。ただし、ホストが物理セクターの一部のみを書き込む場合、ドライブは物理セクターを読み取る必要があり、読み取ったデータをホストからのデータと組み合わせてから、変更されたセクターを書き換えます。これは、ドライブが1回ではなく2回回転するのを待つことを意味します。

これは、ファイルシステムの4Kクラスターがドライブの4K物理セクターに整合している場合にうまく機能します。残念ながら、ドライブをパーティション分割する従来の方法では、最初のパーティションは基本的に不整列になり、後のパーティションでは8分の1の確率でしか整列しません。そのため、高度なフォーマットのドライブのベンダーは、人々が彼らのパーティションを再調整するのを支援するツールを急ぐ必要がありました。

RAIDアレイとSSDでも同様の考慮事項を適用できます。RAIDストライプは、単一のファイルシステムクラスターよりもはるかに大きい可能性がありますが、一部のファイルシステムには、2つの境界の累乗​​で整列された領域または類似のものがあります。

現在の通常の慣行は、すべての一般的なブロックサイズの倍数になるのに十分な2の累乗である1MiB境界にパーティションを揃えることです。



0

Dunnoはこれが役立つ場合ですが、私の理解では、パーティションのアライメントとは、特定のパーティションを基盤のRAIDストライプユニットにアライメントすることです。

どうやら、ハードウェアベースのRAIDまたはソフトウェアベースを使用すると、パフォーマンスが低下する可能性があります。パーティションの開始位置が、RAID上に作成されたディスクパーティション内のストライプユニット境界と一致しない場合、問題が発生する可能性があります。

ボリュームクラスターを作成するためのファクタリングによっては、ストライプユニットの境界の隣ではなく、ストライプユニットの境界上にボリュームクラスターが作成される場合があります。この動作により、パーティションの位置がずれる可能性があります。

私はかなり離れているかもしれませんが、これはRAIDとは何の関係もないかもしれません;)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.