NetApp 切り替え時 メモ書き


ボリューム言語切り替えは面倒

NetAppのボリューム言語をja_JP.PCKからutf8mb4に変えたいな、と思うとsnapmirrorでのボリューム以降ではなくて、rsyncやrobocopyなどを使ってコピーする必要がある。

例えば、robocopyでやるなら以下の様なバッチファイルを動かしてコピーする

@echo off
set TIME2=%TIME: =0%
set LOGDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%-%TIME2:~0,2%%TIME2:~3,2%
robocopy \\netappfs\shares1  \\netappfsnew\shares1 /mir /copyall /R:0 /W:0 /LOG+:D:\LOGS\netappfs-shares1-%LOGDATE%.txt
robocopy \\netappfs\document \\netappfsnew\document /mir /copyall /R:0 /W:0 /LOG+:D:\LOGS\netappfs-document-%LOGDATE%.txt

D:\LOGS に実行ログを吐き出すが、バッチファイルの実行開始時間を元にしたファイル名となるので、ログ確認がしやすい

失敗した切り替え手順

IPアドレスが確保出来なかったということなので、旧NetAppのサービス用IP と 新NetAppの仮接続用IPしかない、ということなので

旧NetAppのネットワークケーブル抜いてから
新NetApp側のIPアドレスを切り替えてAD参加
旧NetApp側のIPアドレスを新NetAppについてた仮接続用IPに切り替え
旧NetAppのネットワークケーブルを接続して、AD参加

ということをやればいいかなーと以下の手順で実施した。

が・・・これだと旧NetAppがnetappfsとして参加していた情報の方が勝つらしく、12の段階で旧サーバがnetappfsだとしてAD上のアクセス情報を持っていこうとしているっぽく、問題が発生した。

このため新NetAppをもう1度Active Directoryに参加させるという対処を行う羽目になった。

  1. 旧NetAppが ADに netappfs で参加している
  2. 新NetAppが ADに netappfsnew で参加してデータ移行
    新::> vserver cifs create -vserver netappfs -cifs-server netappfsnew
  3. 切り替え日
  4. 旧NetAppのADをdown
     旧::> vserver cifs modify -vserver netappfs -state-admin down
  5. 新NetAppのADをdown
     新::> vserver cifs modify -vserver netappfs -state-admin down
  6. 旧NetAppのネットワークケーブルを外す
     (旧NetAppのIPアドレスは変更していない)
  7. 新NetAppでIPを引き継ぎ
    新::> network interface modify -vserver netappfs -lif ~ -address サービス用IP
  8. 新NetAppをnetappfsとしてAD参加
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfs
  9. 新NetAppにクライアントからアクセスできるか確認
     問題ないことを確認
  10. ケーブルを外した状態で旧NetAppのIPを変更
    旧::> network interface modify -vserver netappfs -lif ~ -address 別IP1
  11. 旧NetAppのネットワークケーブルをつなぐ
  12. 旧NetAppをAD再参加
     旧::> vserver cifs modify -vserver netappfs -cifs-server netappfs-old
      → クライアントから新NetApp(netappfs)にアクセスできなくなる
       新NetAppで「vserver cifs check」コマンドを実行すると
       「down SecD Error: no server available」といったエラーが出ている
  13. 新NetAppのAD登録名を一時的に別のものに参加したあと、正式名で再参加
     新::> vserver cifs modify -vserver netappfs -state-admin down
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfstmp
     新::> vserver cifs modify -vserver netappfs -state-admin down
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfs
      → クライアントから新NetApp(netappfs)にアクセスできるようになる

同じではないが、OUがちゃんと変更されていない場合の再変更手順「Organizational Unit (OU) is not updated in ONTAP after Active Directory object move」を見ると「vserver cifs stop -vserver netappfs」で止めたあと、もう1回「vserver cifs modify -vserver netappfs -cifs-server netappfs -ou OU=NewOU」と実行する、という風になっていた

いつもの切り替え手順

いつもは旧NetAppのサービス用IP と 新NetAppの仮接続用IP、旧NetAppの仮接続用IPの3つを用意してもらって切り替えている

1. 旧NetAppが ADに netappfs で参加している
2. 新NetAppが ADに netappfsnew で参加してデータ移行
  新::> vserver cifs create -vserver netappfs -cifs-server netappfsnew
3. 切り替え日
4. 旧NetAppのADをdown
 旧::> vserver cifs modify  -vserver netappfs -state-admin down
5. ケーブルを外した状態で旧NetAppのIPを変更
  旧::> network interface modify -vserver netappfs -lif ~ -address 旧NetAppの仮接続用IP
6. 旧NetAppをAD再参加
 旧::> vserver cifs modify  -vserver netappfs -cifs-server netappfs-old
7. 新NetAppのADをdown
 新::> vserver cifs modify  -vserver netappfs -state-admin down
8. 新NetAppでIPを引き継ぎ
  新::> network interface modify -vserver netappfs -lif ~ -address サービス用IP
9. 新NetAppをnetappfsとしてAD参加
 新::> vserver cifs modify  -vserver netappfs -cifs-server netappfs
10. 新NetAppにクライアントからアクセスできるか確認
 問題ないことを確認

メモ

secd logにログが出ているらしい?

/mroot/etc/log/mlog/secd.log というパス? (Overview of ONTAP Logs)

SVMのマシンアカウントのパスワードを再設定する「vserver cifs domain password reset」を実行することで解消する?


2023/11/23追加

Windowsサーバ→NetAppのrobocopy実行時にいくつか問題がある

(1) audit/監査設定周り

Windowsサーバ上で監査設定をちゃんと使っている場合、NetApp ONTAP側で使える監査機能との差異によって監査設定が期待通りにコピーできずにrobocopyがエラーになる。

具体的には「/copyall」もしくは「/copy:DATSOU」ではエラーとなる

robocopy D:\share\ \\netapp\share\ /COPYALL /MIR /B /EFSRAW /R:1 /W:1 /NP
<略>
	          古い		   3.0 g	SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_Japanese_w_SP1_MLF_X17-22600.ISO
2023/11/01 xx:xx:xx エラー 31 (0x0000001F) NTFS セキュリティをコピー先ファイルにコピーしています D:\share\ISO\SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_Japanese_w_SP1_MLF_X17-22600.ISO
システムに接続されたデバイスが機能していません。
<略>
2023/11/01 xx:xx:xx エラー 32 (0x00000020) ファイルをコピーしています	F:\COMMON\document\testdocument.docx
プロセスはファイルにアクセスできません。別のプロセスが使用中です。
エラー: 再試行が制限回数を超えました。
<略>

(オマケ:Notepad++でrobocopyのログ確認する時は、「^(.+新しいディレクトリ).+\r\n」「^(.+新しいファイル).+\r」「^(.+更新済み).+\r\n」の3つを「」(置き換え文字列を何も指定しない)に置き換えると問題となっているファイルを探しやすい。英語の場合はNew Dir,Newer,New File,Modified)

How to move files to a NetApp CIFS server using Robocopy to retain Windows ACLs

Does robocopy need to use /copy:datso option if the source has Windows Mandatory Level permission? (対象がcloud volumes ONTAPと書いてあるが、一般のONTAPも対象)

Robocopy unable to set all ACLs on a file (The SACL includes a Mandatory Label which is not supported by ONTAP)

対象方法は「/copy:DATSO」でコピーする、とある

(2) 毎回modifyになるという事象

タイムスタンプまわりの挙動がWindowsサーバとONTAPとで違うらしく、それが差分と認識されることがあるようだ。

ただ、情報の更新だけが行われているようで、ファイルの実体コピーは行われていない模様


robocopyのログで出る「*EXTRA File」は、コピー先にしか存在しないファイル

代表的なrobocopyエラーコードと対処一覧

エラー 2 (0x00000002)→指定したフォルダが存在しない
エラー 5 (0x00000005)→アクセス権がない。robocopyに/Bオプションを付ける
エラー 31 (0x0000001F)→コピー先に元と同じNTFSセキュリティ設定が行えない(OS制約などの可能性)
エラー 32 (0x00000020)→ファイルがアプリケーションからロックされているのでアプリを閉じる
エラー 64 (0x00000040)→指定した共有にアクセスできない
エラー 87 (0x00000057)→指定した共有にアクセスするためのユーザ名/パスワード指定が誤っている
エラー 112(0x00000070)→コピー先容量が足らない

参考:SEの道標【robocopy】のログの見方、エラーコード一覧〜不一致、EXTRAS〜
robocopyのエラーコードはWin32のエラーコードそのままなので上記以外については 「Win32 Error Codes」を参照

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください