web-dev-qa-db-ja.com

Windowsでは、シンボリックリンクをネットワーク共有として共有できますか?

概要

symlinkをWindowsのネットワーク共有としてネットワークの場所に共有することはできますか?例えば:

D:\folder\Shared\foo\\server\\server\fooとして共有されます。ここで、D:\folder\Shared\fooは実際には\\other\server\barへのディレクトリシンボリックリンクです。

それとも XY問題 ですか?

バックグラウンド

2つの仮想ディスクを備えたWindows Server 2008 R2 *仮想マシンfs1があります。 C:はもちろんシステムドライブであり、D:はデータドライブです。 SMB WindowsShare and Storage Managementを使用して、D:で複数のフォルダを共有します。次に例を示します。

  • D:\Shares\Shared\Engineering\\fs1\Engineeringとして共有されます
  • C:\Shares\Shared\Admin\\fs1\Adminとして共有されます

これらの共有は通常、ユーザーワークステーション上のネットワークドライブとしてマップされます。たとえば、E:\\\fs1\Engineeringにマップされる場合があります。

これらの共有をこの仮想ディスクから新しいストレージロケーション\\abc\defに移動したいと思います。これをエンドユーザーに対して透過的に実行したいのです(少なくとも現時点では、最終的に元のパスはなくなりますが、それはなくなります)質問の範囲)。

* 2016年または2019年にアップグレードします。

私が今いる場所

共有フォルダーの特定のサブフォルダーは、最初にRoboCopyを使用してデータをターゲットの場所(\\abc\def)にコピーし、次に元のパスの名前をバックアップパスに変更することで移行されます、そして最後に新しいターゲットへのディレクトリシンボリックリンクを作成します。プロセスは大体同じように見えます(いくつかの追加のフラグ/オプションは簡潔にするために省略されています):

robocopy D:\Shares\Shared\Admin\Finance \\abc\def\Finance /mir
ren D:\Shares\Shared\Admin\Finance D:\Shares\Shared\Admin\Finance_old
mklink /D D:\Shares\Shared\Admin\Finance \\abc\def\Finance

次に、Finance_oldフォルダーの権限が変更され、正常に機能していることが確認されると、最終的に削除されます。

ルート共有フォルダーD:\Shares\Shared\Adminは、実際のフォルダーであり、シンボリックリンクではないことに注意してください。

これは非常にうまく機能します。1秒未満のダウンタイムで実行でき、すべてのエンドユーザープログラムは引き続き機能します。

脇:Windows SymLink権限

私はすでにGPO Remote Link to Remote Targetシンボリックリンクを許可するように設定しています。 source1source2

問題

サブフォルダーが多すぎてそれぞれにシンボリックリンクを作成できないため、代わりに、共有ルートフォルダーごとに1つのシンボリックリンクを作成します。

D:\Shares\Sharedディレクトリにシンボリックリンクを正常に作成できます。

mklink /D D:\Shares\Shared\symlink_test \\abc\def\target

その後、それを共有およびストレージ管理に正常に追加できます。

Share settings

Successfully shared

そして、Windows Explorerで\\fs1を閲覧すると、共有が表示されます。

しかし、共有場所\\fs1\symlink_testにアクセスしようとすると、「デバイスの準備ができていません」というエラーが表示されます。

device not ready error

ちょっとそれは許可についてのものを言います!

すべての権限を確認しましたが、場所は読み取り可能である必要があります。

  • \\abc\def\symlink_testに直接アクセスできます。
  • D:\Shares\Shared\symlink_testにアクセスでき、目的の場所に正しく移動できます。

だから私はそれが許可の問題だとは思わない。

他の情報

  • fs1はWindows Server 2008 R2を実行しています
  • \\abc\defは実際には分散ファイルシステムの名前空間です
  • \\abc\def\fooは、Synology上のターゲットを持つDFS名前空間内のフォルダですNAS \\nas1\foo
6
dthor

DFSをご覧になることをお勧めします。私は自分で設定を行っていませんが、管理者がWindows CIFSサーバーから別のWindows CIFSサーバーに共有を正常に移行するのを見てきました。

次のようになります。

  1. Server1には、\\ Server1\shareに共有が含まれています。 \\ Server1\shareから情報を取得する\\ DFS\shareのようなDFS共有が作成されます。
  2. Server2が立ち上がり、DFSレプリケーションに追加されます。これで、\\ Server1\shareからのすべてのデータが\\ server2\shareおよび\\ DFS\shareで利用可能になります。
  3. GPO(または共有をマッピングしているもの)を\\ Server1\shareではなく\\ DFS\shareに変更します。
  4. これで、DFSから\\ Server1\shareを削除してシャットダウンできます。共有を再度移行する必要があるときはいつでも、DFSレプリケーションに新しいサーバーを追加できます。さらに、バックアップ(1台のサーバーが停止し、もう1台がデータを保持する)または可用性(2台の離れた場所にある1台のサーバー)のために、DFSに複数のサーバーを継続的に配置できます。
2
duct_tape_coder