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はユーザ登録が必要のようです

TapeドライブのLinux driverをインストール

入手した「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 ~]#

LTFS向けツールのインストール

入手した「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へ

ドライブに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をシステムにmount

次に、このファイルシステムをシステムにマウントします。
ここではマウントポイントを/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 ~]#

っで完了。

unmount

単純に

[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に置いたほうがいいのかも。

windows

上記はすべて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

LTFS向けツールのインストール(その2)

従来の「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

と実行する

最新の60件
2024-10-11 2024-10-10 2024-10-09 2024-10-08 2024-10-06 2024-10-05 2024-10-04 2024-10-03 2024-10-02 2024-10-01 2024-09-30 2024-09-29 2024-09-28 2024-09-27 2024-09-22 2024-09-20 2024-09-17 2024-09-12 2024-09-09 2024-09-08 2024-09-06 2024-09-05 2024-09-04 2024-09-02 2024-09-01 2024-08-31 2024-08-28 2024-08-18 2024-08-17 2024-08-16 2024-08-15 2024-08-14 2024-08-11

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-09-29 (金) 12:01:36