VPN 切断後の SMB 共有:復旧のためのチェックリスト
書き込みを止め、サーバーの本当のパスを復元し、失敗した保存は失われたものではなく不明として扱う。開いたハンドルは新しい VPN セッションを越えて残らない。
保存が止まり、トンネルが落ち、三十秒後に VPN は再び接続されているのに、Finder のウインドウは空の共有の上で回り続ける。すべては動くはずに見える。トンネルは上がり、ネットワークは上がり、ボリュームは上がっていない。これを順番にたどること。アプリケーションがまだ開いたハンドルを保持していると思っている間に再接続することが、不確かな書き込みを失われた書き込みに変える道だからだ。
まず共有への作業を止めることから始める。再接続からではない。受け身に見えるが、データを守るのはこの手順だ。
再接続する前に書き込みを止める
能動的に書き込もうとしているものはすべて閉じ、アプリケーション自身の保存または復元の経路を使って、ローカルの場所に保存できるものは保存する。大きなコピーを始めず、同期クライアントに無限の再試行をさせず、サーバーのコピーをローカルのコピーで置き換える提案を受け入れない。データを失うのは三番目の指示だ。時間切れになった保存は確認済みでもなく、必ずしも存在しないとも限らず、サーバーのファイルを上書きすると実際に何が起きたかを示す唯一の証拠が消える。
同じ文書の二つの版が表示されるなら、今は両方ともそのままにしておく。ファイル名やタイムスタンプで勝者を選ぶのは、判断の衣装を着た推測だ。
パスを復元し、それから証明する
意図した VPN に再接続して認証を完了し、ファイルサーバーの名前が解決することと、SMB サービスがトンネル越しに応答することを確認する。接続済みという状態はトンネルしか説明しない。だから確認の終わりではなく始まりとして扱う。
トンネル経由でファイルサーバーの名前解決と到達性を確認する。
既存のマウントには、同じラベルの二つ目のボリュームが遅い復旧より扱いにくいことを踏まえ、別のものを作る前に一分与える。
ボリュームが戻らないなら、意図して Go、次に Connect to Server を使い、
smb://files.corp.example/teamのようなサーバーの既知のアドレスで接続する。ファイルサーバーのアカウントでサインインし、 VPN のログインとは別の資格情報の判断として、続ける前にアプリケーションで文書の状態を確認する。
Apple の Finder 接続ガイド は明示的なアドレスの方法を記録しており、ここではそれが信頼できる道だ。サイドバーに並ぶボリューム名はキャッシュされたラベルであり、以前の接続がまだ使える証拠ではない。
新しいセッションが開いたハンドルを約束できない理由
SMB には一時的な切断を生き延びる仕組みが確かにあり、どちらも条件付きだ。永続的なオープンはクライアントとサーバーの間で交渉された時間枠の中で再接続できるが、持続的なオープンは双方により厳しい機能を要求する。Mac のクライアントとファイルサーバーが共有のマウントに合意したからといって、開いていたファイルにどちらかの仕組みが交渉されたかは何も言えない。
仕様は失敗についても同じくらい明確だ。復旧が成功しなければハンドルは無効化され、クライアントはファイルを閉じたものとして扱うことが求められる。その瞬間に書き込みの途中だったアプリケーションには、共有が再び閲覧でき、Finder でファイルが無事に見えたとしても、続けるべき有効なハンドルがない。
だから再び現れるボリュームは必要な手順であって、十分な手順ではない。エディタ、データベース風のアプリケーション、排他的なロックを保持するものは、それぞれの接続を開き直す必要があるかもしれない。文書の状態について信頼できる報告は、ファイル一覧ではなくアプリケーションからしか出てこない。
マウントを整った見た目に強制しない
固まったサイドバーを片付けるためにボリュームを強制アンマウントしたり、ファイルシステムの補助プロセスを殺したりするのは魅力的で、たいてい逆効果だ。固まった状態は実際に保留中の操作を映していることが多く、その下からマウントを引き抜いてもアプリケーションのデータはどこにも安全に届かない。次の調査も難しくなる。利用者が見たエラーはすでに画面から消えているからだ。アプリケーションが報告した正確なエラーと切断の時刻を記録する。そのタイムスタンプがあればこそ、報告をサーバーのログと突き合わせられる。
共有が忙しいままなら、力を強めるのではなく、ファイルサービスや Mac のサポート手順を使う。証拠を残すことは、整ったサイドバーより価値がある。
次に計画された切断の前に
VPN を意図的に切断する前に、保存を終え、依存するファイルを閉じ、共有を普通に取り出す。その順序は安上がりで、この種の問いをまるごと消す。
切断に頻繁に見舞われる仕事なら、マウントではなく働き方を変える。ローカルのコピーを保ち、アプリケーションが支える仕組みで同期すれば、落ちたトンネルの代償は不確かな書き込みではなく同期の一区切りで済む。マウント用のスクリプトは任意の開いたファイルのトランザクションを保つことはできず、どんな調整でもそれを試みさせられない。