参照先 https://wiki.samba.org/index.php/Server-Side_Copy

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

windows7

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

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

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

windows7 robocopy

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

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なので、30.5MB/sec244.6Mbps となる。
このコピーの間、「タスクマネージャ」の「ネットワーク」は静かなままであった。

Btrfsならもっと早く

(Btrfs Enhanced Server-Side Copy Offload)
サーバ側のファイルシステムが btrfs ならもっと早くなそうな
ただし、コピー元、コピー先が同一ボリュームで、smb.confで対象ボリュームに「vfs objects = btrfs」の記述が必要みたい。

[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を再起動します

[root@c ~]# systemctl restart samba

その後、windows7のコマンドプロンプトで同じようにファイルをコピーしてみます。

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なので 1.1GB/sec8.83Gbps となる
*前回のキャッシュかなと思って、\\c\export\sample2 なるフォルダへのコピーも試みたが同じ値であった
当然ながらこのコピーの間、「タスクマネージャ」の「ネットワーク」は静かなままであった。

windows8/windows2012

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

コピー先が別のマシンなら

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

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

次に、これをrobocopyにて行ってみる。

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ではなく、クライアントを経由していた
単一サーバ内でのコピーなら有効だけど、サーバを跨ぐには機能しないみたい。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2015-12-30 (水) 23:26:47 (661d)