■ 古い計算機はさっさと捨てよう
某所にて、古くなって処理能力不足なコンピュータを捨てようと、いろいろ格闘中です。ワークステーション本体は捨てたいんだけど、バックアップ装置はまだ捨てないほうがいいかな、と思い、先週、いろいろ試行錯誤していました。
ワークステーション本体は、SunのEnterprise 450という、10年くらい前の製品です。
http://jp.sun.com/products/guide/1997/JTF450DE.pdf
memconfというコマンド見ると、こんなスペック・・・
banner: Sun Enterprise 450 (4 X UltraSPARC-II 296MHz)
model: Ultra-4
Sun development name: Tazmo (Tazmax/Tazmin)
Japanese Solaris 2.6 なんたら SPARC, SunOS 5.6
4 UltraSPARC-II 296MHz cpus, system freq: 99MHz
CPU Units:
========================= CPUs =========================
Run Ecache CPU CPU
Brd CPU Module MHz MB Impl. Mask
--- --- ------- ----- ------ ------ ----
SYS 0 0 296 2.0 US-II 2.0
SYS 1 1 296 2.0 US-II 2.0
SYS 2 2 296 2.0 US-II 2.0
SYS 3 3 296 2.0 US-II 2.0
Memory Units:
Interlv. Socket Size
Bank Group Name (MB) Status
---- ----- ------ ---- ------
0 none 1901 128 OK
0 none 1902 128 OK
0 none 1903 128 OK
0 none 1904 128 OK
2 none 1701 128 OK
2 none 1702 128 OK
2 none 1703 128 OK
2 none 1704 128 OK
empty sockets: U1801 U1802 U1803 U1804 U1601 U1602 U1603 U1604
total memory = 1024MB (1GB)
なんだか、いかにも、もういらねーよね、という代物です(笑)。
これに接続されていたバックアップ装置というのが、
Sun StorEdge L280
http://docs.sun.com/app/docs/doc/805-3958-10?l=ja
というもので、DLT7000というテープを、最大8本収納できる(でも、1本は、クリーニングテープを入れておくべき)ものです。
実は、テープ1本あたり、35GBの容量で、圧縮機能を使えば、だいたい70GBくらい記録できるので、えーと・・・70*7=490GB?!
しかも、データ転送レートが、5MB/sec・・・遅すぎ・・・
なんかコイツも、もういらねー!といいたくなる気もするのですが、まだ新品のテープも残っていますし、貧乏性なので、捨てるのもしのびないということで、このテープライブラリだけは残すことにしました。
■ バックアップソフトが重要
こいつ、Sun StorEdge L280を、どのマシンに接続しようか?と少し考えてみました。ワークステーションにするか、PCワークステーションや、パソコンには接続できないか?
さて、ところで、バックアップというのは、ハードウェアだけではなく、ソフトも重要なんです。バックアップ装置と、できのいいバックアップソフト、2つそろって、はじめて、役に立つんですね。Unixのdumpコマンドとrestoreコマンドでも、なんとかやろうと思えばできなくはないんですが、バックアップからデータを復旧するのは、かなり手間がかかるんですよね。
これまで商用のバックアップソフトを使ってきたのですが、バックアップソフトのバージョンが古いままで、最新のOSに対応できそうもないし(今、Solaris 2.6なんです・・・笑)。
・・・で、いいフリーソフトないかなぁ~と探していたら、ありました!
Bacula
http://www.bacula.org/
ネットワーク経由でバックアップ、テープのチェンジャーに対応、などなど、必要な機能はすべてそろっています。・・・てゆーか、今使っている、某Networkerうんたらというバックアップソフトと、けっこう似てるんですね・・・
FreeBSDではportsになっているので、インストールは簡単です。
よっしゃ、じゃ、あとはこのDLT7000 テープライブラリが、パソコンにつながって、FreeBSDで使えればOKじゃん、ということになりました。
■ SCSIで大いにはまる
StorEdge L280は、SCSIなんで、SCSIカードを調達してきて、パソコンにつなげばOKじゃん・・・最初、そう簡単に考えていました。それが大間違い。
私は、バイトして稼いだお金で最初に買ったパソコンがMacintosh IIciだったので、SCSIには愛着があり、割と長い間、SCSI信者だったんです。SCSIなMOドライブとか、スキャナとかいろいろ持ってます。しかし、ある時期から、コストパフォーマンス的にもうATAでいいじゃん、と宗旨替えしてしまっていました。それからしばらくして、SCSIのほうは、次々に新規格が登場していき・・・というわけで、もはや、SCSIっていってもその中身は、いろんな規格が多すぎで、わけわかんないことになっていました。
L280側は、68ピンのWide SCSIなコネクタ。Sun Enterprise 450側も、68ピンのコネクタだったんですが、ドライブ側とはちょっと違って、ピンではなくて、ぺったんこにつぶしたような、密集したコネクタ。
パソコンのSCSIカードは、たまたまAdaptecなカードが手元にあったり、ちょっとした別件で新たにUltra320なカードを購入してましたし、幸い、いろんなタイプのケーブルもあったので、どれかの組み合わせでつながるだろう、と思っていました。
・・・ところが! どうやっても、SCSIデバイスとしてStorEdge L280が認識されません。エラーとかでちゃうんですね。
で、最終的にわかったこと。
- StorEdge L280のインターフェイスは、ディファレンシャルSCSI(differential SCSI)というもの
- パソコン側のSCSIホストバスアダプタは、Ultra160とか、Ultra320とかに対応した、やつで、LVD(Low Voltage Differential)というやつが使える
- 同じDiffrentialなんだけど、L280のほうは、LVDじゃない、ただのDifferentialだった。HVD(High Voltage Differential)とか呼ぶらしい。
- Differentialは、原則として、Differentialじゃないやつ(シングルエンド、Single End、SEとかいう)とは互換性がない。L280が、コレにひっかかった。L280は、Differentialのみが使える
- だけど、互換性がないのって厄介じゃん、と思ったのか思わないのか知りませんが、その後、LVDという規格が作られたときに、LVDとSEの両方に対応した、LVD/SEというものが、広く普及するようになったらしい。
- いまどき売られているUltraSCSIカードは、みんな、LVD/SEってやつ。
- いまでは、昔のただのDifferential(LVDと区別するために、あえてHVDと呼ばれるらしい)なんてものは、過去のものとして忘れられているらしい。
- LVD/SEは、HVDとは互換性がない。だから、L280をパソコンに接続しても、エラーになって認識できなかった、というわけ。
- ちなみに、Differentialだと、電気的ノイズに強いので、ケーブルを長くできるらしいです。テープライブラリとワークステーション本体を、近くに置けない場合があるかもしれないので、それを考慮しているのでしょうか。
う~ん、どうしよう?と悩んで、バクチにでました。
「そうだ、Sun Enterprize 450からSCSIカードを引っこ抜いて、パソコンにつけちゃえ!」
電気的なインターフェイスは、どうせPCIで同じなんだし、そこは問題なく使えそう。あとはBIOSとか、デバイスドライバとかが問題になるかもしれないけど、もしかすると、FreeBSDでは対応してるデバイスドライバがあるかもしれない!
そう考えました。
その結果・・・
まったく問題なく使えちゃいました。しかも、BIOSレベルでの設定ユーティリティまで、パソコン上で使えます。デバイスドライバも問題なくて、FreeBSD 6.xで認識できるばかりか、Windows 2000でも使えちゃいました。
なんだ、パソコンでも使えるSCSIカードが、Sun SPARCなワークステーションで使われていたんですね。
● FreeBSDで認識しているところ
ところで、気がつけば、FreeBSD 6.2-PRERELEASEになっていたりします。
Copyright (c) 1992-2006 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 6.2-PRERELEASE #10: Wed Sep 20 13:19:36 JST 2006
root@nhh:/usr/obj/usr/src/sys/GENERIC
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel Pentium III (864.46-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x683 Stepping = 3
Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
real memory = 536608768 (511 MB)
avail memory = 510930944 (487 MB)
(略)
sym0: <875> port 0xd000-0xd0ff mem 0xff9ff400-0xff9ff4ff,0xff9fb000-0xff9fbfff i
rq 11 at device 10.0 on pci2
sym0: Symbios NVRAM, ID 7, Fast-20, SE, parity checking
sym0: open drain IRQ line driver, using on-chip SRAM
sym0: using LOAD/STORE-based firmware.
sym0: [GIANT-LOCKED]
sym1: <875> port 0xd800-0xd8ff mem 0xff9ffc00-0xff9ffcff,0xff9fe000-0xff9fefff i
rq 11 at device 10.1 on pci2
sym1: Symbios NVRAM, ID 7, Fast-20, SE, parity checking
sym1: open drain IRQ line driver, using on-chip SRAM
sym1: using LOAD/STORE-based firmware.
sym1: [GIANT-LOCKED]
(略)
sa0 at sym0 bus 0 target 0 lun 0
sa0: <QUANTUM DLT7000 2560> Removable Sequential Access SCSI-2 device
sa0: 20.000MB/s transfers (10.000MHz, offset 15, 16bit)
Trying to mount root from ufs:/dev/ad0s2a
ch0 at sym0 bus 0 target 1 lun 0
ch0: <HP C6280-7000 2.07> Removable Changer SCSI-2 device
ch0: 3.300MB/s transfers
ch0: 8 slots, 1 drive, 1 picker, 0 portals
Sun Enterprize 450にささっていたそのSCSIカードは、「SYM22802」という型番がついていて、UltraWide、コントローラが2系統のっていて、外部コネクタがDifferential SCSIというもの。
このSCSIカードって、いまや、入手困難かと思いきや、ジャンク屋で、かなりお手ごろな値段で入手できるようです。オークションなんかでも、出品されているようです。
また、Sun StorEdge L280も、かなりお手ごろな値段で入手できるみたいです。おひとつ、どうですか?
でも、今から買うなら、やっぱりスペック的にかなり見劣りしますね。
ちなみに、この前買ったLTO Ultrium3なテープライブラリが、とってもイイです!ただ、Ultrium 3なテープがまだ高いので、Ultrium2なテープを使ってたりします(容量が倍違うけど、値段は倍以上違う)。
■ テープドライブとチェンジャー機能はFreeBSDで使えるの?
SCSI的にはデバイスが認識されましたが、デバイスドライバが対応しているか、それが問題です。で、その結果。まったく問題なし。使えました!
テープドライブのデバイスは、FreeBSDでsa0として認識され、チェンジャー部分は、ch0として認識されています。
# camcontrol devlist
<QUANTUM DLT7000 2560> at scbus0 target 0 lun 0 (sa0,pass0)
<HP C6280-7000 2.07> at scbus0 target 1 lun 0 (pass1,ch0)
chioというコマンドで、テープをとっかえひっかえできます。
ステータス表示。スロット全部にテープが入ってる
# chio status -s
picker 0: sense: <0x00/0x00>
slot 0: <ACCESS,FULL> sense: <0x00/0x20>
slot 1: <ACCESS,FULL> sense: <0x00/0x21>
slot 2: <ACCESS,FULL> sense: <0x00/0x22>
slot 3: <ACCESS,FULL> sense: <0x00/0x23>
slot 4: <ACCESS,FULL> sense: <0x00/0x24>
slot 5: <ACCESS,FULL> sense: <0x00/0x25>
slot 6: <ACCESS,FULL> sense: <0x00/0x26>
slot 7: <ACCESS,FULL> sense: <0x00/0x00>
drive 0: <ACCESS> sense: <0x00/0x00>
スロット0に入ってるテープを、ドライブにロードする
# chio move slot 0 drive 0
ステータス表示。スロット0が空いて、ドライブにテープがセットされている
# chio status -s
picker 0: sense: <0x00/0x00>
slot 0: <ACCESS> sense: <0x00/0x20>
slot 1: <ACCESS,FULL> sense: <0x00/0x21>
slot 2: <ACCESS,FULL> sense: <0x00/0x22>
slot 3: <ACCESS,FULL> sense: <0x00/0x23>
slot 4: <ACCESS,FULL> sense: <0x00/0x24>
slot 5: <ACCESS,FULL> sense: <0x00/0x25>
slot 6: <ACCESS,FULL> sense: <0x00/0x26>
slot 7: <ACCESS,FULL> sense: <0x00/0x00>
drive 0: <ACCESS,FULL> sense: <0x00/0x00>
なにかとお世話になるmtコマンド。
# mt status
Mode Density Blocksize bpi Compression
Current: 0x1b:DLTapeIV(35GB) variable 85937 IDRC
---------available modes---------
0: 0x1b:DLTapeIV(35GB) variable 85937 IDRC
1: 0x1b:DLTapeIV(35GB) variable 85937 IDRC
2: 0x1b:DLTapeIV(35GB) variable 85937 IDRC
3: 0x1b:DLTapeIV(35GB) variable 85937 IDRC
---------------------------------
Current Driver State: at rest.
---------------------------------
File Number: 0 Record Number: 0 Residual Count 0
baculaでは、mtxというツールを使うよう推奨されていますが、その結果。baculaもmtxも、FreeBSDでは、portsで簡単にインストールできます。
# mtx -f /dev/pass0 inquiry
Product Type: Tape Drive
Vendor ID: 'QUANTUM '
Product ID: 'DLT7000 '
Revision: '2560'
Attached Changer: No
# mtx -f /dev/pass1 inquiry
Product Type: Medium Changer
Vendor ID: 'HP '
Product ID: 'C6280-7000 '
Revision: '2.07'
Attached Changer: No
mtxコマンドでは、passデバイスを使います。デバイスの対応関係は、上の実行結果にあるように、camcontrolコマンドで確認できます。
# mtx -f /dev/pass1 status
Storage Changer /dev/pass1:1 Drives, 8 Slots ( 0 Import/Export )
Data Transfer Element 0:Full (Storage Element 1 Loaded)
Storage Element 1:Empty
Storage Element 2:Full
Storage Element 3:Full
Storage Element 4:Full
Storage Element 5:Full
Storage Element 6:Full
Storage Element 7:Full
Storage Element 8:Full
tapeinfoというコマンドもあった。
# tapeinfo -f /dev/pass0
Product Type: Tape Drive
Vendor ID: 'QUANTUM '
Product ID: 'DLT7000 '
Revision: '2560'
Attached Changer: No
SerialNumber: 'ほげほげ~'
MinBlock:2
MaxBlock:16777214
Ready: yes
BufferedMode: yes
Medium Type: 0x85
Density Code: 0x1b
BlockSize: 0
DataCompEnabled: yes
DataCompCapable: yes
DataDeCompEnabled: yes
CompType: 0x10
DeCompType: 0x10
BOP: yes
Block Position: 0
■ Bacula、すげーイイ!
いま、暇を見つけては、Baculaの試験運用を少しずつしているのですが、これ、いいですね。バックアップ先は、テープドライブだけでなく、ハードディスクも選べます。バックアップサーバ(ジョブの管理などをするサーバ)と、ストレージサーバ(テープやディスクなどデータ保存領域を提供するサーバ)、バックアップ・クライアント(バックアップしたデータを持っているマシン)が、概念として分けられていて、クライアント数に応じて、ストレージサーバをどんどん増やせます。また、Windows版のクライアントや、Mac OS X版のクライアントもあるらしいです。
商用のバックアップソフトって、値段を1桁間違えてない?ってくらい高いのですよね。Baculaがまともに使えるんだったら、もう言うことなし。
いまわかっているところでは、使い勝手の面では、Baculaは、商用バックアップソフトにくらべると、まだ不十分かな、って感じがしました。インストール、セットアップなど、わりと高度な知識が必要されます。ま、このへんは、フリーなツールを使うか、有償ツールを使うかで、よくある話かと思いますが。
いずれノウハウがたまってきたころに、Baculaの紹介ができたらな、と思っています。