DFSRがちゃんと動作しているかどうかは、dfsrdiagのPropagationTestにゃんかで調べることが出来るが、微妙に胡散臭いので愚直でシンプルにゃ方法でテストしてみる。
dfsr_test_dir.lst
\\server1\share\home1\user100
\\server2\share\home1\user100
\\server3\share\home1\user100
----
\\server1\share\home2\user101
\\server2\share\home2\user101
\\server3\share\home2\user101
----
dfsr_test_list.bat
@echo off
for /f "usebackq delims=" %%a in (`type "%~1"`) do call :sub1 "%%a"
goto :EOF
:sub1
if "%~1"=="----" (
call :sub2 "%~1"
) else (
call :sub3 "%~1"
)
exit /b
:sub2
@echo %str%
set str=
exit /b
:sub3
set str=%str% "%~1"
exit /b
dfsr_test.bat
@echo off
for /f "usebackq delims=" %%d in (`call dfsr_test_list.bat dfsr_test_dir.lst`) do call :pretest %%d
for /f "usebackq delims=" %%d in (`call dfsr_test_list.bat dfsr_test_dir.lst`) do call :test %%d
goto :EOF
:pretest
@echo pretest : %1
if not exist "%~1" (@echo %1 not exist & pause)
if exist "%~1\test_*" dir /s /b "%~1\test_*"
shift
if not "%~1"=="" goto :pretest
exit /b
:test
for %%a in (%*) do (call :test_sub1 %%a %*)
exit /b
:test_sub1
set write_dir=%~1
shift
set dirname=test_%random%_%random%_%random%_%random%_%random%_%random%_%random%
set c=md "%write_dir%\%dirname%"
%c% || (@echo ERR : %c% & pause)
@echo Wrote : %write_dir%
:loop
set rep_dir=%~1
call :echo2 "Rep : %rep_dir% : "
:loop_wait
if not exist "%rep_dir%\%dirname%" ping -n 2 localhost >NUL
if not exist "%rep_dir%\%dirname%" call :echo2 "."
if not exist "%rep_dir%\%dirname%" goto :loop_wait
@echo ok
shift
if not "%~1"=="" goto :loop
set c=rd "%write_dir%\%dirname%"
%c% || (@echo ERR : %c% & pause)
exit /b
:echo2
setlocal
set n=%~1
set /p <NUL dummy=%~1
endlocal
exit /b
と、まぁ見りゃ分かるが、テストしたい各DFSRフォルダをリストしておいて食わせると、それぞれのフォルダにダミーディレクトリを掘って、他の鯖に複製されまで待つ。これを各鯖毎に行うので、一方向しか複製されてにゃいとかいう場合も見えるはず。
ディレクトリが多いと少々時間がかかる。並列化しようか迷ったがまぁややこしくにゃるだろうからシンプルに。あと作ったダミーディレクトリは削除完了待ちしてにゃいので、DFSRが不調であれば残る可能性がある。
ML115に2コアCPUとかHDDx4とか詰め込んで24h回ってるPCでエラーイベント。
イベントの種類: エラー
イベント ソース: Disk
イベント カテゴリ: にゃし
イベント ID: 11
説明:
ドライバは \Device\Harddisk1 でコントローラ エラーを検出しました。
ぎゃー
といいたいが2003のソフトRAID1に隠蔽されててchkdskしても特にエラーが見えにゃい。
ん〜どういう対処すべきにゃのかにゃぁ。SMART見て表面検査くらい? 一番手軽にゃ方法は何かしら、と思いつつ2週間ほど放置してあるんだがそろそろにゃんかやった方がいいよね
DFSレプリケーションしてるディレクトリに自動Quotaをかけると、当然のようにDfsrPrivateディレクトリが自動Quotaにヒットして、かっちり制限される。
つまり、
\home\user1
\home\user2
\home\user3
の\homeにDFSレプリケーションと自動Quotaかけると、
\home\DfsrPrivate
\home\user1
\home\user2
\home\user3
にQuota生成されてDFSRが滅ぶ。DfsrPrivate\Stagingは別所へ移動可能だが、もちろん根本解決ににゃらにゃい。
手動で\home\DfsrPrivateのQuotaを削除しても、Quotaを変更すると自動で復活するあたりがとっても親切。
で、
\home\DfsrPrivate
\home\quota\user1
\home\quota\user2
\home\quota\user3
\homeにDFSR、その下のダミーディレクトリ以下に各ユーザディレクトリとQuota設定で多分OKという話にゃんだが、普通そんにゃ発想しねーよ状態。MS的にはどういう構造を前提として作ってるのか気ににゃる。
とりあえず対処療法的に、
for /f "usebackq tokens=2" %%a in (`dirquota quota list ^|find "クォータのパス:" ^|find /i "dfsrprivate"`) do dirquota quota delete /path:"%%a" /quiet
みたいにゃbatを叩いて全削除してるんだけど、まぁだれかがQuota更新したらDFSRも落ちますよーってことでよろしく、とメモ書いておくか(笑)
よく練られた壮大にゃお話にゃのか、にゃんとか収束に向かおうとがんばってる状態にゃのか、判断が付かにゃい(笑)
まぁでもそれにゃりにいろいろ不可解だった部分が、主に人間という原因でもって説明されつつある。