質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Q&A

解決済

2回答

4986閲覧

/dev/nst0への書き込みについて

nob777

総合スコア112

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

0グッド

0クリップ

投稿2017/01/10 22:45

/dev/nst0でテープデバイスへ書込みを行う場合、テープは巻き戻されずに追記で書き込まれます。

■質問事項
以下図の⑧付近でテープデバイスに対して書き込もうとした場合の挙動を
お教え願います。
※自動でテープの先頭まで巻き戻った後に、書込みが行われるのでしょうか?その場合、途中まではテープ後方部にも書込みデータの一部が存在して
しまうことになるのでしょうか?

イメージ説明説明](cbbf38fa2324a1cea2329948aa4cff85.gif)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

/dev/nst0は、自動的に巻き戻されないテープ装置のデバイスです。

  • 図の⑧まで書き込んだ場合、テープドライブのヘッドが最後のEOFを書き込んだ直後で、テープは停まっています。
  • 再びテープデバイスに書き込むと、そのEOFの後に、データ (と、もうひとつのEOF) が書き込まれます。/dev/nst0に書き込んだのなら、再びテープは最後のEOFの直後で停まります [1]。

テープには、EOFで区切られた複数のデータブロック (レコード) が記録されることになります。

mt(1)コマンドを使えば、レコードからレコードへ移動できます。次のEOFの位置まで移動することで次のレコードの先頭へ、前の前のEOFの位置まで移動することで前のレコードの先頭へ移動できます (詳しくはman mtして下さい)。これにより、特定のレコードへ移動した上で、そのレコードの内容を読み取ったり、またはデータを書き込んでレコードの内容を更新したりできます (当然、書き込むデータは元のレコードより長くてはいけません。次のレコードを上書きして壊してしまいますから)。

こうして、1本のテープに複数のデータを格納して管理することができます (もっとも、データを区別する方法は「テープの最初から何番目のレコードか」ということだけです。ディスク上のファイルシステムのようにファイル名をつけたりディレクトリで分けたりはできません) [2]。

ところで、テープにはもともと何か書いてあったかもしれません。新たに書き込みして途中まで上書きした場合、上書きした場所より後にあるレコードは、まだ読み出せるかもしれません。途中まで上書きされたレコードについては、残りのデータも壊れてもう読み出せないかもしれません。


[1] もともと巻き戻すデバイスがあって巻き戻さないオプションができたのではないです。逆で、初期のテープ装置には巻き戻し機能がありませんでした (巻き戻しは、テープを装置から外して手作業、または専用の機器で行いました)。そのためデバイス名で、巻き戻しに対応したものとしていないものを区別しました。

[2] 「これ以降はデータがない」ということを示すために、最後にEOFを2回 (以上) 続けて書き込んでおく、といった規約を設ける場合もあります。テープのこれ以降は空き領域とみなし、読み込みに使いません。新規のレコードを追加するときは、2個目のEOFを上書きして書き込みます。

投稿2017/01/11 05:04

編集2017/01/11 13:38
ikedas

総合スコア4227

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nob777

2017/01/11 13:09

ご回答ありがとうございます! テープの終端に達しても自動で巻き戻すようなことはないのですね。 もし⑧付近で書き込もうとしたデータのサイズが大きすぎて書ききれない場合は、どのような挙動となるのでしょうか? ※書き込む前にエラーとなる?それとも書込み途中でエラーとなる?
ikedas

2017/01/11 13:23

装置の仕様によりますが、現在のものならkjmlさんのおっしゃるように、書き込みが一時停止して次のテープに入れ替えるように促すのが普通ではないかと思います。そういう機能を持っていないものなら、テープが終わったところで書き込みがエラー終了します。
nob777

2017/01/12 11:28

ご回答ありがとうございます。 確かに装置の仕様も確認した方がよさそうですね。 別途、確認したいと思います。 ※手元に検証できる機材が無く、全て机上での確認作業となってしまうのが辛いところです。
guest

0

過去の経験からですが
1本のテープに収まりきらないようなデータをテープにバックアップしようとした時には、
途中まで(入りきるところまで)1本目のテープにバックアップされ、
2本目のテープに変えるように促され、
2本目のテープに続きがバックアップされていました。
リストア時にも同じように1本目からリストアを開始すると途中で2本目を要求されました。
参考になりますでしょうか。

投稿2017/01/11 02:58

kjml

総合スコア219

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nob777

2017/01/11 13:11

ご回答ありがとうございます。 なるほど。促すのはどのような形ででしょうか? 例えばtar cvfによるバックアップを行っていた場合は、tar実行時の標準出力で促されるのでしょうか?
kjml

2017/01/12 02:49

ikedas さんが詳しく説明しておられますね。 私は曖昧な記憶が頼りですのであまり正確ではないかもしれません。 参考程度にお願いします。 デバイス名 /dev/nst0 の「n」はたしか「norewind」(巻き戻しなし)の「n」であり、 「n」のない/dev/st0 を使用した場合には自動で巻き戻されたような気がします。 (すみませんがそのときの挙動についてはあまり記憶が有りません) おそらくikedas さんがおっしゃるような上書きの状態になると思いますが、 これは1テープに(収まる量の)1バックアップを想定した使用方法ではないでしょうか。 2本目以降のテープに変えるよう促される時の状態ですが、 なにぶん古い記憶で、dump/restore コマンドの場合しかわかりませんが、 コマンドを実行したコンソール画面(標準出力)にそのままメッセージが出ました。 テープを入替えたか(Yes/No)も表示されて答えると(y+Enter)続きが始まりました。 cpioも同じだったと思いますが、tarと共に1本に収まる程度の少量データしか扱った事がなく、 また、tarコマンドは何かとテープと相性が悪くて使わなくなりました。 (不良場所をスキップできずバックアップデータが破損など) あまり参考になる情報でなくてすみません。
nob777

2017/01/12 11:39

ご回答ありがとうございます。 現在のバックアップはツールにより行わるため、もしテープ終端まで達した場合はどうなるのか・・・。毎日約4年ぐらい保存し続けているのですが、まだエラーもなく保存し続けています。 そのため、実はテープ終端に達したら自動で巻き戻って、先頭から上書きしているのではないかと思いまして質問させていただきました。別途、テープ装置の仕様を確認したいと思います。 ※サーバ含むテープドライブ自体が遠隔地にあるため、クリーニングも全く行っていないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問