2TB SATAハードディスク増設&Linuxカーネルアップグレード on Debian

そろそろメインのハードディスク容量が75%になってきて心配なのでハードディスクを増設してみました。 それまでPCが立ち上がらなくなるトラブルに見舞われるなど、冷や冷やしましたが、無事に成功しました。

[update] 続報

ハードディスク増設

接続しているハードディスクは10GB、80GB、500GBのIDEのみです。 ここ数年はSerialATAが主流になったため、IDEで500MBを超えるハードディスクは売っていないようです。 そのため、大容量ハードディスクを増設するためには否応なくSerialATA化しないといけません。 なにせ、PCが7年前のPentium 4世代であり、SerialATAのコネクタが存在していないのです。

PCISerialATAボードを使えば古いPCでもSerialATAドライブを増設できることは知っています。 しかし、いかんせんLinux、動かないかもしれないので情報なしにハードウェアを増設するのはリスキーです。 そこで、ぐぐった結果、玄人志向のSATAEI-LPPCIをLinuxで動かしている人を見つけました。 また、twitter @kaorin_linux さんからも動作したとの報告をいただきました。 なんでもBIOSで認識して、SerialATAからブートもできるそうです。

SATAEI-LPPCIは内部1ポート、外部1ポート(eSATA)です。 eSATAは外付けディスクをSerialATAとして扱うとのことです。 僕は使う予定はありませんが、内部SATA - 外付eSATA変換ケーブルを使えばもう一台内蔵SerialATAドライブを装備できそうです。

動作するとわかれば、さっそく注文しました。 ハードディスクはWestern Digital WD20EARS-00MVWB0(2TB)です。 これ以上の容量のものは現在売っていません。 2TBが8390円だなんて、いい時代になったものです。

109日ぶりに再起動をしたし、長いこと匡体の中身をあけていないのでホコリがとてもたまっていました。 増設を機に中身を徹底的に掃除をしたのだが、再起動できないトラブルにみまわれました。 これで半日無駄にしましたが無事に起動することができたので安心です。 たぶん掃除をしたときにへんなところに触れてしまったのかもしれません。

接続そのものはいたって簡単でした。 PCISerialATAボードを差し、内部SerialATAからハードディスクにケーブルを接続すればいいだけです。 なお、SATAEI-LPPCIにはSerialATAケーブルが1本付属しています。

電源はIDEのものとは異なるので注意が必要です。 幸い、現在のPCを買ったときの電源にSerialATAアダプタが付属していたので、ラッキーでした。 電源の違いについては知らなかったので、あやうく買い出しに行くハメになるところでした。

ext4にフォーマットする

せっかくハードディスクを増設するのだから、ファイルシステムも新しいものにしたいです。 Linuxではext4ファイルシステムが安定版として使えるようになりました。 ext4デビューしてみました。

SerialATAハードディスクはこちらの環境では/dev/sdaとして認識されています。 特にモジュールの設定などをすることなく、勝手に認識してくれました。 最近のLinuxは素晴しい!

まずやることはfdiskです。 「sudo fdisk /dev/sda」で全領域のprimary partitionを作成します。 僕の場合、ハードディスクをたくさん装備しているのでわざわざパーティションにわけたくはありません。

その後は「sudo mkfs.ext4 -m0 /dev/sda1」でext4ファイルシステムを作成します。 超つきの大容量なのでroot領域はなくてもよいと考え、「-m0」をつけました。 これだけの大容量になると、mkfsにも10分かかります。

マウントするが…

さっそく、マウントしようと思い、/etc/fstabに以下の行を追加しました。


/dev/sda1 /2t ext4 defaults,noatime,errors=remount-ro 0 1

その後、「sudo mkdir /2t; sudo mount /2t」しても、「unknown fs `ext4'」と怒られてしまいました。

原因は、Debian lennyのカーネルが2.6.26なので、ext4が正式サポートされていないのでした。 カーネルをアップグレードする必要があります。

カーネルアップグレード

debian unstableにすればカーネル2.6.32が使えますが、あまり不安定版は使いたくありません。 そこで新しめのパッケージを安定版対応にしている backports.org の出番です。 Instructions を参考に /etc/apt/sources.list を設定します。 ただ、unstableの行は取り除かないとエラーがでました。

そして、「sudo apt-get -t lenny-backports install linux-image-2.6.32-bpo.5-686」を実行して再起動をすれば無事にカーネルはアップグレードされます。 /boot/grub/menu.lstに以下の行があることを確認しておきます。 initrdの行がないとroot fsがマウントできず、kernel panicしてしまいます。


title Debian GNU/Linux, kernel 2.6.32-5-686 backport
root (hd2,0)
kernel /boot/vmlinuz-2.6.32-bpo.5-686 root=UUID=略 ro
initrd /boot/initrd.img-2.6.32-bpo.5-686

マウント!

すでに/etc/fstabに書き込んでいるので、再起動後は/2tにマウントされています。 そして、さっそく「df」を実行してみると、


Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sdb1 2063632 729664 1333968 36% /
tmpfs 1032972 0 1032972 0% /lib/init/rw
udev 10240 632 9608 7% /dev
tmpfs 1032972 4 1032968 1% /dev/shm
/dev/sdd1 2063696 741028 1238812 38% /mw1
/dev/sdd2 7677084 5244012 2043096 72% /mw2
/dev/sdc1 73052944 42133360 30919584 58% /80g
/dev/sdb2 471097808 353363808 117734000 76% /m
tmpfs 1572864 280864 1292000 18% /tmp
/dev/sda1 1922858352 200032 1922658320 1% /2t

一番下が増設した2TBのハードディスクです。 あまりの大容量のため、桁がずれてしまっています(笑) メインメモリと同容量の小さなパーティションから、2TBの巨大パーティションまであり、なかなかカオスな状況です。

さらに驚くことに、hda→sdb、hdc→sdc、hdd→sdd、になっています。 また、/dev/dvd、/dev/cdromは/dev/sr0になっています。 最近のカーネルでのデバイス名の変更なのでしょうか。

ベンチマーク

新しいハードディスクといえば、さっそくやりたいのがベンチマーク。 /dev/sdaが増設した2TBのSerialATAハードディスク、/dev/sdbが旧/dev/hdaの500MB IDEハードディスク。 IDEよりやや速いくらいです。 最近のハードディスクは80〜120MB/sくらい出るらしいですが、PCIの理論値が133MB/sなので、及第点だと思います。 SerialATAネイティヴなら、もっと高速でしょうね。


$ sudo hdparm -t /dev/sd[ab]
/dev/sda:
Timing buffered disk reads: 256 MB in 3.00 seconds = 85.28 MB/sec

/dev/sdb:
Timing buffered disk reads: 228 MB in 3.01 seconds = 75.75 MB/sec