自宅サーバのシステムHDDセクタ異常発生につき、交換! 2TB→3TB LVM使用 fdisk→parted その2


前回、システムドライブがセクタエラーを吐いたため、ドライブを交換することになり、交換用ドライブが届いた件の続きです。

3TBの容量を活かすには、MBR(fdisk)ではダメ。GPTです。

今回、何も考えずに購入した交換用HDD(Seagate ST3000DM001/N)は3TBの容量です。交換前の現システムドライブは2TB。

KURODACHI」で2TB→3TBにハードコピーして、あとから領域拡張して終わることを目論んでいましたが、そうは問屋が卸さなかった。

2TBの現HDDで使っている、MBR形式(正しくは、MBR領域の情報でパーティション管理する形式)では2TB以上の容量を確保できず、捨てることになります。すっかり忘れていました。
データ用3TBドライブを既に所有していて、GPTで領域を切って運用しているというのに!(歳には勝てん)

2TBを越えるHDDを、無駄なく使用するには通常のfdiskでのMBR形式ではなく、より新しいGPT形式を使う必要があります。私のVineLinuxでは、コマンドラインの管理ツールはparted。

MBRからGPTに移行する必要があるため、「KURODACHI」は使えません

データディスクとして使う分にはpartedの使い方を調べて、領域確保してmkfsすれば普通通りに使えるのですが、今回はブートドライブとして使うため、私としては知識不足。調査が必要でした。

 MBRとGPTでは扱える容量も違うが、ブート方法も違う

マシンが起動する最初の最初は、電源投入後にマザーボード搭載のBIOSが起動し、HDDのMBR(先頭セクタ)を読み出しにいき、起動が始まります。PCはすべて、そのルールの下に作られています。

PCのHDDは、1セクタの長さは512byteと決まっています。MBR領域はHDDの先頭1セクタです。要は、たった、512byteしか容量がありません。

今時の大容量かつ複雑なHDDの起動に必要な情報すべてを、ここに入れ込むことはできないため、MBRを読んだ後、特定の別の領域にジャンプして続きの情報をゲットさせるなど、つぎはぎだらけの拡張で何とかやってきました。

fdiskでプライマリパーティションが4つ、拡張しても15個しか作れないのは、この領域の狭さに起因しています。
また、最大利用できるディスク領域も2TBまでに制限されます。MBR形式ではディスクのセクタ数を32bitで扱っていることによる制限です。

 

GPTは、この仕組みを見直すもので、セクタを取り扱うアドレスも64bitとするなど、MBR形式の弱点を克服しています。また、起動時にMBR領域を使用しません。当然、MBR領域から起動することを想定して作られているBIOSでは、GPTディスクを素直に起動することはできず、U-EFIという仕組みで起動するようにしているのだそうです。

取り扱える領域は8ZB(ゼタバイト)、128個のプライマリパーティションを扱えます。私が生きている間は十分持ちそうです。

Windows系ではBIOS+GPTの組み合わせでは起動できず、U-EFIが搭載されたマザーボードでないと起動しないようです。

Linuxではどうやら、少しの工夫を加えることで、U-EFIを搭載していないBIOSのみのマザーボードでもGPTディスクから起動できる方法がありそうな感じです。

パーティションを切るときは、AFTも要考慮

また、この新HDDはパーティションを切るときに、AFTを考慮する必要があります。

AFTはAdvanced Format Technology。最近発売のHDDはほとんどこれに対応しているようです。

AFTは、HDD内部で1(物理)セクタ長を4096バイトと、従来(512バイト)の8倍の長さにしており、その分読み書きのオーバーヘッドが少なくなり、速度が上がることになります。また、HDDの外(PC本体)に対しては、従来通りの1セクタ512バイトのフリ(論理セクタ)をして命令やデータのやりとりをしています。HDDの物理セクタ長を大きくしながらも、それに対応しないPCにも合わせてあげることができます。

 

一方OSは、1セクタ512バイトとしてHDDを読み書きしながらも、効率化のため、ブロックやクラスタという単位で、複数の連続するセクタをひとまとめにして処理して効率化しています。Linuxならその単位はブロック(だいたい1ブロック=8セクタ=4096バイト)です。Windowsならクラスタ。

Linuxは、パーティションの開始(論理)セクタを起点にして、8(論理)セクタずつをブロックとするため、パーティションの開始位置が8セクタの倍数でないと、ブロックとHDD内部の物理セクタが互い違いになって、読み書きパフォーマンスが落ちることになります。

つまり、パーティションの開始セクタは必ず8の倍数セクタの位置にするよう、注意する必要があります。

自宅サーバはU-EFI非搭載。BIOSからGPTドライブを起動する特殊な方法が必要

拙宅の自宅サーバのスペックは以下。自宅サーバ外観。

  • OS : Vine Linux 6.1
  • CPU : Phenom2 x6 1065T
  • メモリ : 16GB
  • HD : 3TB x1 , 2TB x1 , 1TB x1 (システムドライブは2TB)
  • マザー:Giga-byte GA-880GA-UD3H Rev.2.2 (U-EFI非搭載)

BIOSでGPTディスクからLinuxを起動しなければならなくなります。 調べてみたところ、

ドライブの先頭から2TBの範囲内に、”bios-grub”フラグを付けた、1MB程度のパーティションを作れば、そこを介して起動できるようです。

ですが、もう少し調べてみないと、作業にかかれません。

次回へ続きます。


コメントを残す

メールアドレスが公開されることはありません。