テープデバイスにデータをバックアップしたい時(基本形) [Linux(CentOS/VineLinux)]
ハードディスクがアフォみたいに安く手に入るこのご時世に、なんでテープデバイスなのよ(藁) みたいな事がよく言われますけども、個人レベルではどうであれ、会社などではデータバックアップを真剣に考えていないところも多くありますよね。
酷い例になってくると、アキバで買えそうな安いNAS等を数台入れて、「RAID5にしときゃ大丈夫だ!」とか油断しまくっていたらディスクが飛んでしまい、でもRAID5にしてたはずなのに中身が全滅…というケースとかが有ったり無かったり、もの凄く身に覚えがあったり…orz
で、簡単にバックアップを取るならば、安くて大容量なハードディスクを買ってきてrsyncしちゃえばいい…という向きもありますけども、最近はやれ、「企業統制が~」とか「事業継続性ナントカカントカが~」みたいなことが叫ばれるようになり、データバックアップも真剣に「外部保存」とか考えなさいということになりつつあるようです。
そこでテープデバイスの出番が来たり来なかったりする訳ですよ。
昨今売られているテープデバイスとしては、DDSとかLTOとかが多いでしょうか。他にもあるようですが少数派みたいですね。DDSというのは4mmくらいの幅の小さなテープで、「DAT」と同じようなテープを使います。媒体をじーっと見ていると、なんとなく「凄く小さくなったカセットテープ」を彷彿とさせます。LTOの方は「なんだかもの凄く分厚くなった3.5インチフロッピーディスクのような箱」といった風貌です。データの読み書き速度がすごく速かったり、データ容量がデカかったりしますので、LTOの方が最近では主流を占めつつあるとか。
で、こいつらを使ってLinuxなサーバからデータをバックアップしてみよう!というのがこのエントリーの基本シナリオです。
まず、Linuxなマシンにテープデバイスを接続すると、デバイス名としては、/dev/st0とか/dev/nst0とかいう風に見えたりします。なお、テープデバイスが複数ある場合は末尾の0が1とか2とか…ということになりますので。
また、st0とnst0との違いですが、これにはちゃんとした意味があります。
/dev/st0 … 処理が終わったらテープをテープを先頭まで巻き戻す
/dev/nst0 … 処理が終わってもテープをテープを先頭まで巻き戻さない
テープデバイスというのは、先頭から順次アクセスするシーケンシャルアクセスしかできません。ディスクのようなランダムアクセスは仕組み上は出来ないことになっていますが、「頭出し」は可能です。ですので、例えば少量のデータを1本のテープまるまる使ってしまうともったいないという場合に、テープを巻き戻さないデバイスを使うことで複数のデータ(ボリューム)のバックアップを1本のテープに収めたり、頭出しの機能を使用することで複数のデータ(ボリューム)のうちの1個だけデータを復元することが可能になるのです。そのためにデバイス名が2個ある…という寸法です。
では、実際のコマンド操作はと言うと、メジャーなコマンドとしては3個ありまして、よく使われるのはそのうちの2個ですね。
tarコマンド
cpioコマンド
この2個は「メジャー」な方。一方、これらとはちょっと違うバックアップの取り方をするコマンドとして
ddコマンド
が使われます。
1.とにかくデータをバックアップしてみる
tarやcpioはファイル単位でデータを待避する際に使われます。
基本的な使い方としては、tarコマンドの場合ですと…
tar cvf (テープデバイス名) (待避したいファイルやディレクトリ)
vオプションは有っても無くてもいいです。付けておくとバックアップしたファイルがずら~っと表示されますが、付けないとひたすら無言でバックアップが進みます。
こんな感じでバックアップを取得することが多いでしょうか。
一方、cpioコマンドの場合は、cpioコマンド単体ではデータバックアップを取得できません。cpioコマンドの標準入力に、コピーしたいファイルのパス名を渡してやる必要があります。また、テープにはき出すアーカイブデータはcpioコマンドの標準出力に出てきますので、これをテープデバイスにリダイレクトしてやることになります。
上記のtarコマンドと同じようなバックアップを取得するなら
こんな感じになります。findコマンドでバックアップしたいファイルの一覧を生成し、cpioの標準入力にパイプで渡しています。それを/dev/st0に出力リダイレクトではき出す…という構図です。
-oBvの「v」オプションはtarコマンドの「v」オプションと同じように、付ければバックアップしたデータのファイル名がずら~っと表示され、省略すると無言で処理が進むというものです。「-H newc」オプションは、cpioが出力するアーカイブデータのフォーマット形式を指定するものです。今時のばかでかいハードディスクの場合はこのオプションを付けておくのが無難です。
2.とにかくデータを復元してみる
続いて、テープデバイスからバックアップデータを復元する方法です。
tarコマンドの場合は「x」オプションを使います。
これでバックアップしたデータがカレントディレクトリにだだだ~っと書き込まれます。「v」オプションは以下省略。
cpioコマンドの場合、今度はfindコマンドなどと組み合わせる必要性は無いのですが、バックアップ時にcpioコマンドが生成したアーカイブデータをcpioコマンドの標準入力に流し込んでやる必要があります。この場合、そのデータはテープデバイスの中にありますから、/dev/st0をcpioコマンドの標準入力にリダイレクトしてやることになります。
これで先ほどバックアップしたデータが復元されます。
「v」オプションは以下略。「m」オプションはタイムスタンプを保存するというオプション。「d」は必要に応じてディレクトリを作成するというオプションです。お好みに応じて「u」オプションあたりは付いていても良いかもしれません。(ファイルを問い合わせ無しに上書きしてしまうというオプション)
酷い例になってくると、アキバで買えそうな安いNAS等を数台入れて、「RAID5にしときゃ大丈夫だ!」とか油断しまくっていたらディスクが飛んでしまい、でもRAID5にしてたはずなのに中身が全滅…というケースとかが有ったり無かったり、もの凄く身に覚えがあったり…orz
で、簡単にバックアップを取るならば、安くて大容量なハードディスクを買ってきてrsyncしちゃえばいい…という向きもありますけども、最近はやれ、「企業統制が~」とか「事業継続性ナントカカントカが~」みたいなことが叫ばれるようになり、データバックアップも真剣に「外部保存」とか考えなさいということになりつつあるようです。
そこでテープデバイスの出番が来たり来なかったりする訳ですよ。
昨今売られているテープデバイスとしては、DDSとかLTOとかが多いでしょうか。他にもあるようですが少数派みたいですね。DDSというのは4mmくらいの幅の小さなテープで、「DAT」と同じようなテープを使います。媒体をじーっと見ていると、なんとなく「凄く小さくなったカセットテープ」を彷彿とさせます。LTOの方は「なんだかもの凄く分厚くなった3.5インチフロッピーディスクのような箱」といった風貌です。データの読み書き速度がすごく速かったり、データ容量がデカかったりしますので、LTOの方が最近では主流を占めつつあるとか。
で、こいつらを使ってLinuxなサーバからデータをバックアップしてみよう!というのがこのエントリーの基本シナリオです。
まず、Linuxなマシンにテープデバイスを接続すると、デバイス名としては、/dev/st0とか/dev/nst0とかいう風に見えたりします。なお、テープデバイスが複数ある場合は末尾の0が1とか2とか…ということになりますので。
また、st0とnst0との違いですが、これにはちゃんとした意味があります。
/dev/st0 … 処理が終わったらテープをテープを先頭まで巻き戻す
/dev/nst0 … 処理が終わってもテープをテープを先頭まで巻き戻さない
テープデバイスというのは、先頭から順次アクセスするシーケンシャルアクセスしかできません。ディスクのようなランダムアクセスは仕組み上は出来ないことになっていますが、「頭出し」は可能です。ですので、例えば少量のデータを1本のテープまるまる使ってしまうともったいないという場合に、テープを巻き戻さないデバイスを使うことで複数のデータ(ボリューム)のバックアップを1本のテープに収めたり、頭出しの機能を使用することで複数のデータ(ボリューム)のうちの1個だけデータを復元することが可能になるのです。そのためにデバイス名が2個ある…という寸法です。
では、実際のコマンド操作はと言うと、メジャーなコマンドとしては3個ありまして、よく使われるのはそのうちの2個ですね。
tarコマンド
cpioコマンド
この2個は「メジャー」な方。一方、これらとはちょっと違うバックアップの取り方をするコマンドとして
ddコマンド
が使われます。
1.とにかくデータをバックアップしてみる
tarやcpioはファイル単位でデータを待避する際に使われます。
基本的な使い方としては、tarコマンドの場合ですと…
tar cvf (テープデバイス名) (待避したいファイルやディレクトリ)
vオプションは有っても無くてもいいです。付けておくとバックアップしたファイルがずら~っと表示されますが、付けないとひたすら無言でバックアップが進みます。
# cd /home/my_home # tar cvf /dev/st0 .
こんな感じでバックアップを取得することが多いでしょうか。
一方、cpioコマンドの場合は、cpioコマンド単体ではデータバックアップを取得できません。cpioコマンドの標準入力に、コピーしたいファイルのパス名を渡してやる必要があります。また、テープにはき出すアーカイブデータはcpioコマンドの標準出力に出てきますので、これをテープデバイスにリダイレクトしてやることになります。
上記のtarコマンドと同じようなバックアップを取得するなら
# cd /home/my_home # find . -print | cpio -oBv -H newc > /dev/st0
こんな感じになります。findコマンドでバックアップしたいファイルの一覧を生成し、cpioの標準入力にパイプで渡しています。それを/dev/st0に出力リダイレクトではき出す…という構図です。
-oBvの「v」オプションはtarコマンドの「v」オプションと同じように、付ければバックアップしたデータのファイル名がずら~っと表示され、省略すると無言で処理が進むというものです。「-H newc」オプションは、cpioが出力するアーカイブデータのフォーマット形式を指定するものです。今時のばかでかいハードディスクの場合はこのオプションを付けておくのが無難です。
2.とにかくデータを復元してみる
続いて、テープデバイスからバックアップデータを復元する方法です。
tarコマンドの場合は「x」オプションを使います。
# cd /home/restore # tar xvf /dev/st0
これでバックアップしたデータがカレントディレクトリにだだだ~っと書き込まれます。「v」オプションは以下省略。
cpioコマンドの場合、今度はfindコマンドなどと組み合わせる必要性は無いのですが、バックアップ時にcpioコマンドが生成したアーカイブデータをcpioコマンドの標準入力に流し込んでやる必要があります。この場合、そのデータはテープデバイスの中にありますから、/dev/st0をcpioコマンドの標準入力にリダイレクトしてやることになります。
# cd /home/restore # cpio -iBvmd < /dev/st0
これで先ほどバックアップしたデータが復元されます。
「v」オプションは以下略。「m」オプションはタイムスタンプを保存するというオプション。「d」は必要に応じてディレクトリを作成するというオプションです。お好みに応じて「u」オプションあたりは付いていても良いかもしれません。(ファイルを問い合わせ無しに上書きしてしまうというオプション)
コメント 0