2011-08-25

Linux (Ubuntu 11.04)で2TB超のHDをソフトウェアRAID化する (2)

(承前)

パーティション分け

2TBを超えるHDでは従前のいわゆるDOSパーティションテーブルは利用できず、GUIDパーティションテーブル(GPT)を使わなくてはならない。今回のHDは2Tなので必ずしもGPTを使う必要はないが、新しく触れる技術なので使ってみたところはまり込んだ次第。

GPTによるパーティション分けはGNU partedというコマンドで行う。Ubuntu デスクトップインストーラで起動し、[Try Ubuntu] を選んでターミナルを開き、parted を実行すればよい。まずはパーティションテーブルの初期化だ(以下を実行するとHDの内容が全部読めなくなるので注意してほしい)。

$ sudo parted /dev/sda
(parted) mktable gpt

さて、説明は省くがGPTを起動ディスクに用いた場合、先頭にbiosgrub属性を持つ1Mのパーティションが必要である。また、Advanced Format Technology (Big Sector) 対応のため、パーティション境界を2048セクタにアラインした方がよいらしい。このためにはセクタ境界の指定にmibまたはgibを用いればいい。以下でbiosgrubパーティションを作成する。

(parted) mkpart _ 1mib 2mib
(parted) toggle 1 bios_grub

partedのhelpコマンドによるとmkpartコマンドの第一引数はprimaryとかextendedを指定しろと書いてあるのだが、これはおそらくDOSパーティション用で、GPTの場合第一引数は単なる名前になるようだ。この名前がどのように使われるかは私は知らない。この記事では名前は全部 _ で済ますことにする。

次にboot, swap, root用の各パーティションを作成する。

(parted) mkpart _ 2mib 1gib
(parted) mkpart _ 1gib 3gib
(parted) mkpart _ 32gib 48gib

DOSパーティションと違い、パーティションのタイプを指定する必要はない。また、3gib と 32gib の間の「穴」は、後々簡単に swap パーティションを拡大できるようにするための余地である。

(最後のパーティションをディスクいっぱいまで使いたい場合はmkpart _ 32gib -0gibとすればよい; ただし同期に長大な時間がかかる)

ここまでの作業でパーティションは以下のようになる。

(parted) unit mib
(parted) print free
Number  Start     End         Size         File system  Name  Flags
        0.02MiB   1.00MiB     0.98MiB      Free Space
 1      1.00MiB   2.00MiB     1.00MiB                   _     bios_grub
 2      2.00MiB   1024MiB     1022MiB                   _
 3      1024MiB   3072MiB     2048MiB                   _
        3072MiB   32768MiB    29696MiB     Free Space
 4      32768MiB  49152MiB    16384MiB                  _
        49152MiB  1907729MiB  11858577MiB  Free Space

確認してリブートする。

(parted) quit
$ sudo reboot

インストール

Ubuntuデスクトップインストーラで起動しインストールを開始する。[ディスク領域の割り当て] の場面では [それ以外] を選んで、手動で ext4 ファイルシステムや swap を設定し、マウントポイントも設定する。

(つづく)

Linux (Ubuntu 11.04)で2TB超のHDをソフトウェアRAID化する (1)

今回入手したHP Z800には500GBのHDが付いていてWindows 7 Professionalがインストールされているが、Windowsは必要ないのでLinux (Ubuntu)に入れ替える。最終的な目標は外付けの集合型HD箱にHDを5台詰め込んでRAID 5で運用することだが、本体に内蔵するシステム用HDもRAIDで運用したいと考えた。

LinuxでソフトウェアRAID (RAID 1)を構成する話なんてありふれていて、ちょろっと検索して調べれば簡単に済む話だと思っていたが、これが大違い。検索の結果、一番簡単なやり方はインストーラで最初からRAID構成にすること、ということだったので試してみたところ、

  • Ubuntu デスクトップインストーラではRAID構成はできない。
  • Ubuntu Alternative インストーラならできるらしいが、HP Z800のハードウェア(おそらくイーサネットチップ)がサポートされておらずインストーラがうまく動かない。
  • それ以前の話として、2TBを超えるHDのパーティション切りにインストーラが対応できていない。

などの理由で一筋縄ではいかないということが判明した。それからしばらくの間格闘した結果、うまく設定できる方法がわかったのでここに記述する。

材料

  • HP Z800(付いてきた500GBのHDは外す)
  • 2TB HD × 2(512バイト/セクタ)(sda, sdbと呼ぶ)
  • Ubuntu 11.04インストールDVD(デスクトップ版)

ゴールの設定と作業の概要

ゴール: boot, swap, rootの各ファイルシステム用のパーティションをRAID 1で運用する。

作業の概要は以下のようになる。

  1. sdaをパーティション分けする。
  2. sdaに Ubuntu 11.04 デスクトップ版をインストールする。
  3. sdbにRAID 1を構成する。このとき相方が無いsdb 1台のみの設定で構成する。
  4. sdbにsdaの内容をコピーし、相方の無いsdbのみのRAID 1で起動できるようにする。
  5. (この時点でsdaは全く使われていない状態になっている)sdaをsdbのみで運用されているRAID 1に参加させる。

(つづく)

HP Z800 Workstateion購入

家にあるLinuxサーバの老朽化が気になっていたのだが、2011年7月に開催されたnVIDIAのワークショップに参加したところHPがTesla C2050入りのワークステーションを台数限定で特売するという情報を得たので、よい機会だと思い購入してサーバのリプレースをすることになった。

スペックは以下の通り。

  • 筐体: HP Z800
  • CPU: Intel Xeon E5620 (2.4GHz, 4コア) × 2 水冷
  • RAM: 16GB
  • VGA: nVidia Tesla C2050 × 2

HP Z800

非常に重くて水冷にもかかわらずかなりうるさいが、幅と高さがそれほど無く(奥行きはある)内部のアクセスも非常に簡単な優秀な筐体だ。今購入すると100万円近くになる構成だが、なんと半分くらいの値段で買うことができた。それでも高いが前の奴は8年も前に買ったものだからまあいいとしよう。

元々内蔵されているHDにはWindows 7 Professionalがプリインストールされているが、これは外してそのまま保管し、最近安くなった2TのHDを2台入れてLinuxでソフトウェアRAIDを設定することにした。あちこちに参考になる記事があるし、簡単にできると思っていたのだが意外にもかなりはまったので次回はこれについて書く予定。

References

HP Z800 Workstationのメーカーページ: [日本HP Z800 Workstation]

Intel Xeonは種類がたくさんあってどう違うのかよくわからなかったので以下を参考にした: [インテル® Xeon® プロセッサー 5600 番台]

2TのHDは日立HGST製のをAmazonで買った: [Amazon.co.jp: 日立 HGST Deskstar パッケージ版 3.5inch CoolSpin 2.0TB 32MB SATA 6.0Gbps 0S03224: パソコン・周辺機器]。後に増設する外付けのRAID 5箱用と(あとスペアと)合わせて8箱購入。