CloudBerry Driveを使ってObject StorageをWindowsのローカルドライブのように使う

※2019年11月現在、当記事に書いたObject Storage（OpenStack Swiftベース）はIBM Cloud上のObject Storageの主流ではありませんが、記事は参考に残しています。現在はS3ベースですので、CloudBerry Driveからのマウント方法をS3方式に変更する事で同様の操作は可能です。

このエントリは、[SoftLayer Advent Calendar 2015](http://qiita.com/advent-calendar/2015/softlayer) の21日目のエントリーです。

# 今回の目的
今回は、SoftLayerのObject Storageを、Windowsからマウントしてローカルドライブのように使えるCloudBerry Driveというソフトを試したいと思います。

構成は下記の図のようにします。SoftLayerのObject Storageは、プライベート側にもエンドポイントを持っており、SoftLayer上のサーバーからプライベート側のエンドポイントを指定して行うファイル転送は、ダウンロードであっても通信費用が発生しないのがメリットです（パブリック側エンドポイントからのダウンロードは従量課金の対象です）。

また、東京DCのサーバーからサンノゼDCのObject Storageにファイルをアップロード＆ダウンロードする事も可能で、SoftLayerはDC間ネットワークが無料ですので、プライベート側エンドポイントを使えば国際間のデータ通信であっても通信費用はかかりません。

![Qiita_AdventCalendar.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/8c48752b-160d-6e63-987d-f73647fcd065.jpeg)


この構成を使い、以下の事を確認したいと思います。
・同じDC内にあるサーバーとObject Storage間の転送速度
・異なるDC内にあるサーバーとObject Storage間の転送速度
・Windowsコマンド(robocopy)で、1つのObject Storageから別のObject Storageにファイルをコピーできるか？　コピーできる場合、その速度は？　差分のみのコピーも可能か？ etc

# 準備
## Windowsサーバーをオーダー
時間課金の仮想サーバーをオーダーします。今回、スペックは下記としました。
後で実測値を載せていますが、Object Storageへの転送速度は結構早かったので、NICは100Mbpsでなく1Gbpsが良いと思います。

- Windows Server 2012 R2 Standard Edition (64 bit) 
- 2 Core
- 4 GB RAM
- Tokyo DC
- 1 Gbps Network Uplinks

## CloudBerry Drive(体験版)をダウンロード
下記リンクから、SoftLayerのObject Storage用で、Windowsサーバー用のCloudBerry Driveをダウンロードします。今回はFreeトライアル版を使います。
http://www.cloudberrylab.com/softlayer-as-windows-server-drive.aspx

![cloudberry_dl.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/6412d21d-b5bd-3ddd-123d-f587dfde6795.jpeg)


## CloudBerry Drive(体験版)をインストール
上記サイトからダウンロードしたEXEを実行した際、サーバーにVisual C++が入っていないと、ポップアップが出ます。Yesを押下し、Microsoftのサイトからダウンロードします。

![visualc++.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/87d9528a-7dc2-e71e-a037-e1cb753779ef.jpeg)

![C++DL.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/b43aac5c-6265-7f49-aa5d-00b735543565.jpeg)

ダウンロードしたインストーラーを実行し、Visual C++をインストールします。

![C++install01.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/1cb23548-3460-d03a-6f5d-2881a0f817fe.jpeg)

![C++install02.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/cc22e0f6-80b0-1521-4d67-ec14b546c999.jpeg)

Visual C++を導入後、再度CloudBerry Driveのインストーラを起動します。今度は問題なくCloudBerry Driveのインストーラーが起動しますので、画面の指示に従ってインストールを進めてください。
![cb_install01.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/726bb62d-5e64-70ea-9557-8bea7558ab55.jpeg)

下記を聞かれたら「Install」を選びます。

![cb_install02.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/0e71a254-41a7-2b87-de40-041f5f799e26.jpeg)

途中、下記のメッセージが出るので、CloudBerryの導入後に、一度再起動する事にします。
![cb_install03.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/11ea469f-4f0b-5d12-614c-dd65632af1c8.jpeg)

導入完了後、Emailアドレスを入力し、トライアルを開始します。
トライアル期間は開始日から15日間です。

![cb_install05.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/4fe9736b-7453-baad-93c7-4a2e5bbf2e7a.jpeg)

![cb_install06.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/02d50392-204b-9a5e-3cc2-42e312c9971a.jpeg)

このタイミングでサーバーを再起動します。

正しくインストール完了していれば、サーバーの再起動後、タスクトレイにCloudBerry Driveのアイコンが表示されているはずです。
![cb_install07b.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/2a9423ed-6d4f-13c6-a05e-fa229ad12454.jpeg)



## Object Storageコンテナ作成(東京&サンノゼ)
CloudBerry DriveからObject Storageをマウントする際はコンテナを指定するので、事前にコンテナを作成しておきます。
SoftLayerの管理ポータルから、東京DCに「tokyo」、サンノゼDCに「sanjose」という名前でコンテナを作成します。コンテナ名は任意です。
Object Storageのオーダー方法やコンテナ作成方法は、下記URLをご参照ください。
https://www.change-makers.jp/post/10354

![container_tokyo.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/75f957bd-18c8-4dbf-5736-c2887d352f0d.jpeg)

![container_sanjose.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/abd9006c-f974-f184-9363-33f376c2eb4a.jpeg)


#Object Storageをマウント

ここまでの手順で、Windowsサーバー側とObject Storage側の準備が整いました。
WindowsサーバーからCloudBerry Driveを使ってObject Storageをマウントしてみます。
下記に手順があるので参照してください。
https://www.change-makers.jp/post/10361

2015年12月時点でダウンロードしたCloudBerry Driveは、エンドポイントの情報が新しくなっており、SoftLayerの東京DCのエンドポイントも登録されていますが、プリセットされているのがパブリック側のエンドポイントのため、これを指定すると、SoftLayer上のサーバーとの通信であってもインターネット経由となり、ダウンロードが従量課金となってしまいます。

![mount01.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/3a9256b6-0b5d-502a-9e51-4c2ac63afb38.jpeg)

SoftLayerのプライベートネットワークを活用するため、明示的にプライベート側のエンドポイントを指定する必要がありますので、先ほどの[リンク先](https://www.change-makers.jp/post/10361)の手順にあるように、「OpenStack」を選択し、手動でプライベート側のエンドポイントを入力するのが良いでしょう。

![mount03.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/546c9e75-8544-bdbf-bd59-1931b9889994.jpeg)

Test Connectionボタンで、接続を確認できます。
![mount06.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/262580db-ccdf-f3e2-4b64-4ffe1d47742a.jpeg)


なお、入力に必要な情報（ユーザー名、APIキー、エンドポイントのURL）は、SoftLayer管理ポータルのObject Storageの画面で確認可能です。
Object Storageのコンテナ一覧の画面で、View Credentialsをクリックすると、設定に必要な情報が表示されます。
![mount04.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/17057e1d-3918-6bb0-3e4f-eaf1e527f6ee.jpeg)

![mount05.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/145fc966-1797-63fd-6124-d735cc519e53.jpeg)

同様に、サンノゼ側のエンドポイントも登録します。

![mount07.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/04909c71-1de7-e24d-438d-d5e65fe932f4.jpeg)

先ほどの[リンク先](https://www.change-makers.jp/post/10361)にある手順に従い、Mapped Driveのタブから、東京のObject StorageコンテナをDドライブ、サンノゼをFドライブとしてマウントします。

![mount08.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/17e60858-e008-71e5-7d78-eb17cf34c4a4.jpeg)

エクスプローラー上でも、Dドライブ、FドライブとしてObject Storageがマウントされた事が確認できます。

![mount09.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/b35cd4b6-90d3-7f87-1f25-f7f62bad5ed5.jpeg)


#東京のObject Storageにアップロード
WindowsサーバーのCドライブに用意した、15MB程度の画像ファイル×10個=150MBで試します。

![150MB.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/55a3b689-d5a3-e736-c500-3373cf0efcfa.jpeg)


エクスプローラ上で、Cドライブの画像ファイル150MBを、Dドライブ(東京のObject Storageをマウント)にコピーします。

![copy2.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/b0c35608-89c7-b3aa-95cc-3d77b1df8d52.jpeg)

150MBのファイルのアップロードが、約2～3秒で終わりました。
SoftLayerの管理ポータルでも、アップロード前は空だったコンテナに、オブジェクトが入った事が確認できました。

【アップロード前】
![container_tokyo_before.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/2a85d5d6-c626-f14f-2e20-573733168da2.jpeg)

【アップロード後】
15MBのファイルが分割されて、10MBと5.22MBとして入っていることが分かります。この分割はCloudBerryによって自動的に行われます。
![container_tokyo_after.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/e2d9fa59-5a0a-98a8-d5de-674fc60f217f.jpeg)

転送速度は、50MB/s～60MB/s程度出ていました。
![transfer_tok01.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/398bbfc3-2f39-0d56-c19c-5c0c399d4f5e.jpeg)

上記は2～3秒だけだったので、転送速度が出るか安定して出る確認するため、ファイル数を増やして転送速度を確認しました。
下記が、15MB×80個=1.2GBをアップロードしている最中の画面キャプチャです。
若干の上下はありますが、極端に遅くなる事はなく、平均的に40MB/s以上出ていました。合計1.2GBのアップロードが30秒程度で終わりました。

![transfer.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/280c9b70-d69a-b09c-a570-37103a755e57.jpeg)

ダウンロード（東京のObject StorageからWindowsサーバーのCドライブ）も、40MB/s程度でした。但し、ファイルコピーすると早いのですが、Object Storage上のファイルを直接開こうとすると、結構時間がかかりました（15MBの画像を1つ開くのに10秒前後かかりました）。

![transfer_tok02.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/96403df3-16df-abf9-3453-69b0a09b90e6.jpeg)


#サンノゼのObject Storageにアップロード
同様に、15MB×10個のファイルをサンノゼにアップロードしました。
上りで20MB/s程度、下りは3MB/s程度でした。

![transfer_sanjose_up01.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/522dd9ab-3cfa-06ed-a149-4178c540db4b.jpeg)

![transfer_sanjose_down01.jpg](https://qiita-image-store.s3.amazonaws.com/0/59627/bc284602-531f-85db-aaa6-0fd0ad527c11.jpeg)

#Windowsコマンドで、東京のObject StorageのファイルをサンノゼのObject Storageにコピー

一旦、Fドライブ(サンノゼのObject Storage)を空にして、今度はCドライブのファイルをアップロードするのではなく、robocopyコマンドで、Dドライブ(東京のObject Storage)のファイルをFドライブにコピーしてみました。
東京のObject Storage→東京のWindowsサーバー→サンノゼのObject Storageの経路を通ることになります。結果は下記のとおりで、150MBが11秒ですので、13～14MB/s程度でした。

```
C:\Users\Administrator>ROBOCOPY D:\ F:\ /MIR /XO

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

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

  Started : Sunday, December 20, 2015 8:22:05 AM
   Source : D:\
     Dest : F:\

    Files : *.*

  Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /XO /R:1000000 /W:30

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

                          10    D:\
100%        New File              15.2 m        test01.bmp
100%        New File              15.2 m        test02.bmp
100%        New File              15.2 m        test03.bmp
100%        New File              15.2 m        test04.bmp
100%        New File              15.2 m        test05.bmp
100%        New File              15.2 m        test06.bmp
100%        New File              15.2 m        test07.bmp
100%        New File              15.2 m        test08.bmp
100%        New File              15.2 m        test09.bmp
100%        New File              15.2 m        test10.bmp

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

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         1         0         0         0         0         0
   Files :        10        10         0         0         0         0
   Bytes :  152.19 m  152.19 m         0         0         0         0
   Times :   0:00:11   0:00:11                       0:00:00   0:00:00


   Speed :            13368314 Bytes/sec.
   Speed :             764.941 MegaBytes/min.
   Ended : Sunday, December 20, 2015 8:22:18 AM


C:\Users\Administrator>
```


その後、Dドライブ(東京のObject Storage)にファイルを5つ(test11.bmp～test15.bmp)追加して、再度robocopyを実行したところ、追加した5ファイルのみコピーされました。

```
C:\Users\Administrator>ROBOCOPY D:\ F:\ /MIR /XO

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

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

  Started : Sunday, December 20, 2015 8:28:18 AM
   Source : D:\
     Dest : F:\

    Files : *.*

  Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /XO /R:1000000 /W:30

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

                          15    D:\
100%        New File              15.2 m        test11.bmp
100%        New File              15.2 m        test12.bmp
100%        New File              15.2 m        test13.bmp
100%        New File              15.2 m        test14.bmp
100%        New File              15.2 m        test15.bmp

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

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         1         0         0         0         0         0
   Files :        15         5        10         0         0         0
   Bytes :  228.29 m   76.09 m  152.19 m         0         0         0
   Times :   0:00:08   0:00:08                       0:00:00   0:00:00


   Speed :             9955766 Bytes/sec.
   Speed :             569.673 MegaBytes/min.
   Ended : Sunday, December 20, 2015 8:28:26 AM


C:\Users\Administrator>ROBOCOPY D:\ F:\ /MIR /XO
```

また、test07.bmpのみ更新して再度robocopyを実行したところ、更新した1ファイルのみコピーされました。

```
C:\Users\Administrator>ROBOCOPY D:\ F:\ /MIR /XO

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

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

  Started : Sunday, December 20, 2015 8:35:12 AM
   Source : D:\
     Dest : F:\

    Files : *.*

  Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /XO /R:1000000 /W:30

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

                          15    D:\
100%        Newer                 15.2 m        test07.bmp

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

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         1         0         0         0         0         0
   Files :        15         1        14         0         0         0
   Bytes :  228.29 m   15.21 m  213.07 m         0         0         0
   Times :   0:00:00   0:00:00                       0:00:00   0:00:00


   Speed :            39211533 Bytes/sec.
   Speed :            2243.701 MegaBytes/min.
   Ended : Sunday, December 20, 2015 8:35:12 AM


C:\Users\Administrator>ROBOCOPY D:\ F:\ /MIR /XO
```

このように、CloudBerry Driveを使うことで、Object Storageに配置したファイルをWindowsのコマンドからも操作できるので、使い方次第で便利に使えるのではないかと思います。

既知の要考慮点として、Object Storageでは、下記のURLにあるように、記録したオブジェクトに対してメタデータが付与できるのですが、このメタデータの情報は上記に書いた方法ではコピーされませんので、もしメタデータを付与して使っている場合は別の方法を考える必要があります。
https://www.change-makers.jp/post/10356

また、ユーザーインターフェースとしてはWindowsのローカルドライブのように使えるとは言っても、裏で動いているのはObject Storageですので、DB領域のように、ブロック単位で読み書きする用途には向かないでしょう。上記のようにオブジェクト(ファイル)単位で読み書きするのが基本になると思います。

また、今回の検証結果は筆者の環境における実測値であり、この通りの結果が得られる事が保証されたものではない点はご了承ください。