日々増大するアニメ録画に対応するために、テープドライブ(LTO)を購入しました。
今まで(約3年間)はタイトルごとにBlu-Ray DiscにBDAVフォーマットで焼いて待避していたのですが、メリットとデメリットがあります。
- (メリット) 民生用の機械に突っ込めば見られる。
- (デメリット) BD-R DLの場合、50GBづつしか待避できない。
- (デメリット) BDXLの場合、100GBづつ待避できるが、メディアが高い。
- (デメリット) それなりにメディアがかさばる。
テープドライブの最近の主流は「LTO (Linear Tape-open)」という規格です。最新のLTO-6規格では、VHSテープ半分ぐらいのテープカートリッジ1本に、2.5TB(BD-R DL 50枚分)のデータが入ります。値段がこなれているLTO-4規格でも、800GB入ります。
テープドライブを導入した場合、以下のようになります。
- (メリット) LTO4の場合、一度に800GB待避できる。メディアもあまりかさばらない。
- (デメリット) 録画データを見るときはPCが必要。一度HDDにコピーしてから再生という手間がかかる。
- (デメリット) 初期投資がかかる。LTOドライブと、対応するインターフェースカード(SASなど)
さまざまな事を考え、導入することにしました。
買ったものは以下の通りです。
- LTO-4ドライブ ヤフオクで12000円
- SAS (Serial Attached SCSI)インターフェース LSI00194 20000円
- LTO-4テープ 4000円
- LTOクリーニングテープ 5000円
まずドライブです。新品を買うとたいてい40万円ぐらいするので、ヤフオクを監視します。たまに中古ドライブやドライブを搭載した中古サーバ機が手頃な値段で売られています。この値段で手に入ったのは割と運がいいです。
インターフェースは、FreeBSDで使える 9211-8i を選びました(参考:[FreeBSD-user-jp:95537])。
テープはお試しでとりあえず買ったのがこの値段でした(新宿や秋葉原のヨドバシにあります)。使えることが確認できたら、通販でまとめて買うと安いでしょう(1本3000円ぐらいにはなります)。
ご家庭のFreeBSDマシンにつないでみた結果が以下になります。
mps0: <LSI SAS2008> port 0xe000-0xe0ff mem 0xfe8fc000-0xfe8fffff,0xfe880000-0xfe8bffff irq 18 at device 0.0 on pci2 mps0: Firmware: 19.00.00.00, Driver: 19.00.00.00-fbsd mps0: IOCCapabilities: 185c<ScsiTaskFull,DiagTrace,SnapBuf,EEDP,TransRetry,IR> sa0 at mps0 bus 0 scbus0 target 2 lun 0 sa0: <HP Ultrium 4-SCSI U2CD> Removable Sequential Access SCSI-5 device sa0: Serial Number ******** sa0: 300.000MB/s transfers sa0: Command Queueing enabled
デバイス名は /dev/sa0 (書き込み後に自動巻き戻し)、 /dev/nsa0 (書き込み後に巻き戻さない)になります。
テープドライブの制御にはmtコマンドを使います。詳しい使い方はman mt(1)で。
さて、寝てる間に処理したいので、コマンドを作成します。
まず、800GBに収まる範囲で書き込むデータ(ディレクトリ)を選択するコマンド「select_write_data」を作成します。
#!/bin/sh # カレント以下にあるディレクトリを、ディレクトリの最終更新が古い順に、 # 容量がLIMIT(MB)以下に収まるように選択し、ディレクトリ名を出力。 # 容量(LTOテープの容量は10^n単位なので少なくしてある) LIMIT=762939 # 容量オーバーの場合、次のディレクトリに行くが、この個数を超えたら終了する SKIPMAX=5 # for文でスペースで区切られないように IFS=$'\n' # 現在の使用量 using=0 skip=0 for i in `ls -trF . | grep '^[^_].*/$'`; do current_using=`du -m $i | awk '{print $1}'` using=`expr $using + $current_using` if [ $using -ge $LIMIT ]; then using=`expr $using - $current_using` skip=`expr $skip + 1` if [ $skip -ge $SKIPMAX ] ; then break fi else echo $i fi done echo "using: $using" >&2
次に、書き込みを行うコマンドを作成します(内部で select_write_data を使用します)。
#!/bin/sh RECORD_DIR=/public/video/from_chinachu IFS=$'\n' mt rewind cd $RECORD_DIR for i in `select_write_data` ; do tar cvf /dev/nsa0 "$i" done
あとは、ドライブにテープを入れてこのコマンドを実行すると、古い録画データから約800GB分を、テープに書き込みます。書き込みフォーマットはtarで、ディレクトリごとに1つの領域を使用します。
Tips
- どのディレクトリ名が、テープの何番目の領域に書き込まれたかは、別途管理する必要があります。私は書き込み後に select_write_data をもう一度実行し、出力をテキストファイルに保存しています。
- テープを保存するときには、テープを取り出す前に「mt retension」して、テープのたるみを取った方が良いでしょう。
参考文献
- 最後の砦・業務用ストレージをご家庭で!(Windows環境での読み書き)