あっかぎのページ

Raspberry Piに3TBのUSB HDD(HD-AC30TK)を追加してみた

20160402_1

Raspberry Piで大容量HDDを追加するときに、今までとやり方が少し違ったのでメモ。

今回追加するのは3TBのUSB HDD

今までのデータのバックアップとこれからのデータ保存用にかなり容量の大きいUSB HDDを買ってきました。

今回購入したのは、上の東芝製の3TB USB HDD。今まで使っていたのは1TBのHDDだったのですが、今回はそれよりも容量の大きなHDDにしました。参考ですが、容量によって値段がこんな感じになっています(2016年4月時点)。

  • 1TB 8,280円
  • 2TB 13,850円
  • 3TB 18,880円

1TBだとバックアップすると終わってしまうので、今回はそれより大きいものということで2TBと3TBが候補ですが、3TBの方がコストパフォーマンスがいいと思って3TBを購入しました。

USB HDDはポータブルタイプのHDDにしています。というのも、据え置き型に比べて次の3点で使いやすいからです。

  1. USBバスパワーで動作できる(アダプターいらず)
  2. 小型
  3. 持ち運びできる

ということで、ヨドバシカメラまで行って買ってきたHDD(HD-AC30TK)ですが、Raspberry Piにつなげてネットワークドライブにするときに少し苦労したので、その時のメモになります。

ポイントは次の2点です。

  1. バスパワーUSB HDDの消費電流が大きい
  2. 2TBより大きいディスクのフォーマット形式

順番に説明していきます。

バスパワーUSB HDDの消費電流が大きい

今回購入したHDD(HD-AC30TK)はUSBのバスパワー駆動の外付けHDDです。

HDDはモーターを回転させるために消費電流が大きい特徴があります。なので、昔は外付けHDDはアダプターで電源を確保しつつ、USBでデータのみのやりとりをしていました。

ところが、最近はUSBのパワーだけで動作させることができるようになってきました。その理由は主に2つです。

  1. HDDの消費電流が小さくなった
  2. USBの電流パワーが大きくなった

1つ目はモーターや制御ICの性能向上で、HDDそのものの消費電流が減ってきたことです。

そして、注意しておきたいのが2つ目のUSBの電流能力です。実は、USB自体は規格で「1ポートで電流は500mAまで(USB2.0)」と決まっています。ところが、iPhoneが出たあたりから、充電するのに500mAを超えた電流を要求するようになりました。本来は規格違反ですが、実用性を重視してPCメーカーやUSBアダプター、関連ICが500mA以上も大丈夫になってきました。この現状を踏まえて、USBの新しい規格のUSB3.0(コネクタが青)は、電流が900mAまでOKとなりました。

このあたりの背景を知っていればいいのですが、何も知らないと、今回のUSB HDDのように消費電流が大きいデバイスを使うときにトラブルになることがあります。例えば、古いノートPCにUSB HDDをつなげても読み書きできなかったり、認識しないことがあります。

この簡単な解決方法は、USB3.0対応でアダプター付属のUSBハブを間につなげることです(『セルフパワー』と記載のあるUSBハブ)。

上のようなUSBハブで『セルフパワー』と記載したものは、ACアダプターが付属しますので、このUSBハブを間に挟めば足りない電流を補うことができます。USB3.0の規格に対応したものであれば、900mAまでの電流が供給できますので、USB関連の電流パワーのトラブルはこれでほぼ解決できます。ただ、利便性がウリのポータブルHDDなのに、アダプター付きのUSBハブを使わないといけないので、その点がネックになります。

Raspberry Piは?

Rasbperry PiのUSBに関しても上に挙げた『USBの電流』に関して注意が必要です。以前これに関連する内容として、Rasbperry PiのUSBの電流に関して記事を書きました。

結論的にはモデルによって次のように供給電流が違っています(詳細は上の記事をご参照ください)。

model Revision 電流能力
A/B 1.0 各USBポート100mAまで
A/B 2.0 全USBポート合計300mA
A/B 2.1 全USBポート合計300mA
B+ 1.2 全USBポート合計1200mA

上の表にはRaspberry Pi 2や3がありませんが、B+と同じ合計で1200mAだと思います(未調査)。

ここで注意なのがB+以降のモデルです。実はデフォルトでは600mAまで(USB2.0規格まで)の電流能力に制限がかかっています。そのため、USB3.0を想定したようなUSB HDDをつなげると、多くの場合、電流不足によって起動しなかったり読み書き時にエラーが出て使えなくなります。

今回の東芝のUSB HDD(HD-AC30TK)もこれがモロに当てはまりました。普通にUSBポートにつなげると、起動のランプが点灯したり消えたり、モーター音が何度も起動しようとしては止まったりとなって起動できませんでした。

ということで、/boot/config.txtの設定を追加して、USBの電流能力を1200mAまで引き上げます。

$ sudo vi /boot/config.txt
$ sudo reboot

/boot/config.txtには次の内容を追記しておきます。

safe_mode_gpio=4
max_usb_current=1

実は、Raspberry Pi B+以降のモデルはUSBポートの電流を監視するICが載っています。上のコマンドはそのICの動作モードを600mA → 1200mAへ変更する設定となります。

先ほどの設定を反映してからRaspberry Piを再起動すると、無事USB HDDが起動できるようになりました。

注意点として、他のUSBポートにも電流消費の多いデバイス(例えばUSB無線LANや別のUSB HDDなど)をつなげていると、全デバイスの合計電流でチェックしているので、電流が足りなくなることがあります。この時は、接続デバイスを減らすか、上で紹介したようなUSBハブを検討する必要があります。

ぼくの場合は、USB無線LAN(WLI-UC-GNM2)と今回のUSB HDDをつなげた状態で動作させることができました。

何はともあれ、外付けUSB HDDを接続するときは『供給電流』というハード面も気にしないと動作しないことがあるので、要注意です。

2TBより大きいディスクのフォーマット形式

電流のことがクリアできたので無事に使えると思っていたら、第二の壁がありました。

今回初めて知ったのですが、「2TB以上を扱うにはGPTフォーマットにする必要がある」ということらしく、購入したUSB HDDのHD-AC30TKもGPTフォーマット形式になっていました。

それを知らずにfdiskすると

$ sudo fdisk -l

...
WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdc: 3000.6 GB, 3000592979968 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

とりあえず、/dev/sdcに3TBのディスクがあるのは認識しているようですが、普通にmountしようとすると失敗します。

$ sudo mount /dev/sdc1 /mnt
mount: you must specify the filesystem type

調べてみると、fdiskコマンドはGPTフォーマットに対応していないので、代わりにportedというコマンドを使う必要があるようです。

$ sudo ported -l

...
Model: TOSHIBA External USB 3.0 (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name                          Flags
 1      17.4kB  134MB   134MB                Microsoft reserved partition  msftres
 2      135MB   3001GB  3000GB  ntfs         Basic data partition

...

このように、portedコマンドならUSB HDDのディスク割り当てがきちんと見れます。どうやら、/dev/sdcには1と2の2つの領域があって、先ほどmountしようとしていた/dev/sdc1はシステム用の領域で、実際のディスク領域は/dev/sdc2にntfsとしてあるようです。

この情報がわかったので、あらためてmountします。

$ sudo mount /dev/sdc2 /mnt

これでうまくmountできました。

Raspberry Pi(Linux)のみで使うなら、ext4などでフォーマットし直せばいいと思います。ぼくの場合は、ノートPC(Windows)などでも使えるようにntfsフォーマットのまま使うことにしました。

あとはsambaなどでディスク共有すればネットワークディスクとしても使えるようになります。

おわりに

軽い気持ちでUSB HDDを追加しようとしましたが、いろいろと落とし穴がありました。

実はRaspberry Piの電流値をupしても電流不足で使えないかもしれないと思っていましたが、1200mAに上限を変更しただけで使えるようになったのはうれしい誤算でした。

本格的なファイルサーバーにするには、ネットワークの転送速度がネックになりますが(無線LANの場合)、データのバックアップや音楽サーバーレベルであれば問題なさそうです。

特にRaspberry Piの場合、SDカードがシステムやデータ保存のすべてを司るので、万が一のためのバックアップに外付けUSB HDDはいい選択ではないでしょうか(SDカードは壊れることがあって、壊れてしまうとほとんどが認識すらできなくなるので)。もし、扱う容量が小さいならUSBメモリでもいいかもしれないですね。