カテゴリー
FreeBSD PC

LTOドライブを買った

日々増大するアニメ録画に対応するために、テープドライブ(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など)

さまざまな事を考え、導入することにしました。

買ったものは以下の通りです。

  1. LTO-4ドライブ ヤフオクで12000円
  2. SAS (Serial Attached SCSI)インターフェース LSI00194 20000円
  3. LTO-4テープ 4000円
  4. 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」して、テープのたるみを取った方が良いでしょう。

参考文献

Share this...