DroboをLinux直結、さらに2TiB超えのためのいろいろ

Droboファミリー

バックアップストレージの有り様についていろいろ迷った末、メンテの容易さと拡張性で、Droboを使うことにしています。ただし、Linuxでの利用は限りなくメーカー非推奨なので、意外と苦労しました。

あたりにしたがって、作業を行えばうまくいくのですが、あちこち記述にブレがあるので、一応現時点での完全版の記録、です(といっても、Ubuntuを使うのであればほとんど障害というほどの障害はないです。セットアップさえ終わってしまえば、ただのUSBのストレージとして使えるので、もしかしたら、gpt対応カーネル&ext4対応のマシンさえあれば、Ubuntu自体不要になる可能性さえも。ためしてないけど。)

以下の記述は、Drobo(2nd Gen.)を前提にしているので、それ以外の機種だとまた違うところがあるかもしれません。あ、あと、とにかくこの手法はメーカーサポート外(のはず)なんで、くれぐれも自己責任で。

というわけで、手順。

まず、Ubuntuマシンを手に入れる。

本家サイトにはRedHat系、ソースから、gitから、とさまざまな方法が書いてありますが、なぜかうまくいかず。こういうところで積極的に苦労したい人以外にはUbuntuがイチバン簡単、なのでこれを推奨します(っていうか本当にちゃんと全環境検証したのかな。。本家の人。。)。

% sudo apt-get install drobo-utils

GUIで操作(後述しますが、あんまり意味ないかも)したければ、

% sudo apt-get install python-qt4

も。

HDDの準備

まず、テキトーにHDDをぶち込む。後で自由に交換できるから、SATAでさえあればホントになんでもいいんだけど、Droboの本体価格のことを考えると、まあ最低でも1TB以上、を使わないと意味がないかと。

Linux機とDroboを接続(USBを前提としています。eSATAのモデルだとまたちょっと違うかもしれません)したら、

% sudo drobom status

と叩いてみる。反応があれば、次に進みましょう。

LUNSIZEの決定

LUN = Logical UNitの意味らしい。設定した当時はdrobomのソースでLUNの最大値は8までに制限されていた、はず。

% sudo drobom set lunsize 8 PleaseEraseMyData

( drobom setlunsize /dev/sdd 8 PleaseEraseMyData っていう記述もあるけど、エラーが出てうまく動かない)

WARNING: lun size > 2 TiB known not work in many cases under Linux
You asked nicely, so I will set the lunsize to 8 as you requested
set lunsize to 8 TiB
unmounting: /home/drobo
umount /home/drobo:
Done… Drobo is likely now rebooting. In a few minutes, it will come back with the new LUN size.

んな感じでdroboが勝手にリブートする。

パーテーションを切る

次にパーテーションをgpt(GUID Partition Table)にする(コレやらないと8TB活かせない)。

% sudo parted /dev/sdb

GNU Parted 1.8.9
Using /dev/sdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel
New disk label type? gpt
(parted) mkpart ext3 0 100%
(parted) quit
Information: You may need to update /etc/fstab.

fdisk -l して状況を確認。

% sudo fdisk -l

ディスク /dev/sda: 320.1 GB, 320072933376 バイト
(↑こちらは本体マシンなので、以降に出力される情報は略)

警告: GPT (GUID パーティションテーブル) が ‘/dev/sdb’ に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。

ディスク /dev/sdb: 8796.1 GB, 8796093022208 バイト
ヘッド 255, セクタ 63, シリンダ 1069397
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x00000000

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 1 267350 2147483647+ ee GPT

よしよし。ではメインイベント。

ファイルシステム作成

% sudo mkfs -t ext4 -j -i 262144 -L Drobo -m 0 -O sparse_super,^resize_inode /dev/sdb1

dev/sdb1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=Drobo
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
33554432 inodes, 2147483639 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
65536 block groups
32768 blocks per group, 32768 fragments per group
512 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544, 1934917632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information:done

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

完成。だがしかし、ここから延々とチェック(内部構築?)がはじまるので、電源をぶち切ったり、droboコマンドやらmountコマンドを叩いたりせず、根気づよく放置して待つこと。フタ内部のHDDアクセスランプ(←→マーク隣の緑のやつ)が消える、まで。

マウントとか

で、あとはまあ好きにすりゃいいんですが、

% sudo mkdir /home/drobo

して、 /etc/fstab に

/dev/sdb1 /home/drobo ext4 defaults 0 0

とかしておけばおk。こまかいハナシだけど、X上げとくと/media に自動的にマウントしちゃうと思うんで、こういう明示的な指定をせずに「おおちゃんとマウントしてるから大丈夫」と、そのままフェイスレス運用とかにしたときにハマるので注意。

fstabは、UUIDで書いておいた方が無難。blkid /dev/sdxxxとかして(あるいはblkidと単に打てばだいたい見当つくかと)droboボリュームのUUIDを調べて、

UUID=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home/drobo ext4 defaults 0 0

のようにすれば大丈夫。

あ、あと、フォーマットはext3でもいいと思うんだけど、rdiff-backupを使っているせいか、使用率20%くらいの段階でinodeが飽和してしまった、ということがあって、ext4推奨。(Droboサイトではext4非推奨、なんだけどね。。)

もひとつおまけ。X上がってるんなら

% sudo drobom view

でGUIのユーティリティが上がります。HDDの挿さり状況とかがグラフィカルに見えていいかんじだけど、なんかうまく動かないこともあったような。。ま、気休め程度に。

とりあえず、一年弱くらいはノートラブルで稼働中。

関連してそうなエントリ

日高崇