QNAPとIBM Cloud Object Storage(ICOS）で簡単にファイルサーバを構築してみました


# １．はじめに

NASのQNAPとS3互換のオブジェクトストレージのICOSを使って、簡易ファイルサーバを作ってみました。
QNAPはNASだから、わざわざICOSと接続しなくてもいいのではないかと思われますが、心配性なのでバックアップも考えてしまいます。
そこで、低価格なICOSにバックアップを取ることにしました。
直接ICOSでアクセスしたいところですが、オブジェクトストレージの仕様上SMBの操作ができないため、ファイル共有の目的が果たせません。

QNAPはソフトウェアが充実していてほとんどが無償で提供されています。
今回は、QNAPのHybridMount-ファイルクラウドゲートウェイを使用して、ICOSにファイルを保存する事としました。
尚、構築するファイルサーバの要件（希望）は以下の通りです。
<font color="blue"><strong>​　　１．素早く構築できる
　　２．低コスト
​　　３．運用、管理が楽（将来的にAD連携したい）
​　　４．バックアップ機能がある（できたら３２１ルール）
​　　５．ドキュメントの排他制御ができる
​　　６．アクセスが早い
​　　７．外出先からもアクセスできる
​　　８．セキュリティを考慮
​　　９．ドキュメントの利用目的により、保管コストを変えられる</font></strong>

まとめると、<strong>コストと労力をかけずに、すぐにかつ自由度があるもの</strong>というのが希望です。

この簡易ファイルサーバですべての希望は難しいでしょうが、将来的にドキュメント共有による業務効率化やドキュメント管理の経験値が向上した際には、本格的ファイルサーバに置き換えたいと思います。



# ２．QNAPが提供するICOSとの連携ソリューション

オブジェクト連携するソリューションは下記4つあります。今回は「２．HybridMount（ファイルクラウドゲートウェイ）」を使用して簡易ファイルサーバを構築しました。
　　<strong>１．HBS 3 (Hybrid Backup Sync 3)
　　２．HybridMount（ファイルクラウドゲートウェイ）
　　３．HybridMount（File Stationマウント）
　　４．VJBOD Cloud</strong>
ちなみに各ソリューションは、

<font color="blue">「１．HBS 3 (Hybrid Backup Sync 3)」</font>は重複排除や世代管理機能があるバックアップソリューションで、ICOSにバックアップデータを保管できます。

<font color="blue">「２．HybridMount（ファイルクラウドゲートウェイ）」</font>はQNAP側はキャッシュを持ち、かつICOSへのゲートウェイ機能を提供するので、PCからローカルNASにアクセスする速度を保ちながら、ICOSへの転送といったバックグラウンド処理を行います。
<font color="blue">「３．HybridMount（File Stationマウント）」</font>はQNAPのFile StationからICOSや他のNASをマウントして使用します。
<font color="blue">「４．VJBOD Cloud」</font>はICOSとブロックベースで接続し、バックアップが取れます。


# ３．HybridMout各機能の違い

HybridMountでは2つの機能（ファイルクラウドゲートウェイ、File Stationマウント）があり、どう違うのか？目的とする簡易ファイルサーバを構築するにはどちらなのか？と悩むところです。

## ３－１．ファイルクラウドゲートウェイ機能

QNAP NASに、ICOS（バケット）上のファイルを読み込み・書き込みする際に使用するキャッシュを持ちます。（予約キャッシュ・読み込みキャッシュ・書き込みキャッシュ）

ローカルPCがICOSに書き込む際は、ファイルクラウドゲートウェイ機能により、まず書き込みキャッシュに書き込みしてから、ICOSへ書き込みます。これによりローカルNASと同等の速度で読み書きka可能です。

キャッシュヒットすれば、ICOSへ直接アクセスしませんので、回線費用も抑えられます。

ICOSとは常に同期。

また、QNAP NASのファイル共有・管理機能により、ドキュメントの排他制御が可能。書き込み中に他のユーザが同じファイルを開くと、読み取り専用となります。

<font color="green">（※ドキュメントツール側に排他制御機能が必要です。一般的なOfficeツールはこの機能があります。）</font>

　尚、2マウントまでのライセンスが無料で付いてきます。つまり、異なるバケット2つまでマウント可能ですが3つ以上マウントする際は、有償ライセンスを購入します。

ライセンス費用：

| 1ライセンス　年間 | 4ライセンス　年間 | 8ライセンス　年間 |
| :---------------: | :---------------: | :---------------: |
|      $19.99       |      $59.99       |      $99.99       |

ICOSはアクセス頻度により、費用が異なるストレージモデルがあります。ストレージモデルを3つ以上使用する時は、ライセンスを購入する必要があります。

また、使用するバケットは2までで、サブフォルダーを作成してユーザ（またはグループ）毎にアクセス権を設定する運用にするなら、ライセンス購入する必要はありません。

まとめると、
　　<font color="blue">・クラウド上のICOSでも、ローカルNASと同等の読み書き速度
　　・ドキュメントの排他制御が可能なので、ドキュメント共有が可能
　　・ローカルPCからはSMBでネットワークドライブとして使える
　　・バケット2つまで接続なら無料</font>
![03.png](http://seahorse-inc.com/QIITA/QNAP-1/03.png)

## ３－２．File Stationマウント機能

File Stationとは「QNAP NAS のファイルマネージャー機能」で自分自身と、他のNASおよびICOS上のファイルをまとめて管理できるソリューションです。

![01.png](http://seahorse-inc.com/QIITA/QNAP-1/01.png)

ICOSのバケットをQNAP NASでマウントして、File Station からドキュメントにアクセスします。

また、QNAP NASにはICOSアクセスのためのキャッシュ機能がないため、ドキュメントにアクセスする度にICOSまでアクセスしますので、読み取り・書き込み速度が遅く、通信費用も多くかかってしまいます。
ローカルPCからSMBなどでアクセスできないので、File Stationからのみ操作することになります。
ICOSとは参照時のみ同期します。
ライセンスの制限はありません。
まとめると、
　　<font color="blue">・複数のNASやICOSを1台のFile Stationでまとめて管理できる
　　・File Stationでドキュメント参照するとICOSまでアクセスするので書き込み・読み込みが遅い
　　・ライセンスの制限がない</font>
![](http:///seahorse-inc.com/QIITA/QNAP-1/02.png)

## ３－３．機能の選択

今回構築の簡易ファイルサーバは、低コスト、ドキュメントの排他制御ができる、アクセスが早いといった点より、
<font color="blue">「HybridMount（ファイルクラウドゲートウェイ）」</font>を使って構築します。



# ４．簡易ファイルサーバ構築手順
構築手順は、ICOS側でバケットを作成後、QNAPでファイルクラウドゲートウェイの設定を行います。

## ４－１．ICOS側
IBM Cloud IDはすでにお持ちで、IBM Cloudポータルにログインできるところから手順を説明します。
アカウントIDをお持ちでない場合は、下記サイトから申し込めます。（無償でクレジットカードを必要としない、ライトアカウントで申請できます）
https://www.ibm.com/jp-ja/cloud/lite-account
この手順で、バケット名、サービス資格情報（access_key_id、secret_access_key）、エンドポイントを取得し、QNAP側での構築で使用します。



### ４－１－１．ICOSサービスのオーダ

下記URLからICOSのサービスオーダをします。
https://cloud.ibm.com/catalog/services/cloud-object-storage

<font color="red">※「このアカウント内のリソース・グループにインスタンスを追加する権限がない」といったメッセージでオーダできない場合は、管理者の方にご相談ください。</font>

ICOSはライトプランだと月25GBまで、使用しない期間が30日を経過すると削除される。サービスインスタンスは1つまでといった制限がありますが無償です。
ライトプランを別件で使ってしまったので、今回は有償のスタンダードプランを使用します。

![04.png](http://seahorse-inc.com/QIITA/QNAP-1/04.png)

サービス名を入力 ⇒ 画面右側の「作成」をクリック。
ここでは、サービス名を<font color="blue">「mm-2020043001」</font>としました。



### ４－１－２．バケットの作成
ここでは、下記名称でバケットを作成します。
バケット名：<font color="blue">「mm-bucket2020043001」</font>、バケット・クラス<font color="blue">「Standard」</font>
回復力は<font color="blue">「Regional」</font>、ロケーションは<font color="blue">「jp-tok」</font>を指定しましたので、東京・埼玉・神奈川の3拠点データセンターに分散保管されます。
ちなみに、回復力を「Cross Region」にすると、日本・韓国・香港の国をまたがって分散保管されますので、BCP・DR対策には非常に良いです。
基幹システムは対策しているところが多くなってきましたが、部門でExcelマクロを組んでの業務システムが災害時使えなくて困ったという話を聞いたことがあります。そういった意味でもICOSに保管してれば、安心です。

> <font color="green">バケット名は下記ネーミングルールがありますので、ご注意ください。
> 　　・IBM Cloud Object Storage システム 全体 で固有である必要あり。
> 　　・個人情報 (名前、住所、金融またはセキュリティーの口座、SSN の一部) を使用しない。
> 　　・先頭文字と最終文字は英数字にする必要がある (3 から 63 文字)。
> 　　・小文字、数字、連続していないドットとハイフンが使用可能。</font>

![10.png](http://seahorse-inc.com/QIITA/QNAP-1/10.png)
「バケット」をクリック⇒「バケットの作成」をクリック。

![11.png](http://seahorse-inc.com/QIITA/QNAP-1/11.png)
「カスタム・バケット」をクリック。

ここでは「拡張機能」、「鍵管理サービス」「その他のサービス」は指定しませんでした。
画面の下の方に「バケットの作成」がありますので、ここをクリックしてバケット作成開始です。
![12.png](http://seahorse-inc.com/QIITA/QNAP-1/12.png)
「バケットの作成」をクリック。

![13.png](http://seahorse-inc.com/QIITA/QNAP-1/13.png)
以上で、バケットの作成完了です。



### ４－１－３．サービス資格情報の作成
”access_key_id” と ”secret_access_key”を作成します。
![05.png](http://seahorse-inc.com/QIITA/QNAP-1/05.png)
「サービス資格情報」をクリック。

![06.png](http://seahorse-inc.com/QIITA/QNAP-1/06.png)
「新規資格情報」をクリック。

![07.png](http://seahorse-inc.com/QIITA/QNAP-1/07.png)
「詳細オプション」をクリック。

![08.png](http://seahorse-inc.com/QIITA/QNAP-1/08.png)
”HMAC資格情報を含める”を「オン」⇒「追加」をクリック。

![09.png](http://seahorse-inc.com/QIITA/QNAP-1/09.png)
下矢印をクリックすると、今作成した”access_key_id” と ”secret_access_key”が表示されます。
ここでは、
"access_key_id": "617828745884462eaf830010085d2725",
"secret_access_key": "bdbb8f750da612b2c37eea79d2bac5b56e75fe7f17acbf15"
でした。
後ほどQNAP側の設定で使用します。
<font color="red">※堂々と"access_key_id"、"secret_access_key"の値を書いてますが、QIITA投稿後にサービスインスタンスを削除しますので、ご心配なく。</font>


### ４－１－４．エンドポイントの確認
![14.png](http://seahorse-inc.com/QIITA/QNAP-1/14.png)
「エンドポイント」をクリック⇒”回復力”：「Regional」、"ロケーション”：「jp-tok」を選択。
パブリック jp-tokのエンドポイントは、s3.jp-tok.cloud-object-storage.appdomain.cloud です。

### ４－１－５．ICOS側設定値のまとめ
これで、ICOS側の設定はすべて完了。
QNAP側で設定する値は下記の通りです。
![15.png](http://seahorse-inc.com/QIITA/QNAP-1/15.png)

## ４－２．QNAP側
使用したQNAP NASはTS231-P。
デュアルコア1.7GHz CPU 1GBメモリ 2ベイ に別売のNAS用HDD１GBをRAID1での構成です。
簡易ファイルサーバですので、とりあえずこれで良いかなと思います。また、容量が足りなくなったら大容量のHDDに交換し、ファイルはICOSから自動でキャッシュに保存する予定ですので容量拡張も楽になるはずです。
![16.png](http://seahorse-inc.com/QIITA/QNAP-1/16.png)

### ４－２－１．ファイルクラウドゲートウェイの設定
トップ画面の「HybridMount」ソリューションで設定を始めます。
![18.png](http://seahorse-inc.com/QIITA/QNAP-1/18.png)
「HybridMount」をクリック。

![19.png](http://seahorse-inc.com/QIITA/QNAP-1/19.png)
「リモートマウントの作成」をクリック。

![20.png](http://seahorse-inc.com/QIITA/QNAP-1/20.png)
「ファイルクラウドゲートウェイの作成」をクリック。

ICOSへの接続設定は2つのパターンがあります。
　　１．パターン1つ目はクラウドサービス選択で、「IBM Cloud」を選択する方法。
　　２．パターン2つ目はクラウドサービス選択で、「S3 Compatible」を選択する方法。
違いは、
　　１．「IBM Cloud」は "サーバーアドレス（エンドポイント）” を指定せず、"ファイルクラウドゲートウェイ"で用意されたサーバーアドレスで設定する。
　　２．「S3 Compatible」は "サーバーアドレス（エンドポイント）” を明示的に指定する。
です。
残念ながら、「IBM Cloud」のパターンではどの”サーバーアドレス”が設定されているかわかりませんが、設定が単純ですので、ここではこのパターンで設定します。

> <font color="green">参考までに、両パターンの画面を下記に示します。</font>
> ![21.png](http://seahorse-inc.com/QIITA/QNAP-1/21.png)

下記項目を設定した後、次のステップで”バケット名”を検索設定行います。
![22.png](http://seahorse-inc.com/QIITA/QNAP-1/22.png)
”クラウドサービス”：「IBM Cloud」
"アクセスキー"：「QNAPの設定で取得したaccess_key_id」
”秘密キー”：「QNAPの設定で取得したsecret_access_key」
”システムプロキシ設定を使用”：チェックを外す
その他はデフォルト値を使用しました。設定項目は、SSLでセキュアなファイル転送、競合文書の場合のハンドリング、ファイルリストの更新間隔です。
特に競合文書の機能では、同時に2人以上が同一ファイル名で新規保存した場合には便利です。ただ、既存ファイルを2人目が開こうとするとRead onlyになり、誰が書き込みで開いているかわかりますので特に問題ないかと思います。

登録されている、バケットを検索し設定します。
![23](http://seahorse-inc.com/QIITA/QNAP-1/23.png)
「検索」をクリック⇒”バケット名”を選択⇒「次へ」をクリック。

次にキャッシュの設定を行います。ボリュームサイズより、最適と思われる値を自動計算してくれますので、ここではすべてデフォルト値を使用しました。（独自の調整もできます。）
注意点としては、読み込み・書き込みキャッシュそれぞれキャッシュ領域の25％以上が必要です。
ここでは最大読み取りキャッシュの容量を４０GBとしましたので、1ファイル４０GB以上のファイルは書き込めません。ファイル分割するか、キャッシュ容量を増やす必要があります。
通常のドキュメントだと、そんなに大きなファイルは無いと思います。

> <font color="green">参考まで。QNAP ファイルクラウドゲートウェイのヘルプより</font>
> ![25](http://seahorse-inc.com/QIITA/QNAP-1/25.png)

![24](http://seahorse-inc.com/QIITA/QNAP-1/24.png)
「作成」をクリック。
”ファイルクラウドゲートウェイウィザード完了”の画面が表示されれば、「閉じる」をクリックして、すべての設定が完了です。

## ４－３．接続確認
簡易ファイルサーバが出来上がりましたので、接続確認をします。
### ４－３－１．QNAP File Station で確認
File Stationにドキュメント（テスト用ドキュメント.pptx）をドラック＆ドロップで保存。
ドキュメントが保存されています。
![26](http://seahorse-inc.com/QIITA/QNAP-1/26.png)
ちなみに、右側のCashe Statusのアイコンは、”キャッシュおよび同期”の状態で、ドキュメントはキャッシュされ、かつICOSに保存されたという意味です。
> <font color="green">参考まで。QNAP ファイルクラウドゲートウェイのヘルプより</font>
> ![27](http://seahorse-inc.com/QIITA/QNAP-1/27.png)

### ４－３－２．ICOS で確認
ICOS側でもドキュメントが保存されています。
![28](http://seahorse-inc.com/QIITA/QNAP-1/28.png)

### ４－３－３．クライアントPC で確認
クライアントPCからドキュメントにアクセスできます。
![29](http://seahorse-inc.com/QIITA/QNAP-1/29.png)

# ５．ドキュメント共有の確認
administratorsグループに所属するadminさんとGroupAに所属するUserAさんがドキュメント共有して作業した場合、どんな結果になるかを調べます。
![30](http://seahorse-inc.com/QIITA/QNAP-1/30.png)
尚、IBM Cloud(mm-bucket2020043001)フォルダーは、Adminさん、UserAさんともに、書き込みできる設定にしました。
![31](http://seahorse-inc.com/QIITA/QNAP-1/31.png)
QNAPの「コントロールパネル」⇒「共有フォルダー」⇒編集ボタン

## ５－１．Adminさん一人で、QNAP NASのキャッシュデータにアクセスした場合と、ICOS直接アクセスした場合
パワーポイントのファイルで試したところ、ローカルNASなので当然ICOS直接アクセスよりも読み込み・書き込み速度は速く、ICOSにファイルが保存されている実感がないくらいスムーズです。
ICOS直接だと、回線速度の関係でダウンロード・アップロードに時間がかかり、ドキュメントの開閉に少々ストレスがかかります。

## ５－２．最初にAdminさんがドキュメントを開き、その後UserAさんが開いた場合
UserAさんがドキュメントを開こうとすると、XXXXXさんが編集中で読み取り専用で開くか？とメッセージが表示され、ドキュメントの排他制御ができている。

## ５－３．Adminさん、UserAさんが新規作成で同じファイル名で保存しようとした場合
先に書き込み操作を実行した方が書き込める。タイミングが後になった方が読みより専用となり、同一ファイル名では書き込めない。
ただし、先に書き込んだ方がプログラムを閉じると、後の方は書き込めるが「同じファイル名があるが上書きするか」といったメッセージが表示される。

## ５－４．Adminさん、UserAさんが、メモ帳を使用して同じファイル名で保存しようとした場合
両者とも保存可能。ドキュメント共有する場合、排他制御機能のあるツールを使用すべき。

# ６．セキュリティ対策
## ６－１．ファイルクラウドゲートウェイ
・データをSSLで暗号化。
![32](http://seahorse-inc.com/QIITA/QNAP-1/32.png)

## ６－２．QNAP本体
・QNAPの無償ソリューション「Malware Remover」、「Security Counselor」を設定。
・SSH、Telnetの停止。８０、４４３ポートの変更。
・ログインID・パスワードの管理を徹底。
・アクセス権の設定。
・リモートからの接続用にVPN経由設定。

## ６－３．その他
・ファイアーウォール、UTMの設置。
・ICOSのファイアーウォール機能の設定。

# ７．ICOSの機能
今回使用しませんでしたが、ICOSにはライフサイクル管理として、
・一定期間経過するとアーカイブにデータを移動する
・一定期間経過するとデータを削除する
・指定した期間はデータを削除できなくする。
があります。QNAPの機能と組み合わせると面白いシステムができそうです。

# ８．おわりに
QNAPとIBM Cloud Object Storage(ICOS）で簡単にファイルサーバを構築は以上です。
はじめにで述べた、ファイルサーバの要件（希望）はAD連携以外はほぼ満たしました。
まずはスモールスタートで、慣れてきたら機能強化、機能拡張を図る予定です。
今回、QNAPに触れたのは初めてで、ソリューションが豊富でしかも無償というのは驚きです。
色々試したいと思います。