Seagate ST3000DM001 3TBハードドライブを購入しました。エンクロージャー内で販売されました。 ext4にフォーマットし、データをコピーしてからエンクロージャーから削除し、マザーボードに直接接続しました。データはOSに表示されませんでした(1つの不明な〜300GiBパーティションと残りを空き領域として認識していました)ので、Advanced Formatと2TBを超えるドライブについて読み始めました。
ディスクを再びUSBで接続し、すべてのデータをコピーして、もう一度sataに接続しました。 gpartedを使用してGPTパーティションテーブルを作成し(ubuntuディスクユーティリティではError synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0
を使用できません)、1つの大きな3Tb Ext4パーティションを作成し、デフォルトのAlign to
値をMiB
のままにし、フォーマット済み。
ドライブが正しく認識され、適切にマウントされます。ファイルは、ドライブとの間で正常にコピーできます。
しかしながら:
Gpartedは、512kセクターのディスクを示していますが、これは正しくないことがわかっています1
cat /sys/block/sdb/queue/physical_block_size
は4096
を報告します
libparted
が512k以外のセクターに問題があるという報告をいくつか見つけました2 その他 つまり、MiBに合わせるだけで十分です。
Partedは、最小を選択するとドライブが調整されると報告しています。
(parted) align-check
alignment type(min/opt) [optimal]/minimal? min
Partition number? 1
1 aligned
(parted)
設定は正しいですか?ディスクが512kセクターでフォーマットされているため、パフォーマンスが低下しますか。gPartedは誤った値を報告しますか、それとも全体が間違っていることを理解していますか?
古いOS(Windows)との後方互換性のための論理セクターサイズであるため、512バイトを報告します。 (g)partedは、パーティションを1 MiBに整列します。これは、4kの物理セクターを使用するドライブで適切に動作するのに十分すぎるため、そのままで問題ありません。
まず、ほとんどのAdvanced Formatドライブは、physicalセクターサイズが4096バイト(4KiB)であっても、logicalセクターサイズ512バイトを提示します)。これは、ドライブのファームウェア内のデータをジャグリングすることで行われ、パーティションが適切にアライメントされていないと パフォーマンスの問題 になります。ただし、これが問題の原因ではない可能性があります。また、パーティションの位置合わせに焦点が合わない可能性があります。 (確かに、パーティションのアライメントは重要です;それは問題の原因ではありません。)
私の考え(そしてそれは単なる勘)は、USBエンクロージャーとディスクの直接接続を切り替えることによって問題が生じることです。一部のエンクロージャーは、ディスク上の512バイトの論理セクターをコンピューターに提示される4096バイトの論理セクターに変換します。つまり、Advanced Formatディスクのファームウェアの動作とは逆です。私は前向きではありませんが、2TiB以上のディスクでのみこれを行うエンクロージャーがあると思います。 MBRとGPTの両方のパーティションスキームは、セクター番号でデータを参照するため、セクターサイズを変更するとパーティションデータが無効になります。したがって、このように変換するUSBエンクロージャーでディスクを準備し、ディスクを直接使用しようとすると(またはその逆)、パーティション(およびGPTバックアップデータ)が使用されないため、エラーが表示されますコンピューターが期待する場所。それは目隠しをされた人に、「2歩進む」と言います。2フィートという意味ですが、その人はあなたが2メートルを意味すると思っているので、壁に足を踏み入れます。
この問題の解決策は、ディスクを準備してone方法で使用することです-eitherUSBエンクロージャーを使用するor両方ではなく、直接接続を使用します。何らかの理由で両方が必要な場合は、このタイプの翻訳を適用せずに機能するエンクロージャーを見つける必要があります。
仮説をテストするために、logicalセクターサイズを報告するツール(parted
など)を使用できます。例えば:
Sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
この出力から多くの情報を省略しました。重要な詳細は、ここに示されている最終行にあります。論理および物理セクターのサイズは両方とも512バイトです。このテストを実行してから、別の方法でディスクを再接続して再度実行すると、結果を比較できます。論理セクタのサイズがディスクの接続方法に応じて変化する場合、私の仮説は正しいものであり、それが問題の原因です。または少なくとも、それは1つの問題です。他にもあるかもしれません。特に、Error synchronizing after initial wipe
エラーは、別の問題を示している可能性があります。 OTOH、parted
はディスクの端を越えてバックアップGPTデータを読み取ろうとする副作用の可能性があります。いずれにせよ、論理セクタサイズの変化が見られる場合は、他の何かを処理する前にその問題に対処する必要があります。ディスクのパーティションを再分割したいが、Error synchronizing
エラーのために問題がある場合は、gdisk
ではなくcgdisk
またはgdisk
(parted
パッケージ内)を使用してみてください。またはGParted; gdisk
ファミリは、parted
ファミリよりもエラーに対してより堅牢です。
Linuxカーネルとユーティリティの両方に、Advanced Formatドライブをサポートするための変更が加えられました。これらの変更により、Advanced Formatドライブ上のすべてのパーティションが4Kセクター境界に適切に配置されます。 Advanced Formatドライブのカーネルサポートは、カーネルバージョン2.6.31以降で利用できます。 Advanced Formatドライブの分割とフォーマットのサポートは、次のLinuxユーティリティで利用できます。
Fdisk:GNU Fdiskは、ハードドライブをパーティション分割するコマンドラインユーティリティです。バージョン1.2.3以降は、Advanced Formatドライブをサポートしています。
Parted:GNU Partedは、ハードドライブをパーティション分割するためのグラフィカルユーティリティです。バージョン2.1以降は、Advanced Formatドライブをサポートしています。
4Kネイティブ(4Kn)ディスクの論理セクターサイズは4KBです。最新のオペレーティングシステムでは、これらのディスクにデータを保存できますが、通常、これらのディスクから起動することはできません。これらのディスクは通常、USB接続の外部ドライブです。
メディアストレージデバイスとして使用されるパーティションを作成するには、単に Ctrl+Alt+T キーボードでターミナルを開きます。開いたら、以下のコマンドを実行します:
Sudo mkfs.ext4 -m 0 /dev/sdb1
ほとんどの4kディスクは、3TBがプレートに収まるように4096バイトの物理セクターサイズを持っていますが、1つのセクターを512Bと想定するOSとの互換性のために、512Bの論理セクターサイズを保持しています。そのため、partedでprintコマンドを使用して詳細を印刷すると、セクターサイズの論理/物理512B/4096Bと表示されます。それは正常です。
この「変換」は、ディスク自体のインテリジェンスによって行われ、それは正常です。それがどのように機能するかです。
3TB全体が表示されない場合は、最初にBIOSでディスクサイズを制限していないことを確認してください。ディスクをサポートするためにBIOSの更新が必要な場合があります。
また、partedを使用して0から始まるパーティションを作成しますが、これは間違いです。ディスク上のパーティションが最適なパフォーマンスのために調整されるように、1MiBと同等のセクター2048で最初のパーティションを開始する必要があります。
そのため、ユニットをMiBに変更し、ディスクサイズをMiBで印刷するディスクの詳細を印刷し、1MiBから始まり最後のMiB(または最後の1つ前)で終わるパーティション(単一のパーティションのみが必要な場合)を作成します。
たとえば、3TBディスクには、実際には2,861,022 MiBのような容量が必要です。したがって、/ dev/sdXというディスクデバイス上のディスク全体にまたがる単一のパーティションを作成するのは、次のようになります(Xを正しい文字に置き換えます)。
Sudo parted /dev/sdX
unit MiB
mklabel gpt
print (to see the total size in MiB)
mkpart primary 1 2861022
quit
ディスクサイズが28 MiBを超えるまたは少ないMiBである場合、終了位置を調整します。
それでおしまい。その後、パーティションに必要なファイルシステムを作成します。
ソース、および追加の読み物
パーティションを4KBの倍数でアラインする限り、問題ありません。それ以外の場合、4KBの物理セクターを持つドライブに対して特別なことをする必要はありません。
古いパーティションソフトウェアは、63x512Bの倍数のセクターにパーティションを配置しました。これは、4KBの倍数ではなく31キロバイトであるため、ドライブに4KBの物理セクターがある場合、パフォーマンスが低下します。
現在、Ubuntuで利用可能なパーティション分割ソフトウェアは、これを行うことはもうありません(特に何らかの方法で要求しない限り)。ほとんどは、デフォルトで1MiBの倍数(2048x512Bセクター、これも256x4KBセクター)に調整されます。
それを調整しなかった場合はどうなりますか?
パーティションを4KBの倍数に揃えない場合、最悪の事態はパフォーマンスの低下(小さなファイルの場合はかなり大きなもの)です。 4KBセクターのドライブは、既存のシステムとの互換性のために512Bセクターをエミュレートする傾向があります。したがって、それらを512Bセクタードライブとして扱うだけで完全に機能します。ただし、単一の512B領域に書き込むと、4KBセクター全体が書き換えられます。
そのため、パフォーマンス上の理由から、ファイルシステムで使用する4KBクラスターがドライブ上の4KBセクターと一致していることを確認することが重要です。これにより、単一のクラスター書き込みでドライブに2つの4KBセクターを書き込む必要がなくなります。