LTFSなタープに入れたデータが見えなくなったLTFS/accident
DELLのPowerVault(TM) LTO-6-200 Tape Driveがある。
商品:http://www.dell.com/jp/business/p/powervault-lto6/pd?oc=as-pvlto6-200&model_id=powervault-lto6
LTO6な単巻ドライブ。SAS接続で/procを見てみると、
[root@x ~]# cat /proc/scsi/scsi
Attached devices:
(中略)
Host: scsi8 Channel: 00 Id: 00 Lun: 00
Vendor: IBM Model: ULTRIUM-HH6 Rev: D8E5
Type: Sequential-Access ANSI SCSI revision: 06
[root@x ~]#
とIBM様のOEM製品でした。具体的にはTS2260かな?
で、この単巻ドライブをLTFSとして利用するには、Linux向けdriverとLTFS向けのツールが必要
*IBMのFix Centralはユーザ登録が必要のようです
入手した「lin_tape-3.0.56-1.src.rpm」をrpmbuildでrpmファイルに仕立てます。そこにdriverが含まれます。
[root@x ~]# rpmbuild --rebuild lin_tape-3.0.56-1.src.rpm
そして、作ったdriverをインストールします。
[root@x ~]# yum localinstall rpmbuild/RPMS/x86_64/lin_tape-3.0.56-1.x86_64.rpm
rpmファイルの中身は「rpm -qpli <rpm>」で確認できます
インストールと共に組み込まれた「lin_tape.service」が起動してテープデバイス(/dev/IBMtape0)を用意してくれます。
「lin_tape.service」は自動起動が有効になっている.
[root@x ~]# systemctl stop lin_tape.service
[root@x ~]# ls -l /dev/IBM*
ls: cannot access /dev/IBM*: No such file or directory
[root@x ~]# systemctl start lin_tape.service
[root@x ~]# ls -l /dev/IBM*
crw------- 1 root root 240, 3069 Apr 7 01:43 /dev/IBMSpecial
crw------- 1 root root 240, 0 Apr 7 01:43 /dev/IBMtape0
crw------- 1 root root 240, 1024 Apr 7 01:43 /dev/IBMtape0n
[root@x ~]#
入手した「ltfssde-2.4.3.1-10461-RHEL7.x86_64.rpm」をそのままインストールします
[root@x ~]# yum localinstall ltfssde-2.4.3.1-10461-RHEL7.x86_64.rpm
(RHEL8)
dnf --enablerepo=powertools install python3-pyxattr
dnf localinstall ./ltfssde-2.4.4.0-10470-RHEL8.x86_64.rpm
この中にLTOテープをLTFSにフォーマットする mkltfs やmount操作の ltfs コマンドが入っている
ドライブにLTOテープを差し込んで、LTFS向けのファイルシステムを構築する
[root@x ~]# mkltfs -d /dev/IBMtape0
LTFS15000I Starting mkltfs, LTFS version 2.2.2.0 (9802), log level 2
LTFS15041I Launched by "mkltfs -f -d /dev/IBMtape0"
(略
LTFS15013I Volume UUID is: 0df05603-b438-448e-892b-d0e4cf3fbb23
LTFS15019I Volume capacity is 2408 GB
LTFS12207I Logical block protection is disabled
LTFS15024I Medium formatted successfully
[root@x ~]#
*すでにformatされたメディアなら下記のように( -f )を追加させる
[root@x ~]# mkltfs -f -d /dev/IBMtape0
次に、このファイルシステムをシステムにマウントします。
ここではマウントポイントを/LTFSとしてます。
[root@x ~]# mkdir /LTFS
[root@x ~]# ltfs /LTFS -o devname=/dev/IBMtape0
298f LTFS14000I LTFS starting, LTFS version 2.2.2.0 (9802), log level 2
298f LTFS14058I LTFS Format Specification version 2.2.0
298f LTFS14104I Launched by "ltfs /LTFS -o devname=/dev/IBMtape0"
(略
298f LTFS14112I Invoke 'mount' command to check the result of final setup
298f LTFS14113I Specified mount point is listed if succeeded
[root@x ~]#
っで完了。
単純に
[root@x ~]# umount /LTFS
その後、mtコマンドか装置のejectボタンを押せばメディアが取り出せる
[root@x ~]# mt -f /dev/st0 eject
特定ユーザにsudo権限を与えれば、rootと同じような操作が可能である。
方法は/etc/sudoersの末尾に下記を追加する。
%crystal ALL=(root) NOPASSWD: /usr/local/bin/ltfs , /bin/umount, /bin/mount
* %crystalは、crystalグループに所属している方限定を意味する。NOPASSWDを
指定すると、自身のパスワードを問わずに実行します。
他に、sudoを使わずにだれでも使えるようにするには、デバイスドライバの権限を緩めます。
*単純にchmod 0666 /dev/IBMtape0 とせず、udev経由で調整しましょう。
[root@x ~]# vi /etc/udev/rules.d/98-lin_tape.rules
KERNEL=="IBMtape*[!n]", NAME="%k", MODE="0666"
KERNEL=="IBMtape*n", NAME="%k", MODE="0666"
[root@x ~]#
[root@x ~]# /etc/init.d/udev-post reload
[root@x ~]#
[root@x ~]# rmmod lin_tape
[root@x ~]# modprobe lin_tape
[root@x ~]#
[root@x ~]# ls -l /dev/IBMtape0*
crw-rw-rw- 1 root root 246, 0 2月 27 14:17 2014 /dev/IBMtape0
crw-rw-rw- 1 root root 246, 1024 2月 27 14:17 2014 /dev/IBMtape0n
[root@x ~]#
[root@x ~]# chmod +x /bin/fusermount
これで、各ユーザでLTOテープのLTFSフォーマットやLTFSマウント操作ができる。。。っがunmount操作がこれでは駄目。
やっぱりsudoを使って、ユーザ限定の方がいいのかも。
データコピー中にLTFS以外の問題でマシンがクラッシュした。
再起動後に、ltfsコマンドでマウントを試みたがltfsckで確認せよと命じられた。
[root@x ~]# sudo /usr/local/bin/ltfsck /dev/IBMtape0
として修正を施す
どうも「:」を含むファイルはLTFSにコピーできないみたい。
例えばファイル名が Aug__2_14:07:24_2013.pdbなんてだと「無効な引数です」ということで弾かれる。
**主にcootでモデリングしている際に発生するログファイルがそれです
この場合、tarでまとめて一つのファイルにしてLTFSに置いたほうがいいのかも。
上記はすべてLinuxでの利用を前提として書いてます。っが、やっぱりwindowsの方がめちゃくちゃ楽です。
当初Linuxで提供してましたが、結局windowsに載せ替えになってしまった。。。。
「IBM Spectrum Archive Single Drive Edition Version 2.4.0.2 for Windows」を取得します。
(IBM_LTFS_SDE_2.4.0.2.10071_x64.exe)
っで、これをインストール。
「LTFS Configuration」を実行して調整すれば使える。エクスプローラーにLTOドライブが表示され
LTOテープを挿入して、ドライブのアイコンを選択して右クリックからformatを選び、フォーマットすれば即座に使えます。
Linuxのようなマウント操作は不要。まあー一度なれるとこちらのほうが楽。
注意
以前に「IBMTape.x64_w12_6260.zip」とかのIBMテープドライバーをインストールしていると
エラーで弾かれます。「IBM tape driver」を除いてからインストールしてくださいと言われる。
その際、使った「IBMTape.x64_w12_6260.zip」に入っている「uninst.exe」で削除するのですが、
管理者権限で実行しないと動作しない。それを事前に行う必要があります。
ltfsでLTOメディアをマウントして書き込み操作している際、下記のようなメッセージがでて
メディアに書き込めなくなった。原因は不明だが、マシンを再起動してたら復旧。
kernel: ltfs: page allocation failure: order:7, mode:0xd0
kernel: CPU: 1 PID: 11209 Comm: ltfs Tainted: G OE ------------ 3.10.0-327.3.1.el7.x86_64 #1
kernel: Hardware name: Dell Inc. PowerEdge R210/xxxxxx, BIOS 1.5.2 10/18/2010
kernel: 00000000000000d0 00000000b44c8796 ffff880230167968 ffffffff8163516c
kernel: ffff8802301679f8 ffffffff8116ef80 0000000000000000 ffff88023ffd4000
kernel: 0000000000000007 00000000000000d0 ffff8802301679f8 00000000b44c8796
kernel: Call Trace:
kernel: [<ffffffff8163516c>] dump_stack+0x19/0x1b
kernel: [<ffffffff8116ef80>] warn_alloc_failed+0x110/0x180
kernel: [<ffffffff81173708>] __alloc_pages_nodemask+0x9a8/0xb90
:
調べたらここと同じ現象みたい
http://esupport.trendmicro.com/solution/ja-JP/1105158.aspx?print=true
従来の「ltfssde-2.2.2.0」の代わりに「ltfssde-2.4.1.2」を使うことにした
ってこのバージョンでは「/dev/IBMtape0」は要らないようで、「scsi generic device」を使うみたい
なので
[root@x ~]# yum remove lin_tape ltfssde
として「/dev/IBMtape0」のデバイスを外す。ついでに「ltfssde-2.2.2.0」も
その後、再起動して「scsi generic device」を復活させる
どうもlin_tapeを抜いても/dev/sg*が復活しないので
再起動後に確認をします。
[root@c ~]# lsscsi -g
:
[1:0:0:0] tape IBM ULTRIUM-HH6 H991 /dev/st0 /dev/sg8
[root@c ~]#
そして、「ltfssde-2.4.1.2」をインストールします
[root@c ~]# yum localinstall ltfssde-2.4.1.2-10254-RHEL7.x86_64.rpm
次にltfsコマンドを使ってテープデバイスのデバイスファイルを確認します。
既に「lsscsi -g」で表記されますが、、
[root@x ~]# ltfs -o device_list
3b09 LTFS14000I LTFS starting, LTFS version 2.4.1.2 (10254), log level 2.
3b09 LTFS14058I LTFS Format Specification version 2.4.0.
3b09 LTFS14104I Launched by "ltfs -o device_list".
3b09 LTFS14105I This binary is built for Linux (x86_64).
3b09 LTFS14106I GCC version is 4.8.3 20140911 (Red Hat 4.8.3-9).
3b09 LTFS17087I Kernel version: Linux version 3.10.0-957.27.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.(略
3b09 LTFS17089I Distribution: CentOS Linux release 7.6.1810 (Core) .
3b09 LTFS17089I Distribution: NAME="CentOS Linux".
3b09 LTFS17089I Distribution: CentOS Linux release 7.6.1810 (Core) .
3b09 LTFS17089I Distribution: CentOS Linux release 7.6.1810 (Core) .
3b09 LTFS17085I Plugin: Loading "sg" tape backend.
Tape Device list:.
Device Name = /dev/sg8, Vender ID = IBM , Product ID = ULTRIUM-HH6 , Serial Number = (略
[root@x ~]#
これでデバイスは「/dev/sg8」とわかる。
この「/dev/sg8」を使ってLTOテープをLTFSにフォーマットします
[root@x ~]# mkltfs -f -d /dev/sg8 -n data5-1
次に、フォーマットしたLTOメディアをファイルシステムにマウントします
[root@x ~]# mkdir /ltfs
[root@x ~]# ltfs /ltfs -o devname=/dev/sg8
この後はcpを使ってファイルをコピーします。
テープが入っていない場合
[root@c ~]# mt -f /dev/st0 status
SCSI 2 tape drive:
File number=-1, block number=-1, partition=0.
Tape block size 0 bytes. Density code 0x0 (default).
Soft error count since last status=0
General status bits on (10000):
IM_REP_EN
[root@c ~]#
「systemctl start lin_tape.service」を実行すると /dev/nst0 や /dev/st0 のおなじみのデバイスが消える.
「systemctl stop lin_tape.service」としても復活はしない.
復活させるには
rmmod st
modprobe st
と実行する