170 likes | 777 Views
~ ご注文は LTO ですか? ~. #0 1. ZFS での テー プ の 使い方. A IPv6 personal user Kunitaka Nmaba ( @ipv6labs ) http://negi.ipv6labs.jp/. テープの種類( DDS / LTO ). Solaris におけるテープの扱い①. 認識に応じて、 / dev / rmt /{N} が振られる。 {N} は SAS/SCSI-ID と同じ。(と思う) {N}n 、 {N}m といったパスが複数存在するが、テープ装置への
E N D
~ ご注文はLTOですか? ~ #01 ZFSでのテープの使い方 A IPv6 personal user KunitakaNmaba ( @ipv6labs ) http://negi.ipv6labs.jp/
DDSは衰退しました テープの種類(DDS/LTO)
DDSは衰退しました Solarisにおけるテープの扱い① • 認識に応じて、/dev/rmt/{N} が振られる。 • {N} は SAS/SCSI-ID と同じ。(と思う) • {N}n、{N}m といったパスが複数存在するが、テープ装置への • 命令を含む特別なパスになる。(args相当と思えばよい) • {N}nは“巻き戻しなし”であり、 {N}mは“巻き戻しせよ”となる。 • 参考情報: テープドライブの管理 (手順) • http://docs.oracle.com/cd/E26924_01/html/E25880/bkuptapedevice-42512.html $ ls /dev/rmt 0 0c 0cn 0hbn 0lb 0m 0mn 0ub 1 1c 1cn 1hbn 1lb 1m 1mn 1ub 0b 0cb 0h 0hn 0lbn 0mb 0n 0ubn 1b 1cb 1h 1hn 1lbn 1mb 1n 1ubn 0bn 0cbn 0hb 0l 0ln 0mbn 0u 0un 1bn 1cbn 1hb 1l 1ln 1mbn 1u 1un
DDSは衰退しました Solarisにおけるテープの扱い② • SAS(SCSI)デバイスでもあるので、cfgadm-al コマンドにも • リストアップされる。例)c3::rmt/0 等 • 保守対応時などは –cunconfigure を行ってパージする。 $ cfgadm -al | grep "::rmt/" c1::rmt/0 tape connected configured unknown c2::rmt/1 tape connected configured unknown
DDSは衰退しました Solarisにおけるテープの操作① • テープ関係の操作は mt コマンドを使用します。 • 代表的なものを幾つか紹介しておきます。 • テープ装置の状態を知るには status オプションを使用します。 • 以下のような出力があれば、テープへの書き出しができます。 • エラーとなる場合は、テープが挿入されていない可能性が • あります。 • また、Busyと返される場合は他のプロセスが使用中です。 # mt -f /dev/rmt/0 status HP Ultrium 5-SCSI tape drive: sense key(0x0)= No Additional Sense residual= 0 retries= 0 file no= 0 block no= 0
DDSは衰退しました Solarisにおけるテープの操作② • テープはディスクと異なり、ランダムアクセス出来ないため操作 • に応じて巻き戻しなどが必要になります。 • 撒き戻すには rewind オプションを使用します。 • LTO規格のテープはかなり長い(LTO-5/6 で 846m)ので、 • 末尾からの巻き戻しだと最大98秒必要です。(LTO-1~6共通) # mt -f /dev/rmt/0 rewind
DDSは衰退しました Solarisにおけるテープの操作③ • テープであるため“たわみ”が生じることがあります。 • Read/Writeエラーの原因となるので、おまじないとして • テープ投入時1回実施しておくとよいでしょう。 • オプションはそのまま retension です。 • テープの排出ですが、ejcet ではありません。 • offline オプションを使用します。 # mt -f /dev/rmt/0 retension # mt -f /dev/rmt/0 offline
DDSは衰退しました Solarisにおけるテープへの読み書き① • 旧来の方法として tar(gtar)、cpio、dd、 • ufsdump(ufsrestore) が使用できます。 • 汎用性の高い、tarの例を載せておきます。 • 圧縮する場合は tar のオプションより、テープ装置に委任 • したほうがリソース消費や(無駄な)多重圧縮を回避できます。 • 参考情報: Sun 周辺機器 使用の手引き 第 3 章 テープドライブの設定と使用 • http://docs.oracle.com/cd/E19620-01/805-5649/6j5b636ik/index.html (書き込み)# tar cf /{Backup_Dir} /dev/rmt/{N} (読み取り)#tar xf /dev/rmt/{N} /{Restore_Dir}
DDSは衰退しました Solarisにおけるテープへの読み書き② • ZFS領域と直接ブロックでテープに読み書きことも可能です。 • zfssend/receive コマンドを使用することができます。 • ZFS領域およびテープ装置が重複していなければ、問題なく • 並列実行することができる。 # zfs snapshot mypool/mydir@YYYYMMDD-NN (書き込み)# zfs send mypool/mydir@YYYYMMDD-NN > /dev/rmt/{N} (読み取り)# zfs receive mypool/mydir_restore < /dev/rmt/{N} (Stream1)# zfs send mypool1/mydir@YYYYMMDD-NN> /dev/rmt/0 (Stream2)# zfs send mypool2/mydir@YYYYMMDD-NN> /dev/rmt/1
DDSは衰退しました Solarisにおけるテープへの読み書き③ • より高度な方法として、OpenSSLを間に挟むことで書き込み • ブロックを暗号化することが可能になる。 • ZFSにも暗号化機能はあるが、sendした時点で複合化されて • しまう。(そのまま送るには dd を使うしかない?) • 暗号化方式をAESとしているのは、“AES-NI”の支援を受ける • 為である。(効果はある模様) • OpenSSL部がシングルスレッドなので、CPUの得意な暗号化 • を選択する必要がある。 # nohupzfs send zpool/backup@tape | \ opensslenc -e -aes-256-cbc -pass pass:MYPASSWORD > /dev/rmt/0 &
DDSは衰退しました Solarisにおけるテープへの読み書き④ • OpenSSLで暗号化書き込みを行ったテープから普通に • zfsreceive を行うと読み取りエラーとなる。 • OpenSSLを再度挟むことで複合しつつデータをZFS領域に • 送ることができる。 • XeonE5-2609(2.4GHz)で平均読み書き50MB/sec程度、 • LTO-5の場合おおよそ7~8時間必要になる。 • 瞬間最大性能は80MB/sec程度だった。 # zfs receive -nvzpool/restore < /dev/rmt/0 cannot receive: failed to read from stream # nohupopensslenc -d -aes-256-cbc -pass pass:MYPASSWORD < /dev/rmt/0 | \ zfs receive zpool/restore &
DDSは衰退しました Solaris上でのテープ読み書き性能比較 LTO-5規格(理論上140MB/sec)のテープとテープ装置を使用し、 約1.5TBを書き込んだ結果です。 zfssend ではほぼ限界性能まで出し切っています。 測定環境: Solaris11.1 XeonE5-2609(2.4GHz) OpenSSL-1.0.0(標準pkg)