参照先 [[https://wiki.samba.org/index.php/Server-Side_Copy>+https://wiki.samba.org/index.php/Server-Side_Copy]]

別に&color(darkorchid){''ActiveDirectoryドメインコントローラ''};になって初めて使える機能ではない。
従来のファイル共有機能だけの利用でも使える機能です。

***windows7 [#d750f485]
windows7マシンで、ファイルの複製を作ってみる(Traditional File Copy)。
ここでは \\c\export にある「win12r2.iso」(4.03 GB)を選択して、右クリックから「コピー」を選択後、
同フォルダ内で「貼り付け」で複製を作った。
&ref(2015y03m22d_033913475.png,nolink);
同一フォルダ内でコピーが始まる。
同一フォルダ内で複製が始まる。
&ref(2015y03m22d_034602532.png,nolink);

っが、「タスクマネージャ」を見ると、操作した側のクライアントとの通信が発生している。
&ref(2015y03m22d_034720220.png,nolink);

サーバ内での複製作成なので、サーバ内で対処してほしいのだが、windows7のエキスプローラ―を使う限りは一旦クライアントにデータが送られ、そして複製先のサーバに渡されている。

***windows7 robocopy [#j4e98832]
windows7であっても robocopy を使う限りはそのようなクライアントを経由することはない(Server-Side Copy Offload)。
下記はwindows7のコマンドプロンプトから実行した結果である。
1つのファイルを「\\c\export」フォルダ から「\\c\export\sample」フォルダにコピーしてます。

#code(nonumber){{
C:\Users\illya>robocopy \\c\export  \\c\export\sample   win12r2.iso

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Sun Mar 22 03:59:27 2015

   Source : \\c\export\
     Dest : \\c\export\sample\

    Files : win12r2.iso

  Options : /COPY:DAT /R:1000000 /W:30

------------------------------------------------------------------------------

                           1    \\c\export\
100%        New File               4.0 g        win12r2.iso

------------------------------------------------------------------------------

                Total    Copied   Skipped  Mismatch    FAILED    Extras
     Dirs :         1         0         1         0         0         0
    Files :         1         1         0         0         0         0
    Bytes :   4.037 g   4.037 g         0         0         0         0
    Times :   0:02:15   0:02:15                       0:00:00   0:00:00

    Speed :            32055507 Bytes/sec.
    Speed :            1834.230 MegaBytes/min.

    Ended : Sun Mar 22 04:01:42 2015

C:\Users\illya>
}}
32055507 Bytes/secなので、&color(cadetblue){30.5MB/sec};、&color(cadetblue){244.6Mbps}; となる。
このコピーの間、「タスクマネージャ」の「ネットワーク」は静かなままであった。

***Btrfsならもっと早く [#e51aeb90]
(Btrfs Enhanced Server-Side Copy Offload)
サーバ側のファイルシステムが btrfs ならもっと早くなそうな
ただし、コピー元、コピー先が同一ボリュームで、smb.confで対象ボリュームに「&color(magenta){vfs objects = btrfs};」の記述が必要みたい。
#code(nonumber){{
[root@c ~]# vi /opt/samba/etc/smb.conf
(略)
[export]
        path = /export
        writable = yes
        guest ok = yes
        vfs objects = shadow_copy2
        shadow: snapdir = .snap
        shadow: basedir = /export
        vfs objects = btrfs
(略)
}}
として、sambaを再起動します
#code(nonumber){{
[root@c ~]# systemctl restart samba
}}
その後、windows7のコマンドプロンプトで同じようにファイルをコピーしてみます。
#code(nonumber){{
C:\Users\illya>robocopy \\c\export  \\c\export\sample   win12r2.iso

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

  Started : Sun Mar 22 04:25:50 2015

   Source : \\c\export\
     Dest : \\c\export\sample\

    Files : win12r2.iso

  Options : /COPY:DAT /R:1000000 /W:30

------------------------------------------------------------------------------

                           1    \\c\export\
100%        New File               4.0 g        win12r2.iso

------------------------------------------------------------------------------

                Total    Copied   Skipped  Mismatch    FAILED    Extras
     Dirs :         1         0         1         0         0         0
    Files :         1         1         0         0         0         0
    Bytes :   4.037 g   4.037 g         0         0         0         0
    Times :   0:00:03   0:00:03                       0:00:00   0:00:00

    Speed :          1185010983 Bytes/sec.
    Speed :           67806.872 MegaBytes/min.

    Ended : Sun Mar 22 04:25:54 2015

C:\Users\illya>
}}
1185010983 Bytes/secなので &color(orangered){1.1GB/sec};、&color(orangered){8.83Gbps}; となる
&color(red){*};&size(10){前回のキャッシュかなと思って、\\c\export\sample2 なるフォルダへのコピーも試みたが同じ値であった};
当然ながらこのコピーの間、「タスクマネージャ」の「ネットワーク」は静かなままであった。

***windows8/windows2012 [#x8151ac7]
windows7でもrobocopyなら「Server-SideCopy」が使えるが、windows8/windows2012なら
エキスプローラ―の操作でも「Server-SideCopy」が使える。



***コピー先が別のマシンなら [#fea52b67]
windows7でエキスプローラ―を使う限り、やはり一端データが送られ、そしてコピー先のサーバに渡されている。
下図は、windows7クライアントマシンから、\\c\exportの「win2k8r2.iso」ファイルを\\share\publicにコピーしている。
&ref(2015y03m22d_101021717.png,nolink);

この際の「タスクマネージャ」を見ると下記になる。
&ref(2015y03m22d_101840985.png,nolink);
2台のサーバの中継役として存在している。

次に、これをrobocopyにて行ってみる。
#code(nonumber){{
Z:\>robocopy \\c\export \\share\public win2k8r2.iso

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Windows の堅牢性の高いファイル コピー

-------------------------------------------------------------------------------

  開始: Sun Mar 22 10:25:00 2015

   コピー元 : \\c\export\
     コピー先 : \\share\public\

    ファイル: win2k8r2.iso

  オプション: /COPY:DAT /R:1000000 /W:30

------------------------------------------------------------------------------

                           1    \\c\export\
100%        新しいファイル                 3.0 g        win2k8r2.iso
2015/03/22 10:26:23 エラー 5 (0x00000005) ファイル属性を変更しています \\share\public\
アクセスが拒否されました。
30 秒間待機しています... 再試行しています...
}}
エラーが報告されているが、一応はコピーされた。っがServer-Side Copyではなく、クライアントを経由していた
単一サーバ内でのコピーなら有効だけど、サーバを跨ぐには機能しないみたい。
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS