Backup ExecでNetAppのNDMPバックアップを行おうとしたときに0x20500106(542114054)というエラーになるという問題が発生した。
技術的詳細をみてみてもよく分からない。
該当の共有を確認すると日本語のディレクトリがある。
そして、NetApp上でボリュームの言語を確認するとja_JP.PCK_v2とUTF-8以外を使用している。
nas01c::> volume show -fields language
vserver volume language
--------- ------ --------
<略>
svm1 testlang2
ja_JP.PCK_v2
nas01c::>
では、日本語ではなく英数のディレクトリ名に変更
Backup Exec上で問題なく開くことができるようになった。
とりあえず、ボリュームの言語設定の問題であることは判明。
検索すると「How to enable Unicode or UTF-8 Language Support for the NDMP Option」というBackup Exec 11時代の古い記述を発見
ここに書かれている HKEY_LOCAL_MACHINE\SOFTWARE\Veritas\Backup Exec For Windows\Backup Exec\NDMP の UseUTF8の値は「0」であり、UTF-8じゃないボリュームという設定になっているように見える。
この値の変更は、NDMPアクセスをするごとに反映されるようでBackupExecサービスやサーバ再起動は不要だった。
が・・・今回のja_JP.PCK_v2ボリューム上の日本語ディレクトリ問題には対処できなかった。
では、この値変更はBackupExec 21.0で不要かというとそうではなくて、ja_JP.UTF-8ボリュームだと日本語ディレクトリが文字化けで表示される、という問題が発生している。
これが「UseUTF8」の値を「1」に設定することで文字化けが解消されることは確認できた。
さて、本題に戻って、ja_JP.PCK_v2ボリューム上に日本語ディレクトリがある場合にエラーとなる件の対処方法があるかです。
とりあえずボリューム名をクリックするとバックアップ選択はされ、バックアップも完了できました。(レジストリ UseUTF8は0で実施)
リストアを選択すると、きちんと日本語で表示されています。
共有内のファイルを削除してリストアしてみると、正常にリストアされました。
しかし、「実験」だけをリストアしようとするとエラーとなりました。
というわけで、ja_JP.PCK_v2上に日本語ディレクトリがあっても、ボリューム全体をバックアップするのであれば問題無く動作する。
リストア時も全体であればリストアが成功するが、日本語ディレクトリは個別に指定するリストアは失敗する、という動作となりました。
ちなみにja_JP.UTF-8ボリューム上の日本語ディレクトリは文字化けでした。(レジストリUseUTF8は0)
文字化けしている状態であっても、文字化けディレクトリだけを指定してリストアすると正常にリストアできていました。(レジストリUseUTF8は0)
逆にレジストリUseUTF8を1にしてバックアップしたものはリストアできるか検証
ja_JP.UTF-8ボリューム上の日本語は表示できているが、ja_JP.PCK_v2ボリューム上は文字化けています。
リストアジョブを実行してみると成功します。
ja_JP.UTF-8ボリュームではファイル名も問題無くリストアできています。
ja_JP.PCK2_v2の方は文字化けでリストアされています。
ややこしいことにディレクトリ内のファイルについては文字化けせずにリストアされています。
おそらく、指定した階層についてだけ影響があり、それ以下の階層についてはNetApp側で処理されるため元のファイル名のままリストアできたものと想定されます。