テープドライブをCygwinから使うメモ

# 概要
今更LTO4を入手したので、Cygwinから使用するメモ。現代はLTFSなLTO5以上が主流になってきたが、ヤフオクの相場はまだ2万～で、動きそうなドライブは5万代～とちょっと高い。そこで、1世代前のLTO4なら数千円で入手可能なため、こちらを使う。LTO4までは、LTFSに対応して居らず、専用のアーカイバなどを使って読み書きする必要がある。有名どころにBackUpexec等があるが、高い。超高い。

Linuxでは、mtコマンドとtarコマンドでテープドライブを制御できる。そこで、WindowsにCygwinを入れ、tarで読み書きできるようにする。

ちなみに、LTO4と5のテープ価格があまり変わらないところを見ると、本格的に使うならテープのコストでひっくり返ってしまうかもしれない。そうするとLTO4の入手はあまりお得では無い可能性もある。しかし、初期投資は抑えておいた方が良かろうもん。金、ないし。

# 環境
- Asrock Z77 extream4
- Windows7 SP1
    - OSはWindows10でも大丈夫と思われる
- SAS HBA
- HP LTO Ultlum4
- Cygwin 

# ドライブ調達
![IMG_1605.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134622/921b63ed-acea-0734-fef9-8d16ebec56e5.jpeg)

- ヤフオクで、できるだけ状態の良さそうな物を選択。多くの場合、状態は分からず結局ガチャになる。使えなければ次行こくらいの気持ちで購入する。故障かどうか見分けるのがしんどいので、最初は動くドライブを触っておくのが良い。

- LTO5は、メーカーによってドライバの出来やファームの出来に差異があるが、クラシックなシーケンシャルデバイスとしてしか使えないLTO4ドライブはどこ買っても差異はなさそう。
- ドライブは立ち上がるとReadyが点灯する。

# テープ調達
コレもヤフオクやamazonなどで。心配ならクリーニングテープを用意しておくと吉。ただし経験上、クリーニングを要求されるほどヘタッたドライブは寿命が尽きていることが多く、ろくに書けないことが多い。

# テンポラリドライブの設計
LTOはシーケンシャルアクセスしか出来ない。テープの速度は増減できるらしいが、基本的に一定速度でテープは流れていく。安定した書き込みのためには、RW性能が安定しているHDDアレイが必要になる。


- LTO4は書き込み時のピーク性能約120～170MB/secが必要。HDD1台は厳しく、RAIDを構築するなどして対応する方が良い。テンポラリだからと割り切りraid0で構築しても良いかもしれない。お金があればSSDでも良い。

- コンスタントにRWが発生する性質上、SMRのHDDとの相性は要確認。今回は、CMRの古い1TBドライブを4台、Z77内蔵raidにてraid5でアレイを組んで使用した。

# SAS HBAについて
内蔵LTOドライブの多くはSASなので、適当なHBAが必要。LSI SASシリーズのOEMがヤフオクで安く出回っているので、それらを入手し実装するのが楽。 

## HBAのファーム
LSI SASのFWには、RAID用ファームとit用ファーム（単にHBAとして機能する）の2種類がある。今回入手したHBAは、RAIDファームのままだとWindows7のドライバがあたらず、itファームに書き換えた。

ファーム書き換えは、OEMカードの場合一工夫必要。改造実績があるカードを選ぶのが良い。例えば、富士通 D2607等は入手性も良く、安い。改造も可能。

# SASケーブル
例えばコレ：https://www.amazon.co.jp/gp/product/B016CXIKB4/ を使う。HBA側はMiniSASになっていることが多い。SASケーブルには紛らわしく、SAS-SATAケーブルもあるので注意。SASケーブルの形はSATAと同じだが、SASは全二重通信なので、兼用できない。

# LTOドライバの認識
HBAを装着し、LTOドライブを繋ぐとデバイスマネージャにLTOドライブが現れるはず。デバイスマネージャに「？」アイコンが付いている場合、ドライバが当たってないので、Windows標準ドライバを入れる。

プロパティ→ドライバ→ドライバの更新→「コンピュータを参照して（略）」→「コンピュータ上のデバイスドライバの一覧から（略）」→LTOを選択。

LTOの世代が何であれドライバは共通なようだ。

# Cygwinのセットアップ
依存しているコマンドを入れる

- mt
- cpio

# 使ってみる
詳しいことは、自分が説明するよりとってもいいサイトがあるので、https://blog.yukirii.dev/linux-lto-tape-drive-management-commands/　  を参照。Cygwinを管理者権限で実行し、

```
$ mt -f /dev/nst0 status
```

を実行し何か返事が返ってくればOK。SCSI4 tape Drive等と表示されるはず。

## 書き込み
書き込み先のディレクトリに移動し、

```
#tar -cvf /dev/st0 . -b 128
```

とすれば、カレントディレクトリの内容を書き込む。複数本にまたがる場合、Mオプションをつける（が、動いたことは無い）。

## 読み込み（リストア）
リストア先に移動し

```
#tar -xvf /dev/st0 -b 128
```

とすれば、カレントディレクトリにリストアされる。-bはブロックサイズで、読み込み/書き込み時に合わせる必要がある。ある程度大きい方がいいようだ。512とか2048とか。

# ケースラベル
何度も書くがテープはシーケンシャルデバイスなので、中身の確認が結構大変。
https://www.arkbell.co.jp/media/lto7/
の中盤にあるようなラベルを作成しておくと良い。

# バーコード管理
バーコードラベル管理+Access等と併用するともっと良さそうだが、守備範囲なので今回は見なかったことにする。

# 所感など
- 動作音は割と静か。ローディング時はガシャガシャ音がする。学生の時購入したドライブは変な音がしていて書けなかったが、やはりあれは壊れていたことが確認出来た。
- 動作中、ウイ～～～ンと軽快に動いている間は気分がいいがたまに止まる。これはテープの端まで行き、折り返した時に一旦停止するようだ。
- 速度は110MB~120MB/sec。それなりの転送速度は出るが、一定では無い。テープ折り返しが何度もあるので、平均的には8～90MB/sec位の印象。
- 800GBで収まるバックアップデータはなかなか無いと思うので、必要なバックアップデータは限定したり、上手く運用しないと現実的なバックアップは出来なさそう。要注意。

## 書籍
Unixバックアップ ＆ リカバリ
https://www.oreilly.co.jp/books/4873110491/　
テープドライブについてかなり詳しく記述されている良書だが、絶版っぽい。

## リンク
LTO ドライブを購入したので購入経緯や mt コマンドの使用方法をまとめてみた
https://blog.yukirii.dev/linux-lto-tape-drive-management-commands/

自宅LTOテープバックアップのススメ
https://yuriko.co.nz/w/index.php/%E8%87%AA%E5%AE%85LTO%E3%83%86%E3%83%BC%E3%83%97%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%AE%E3%82%B9%E3%82%B9%E3%83%A1