はじめに
はじめまして。ユニアデックス株式会社でストレージ関連のエンジニアをしています、内田です。
今回はNetApp FAS/AFFの基本ライセンスで活用可能な機能であり、マルチテナントを実現する機能の一つであるSVMと、volumeの基本的な部分について取り上げたいと思います。
SVM
NetApp(ONTAP)になじみがない方であれば、聞いたこともない単語かもしれませんが、これが[Storage Virtual Machine]の頭文字だとわかれば難しくはありません。NetApp内部に作られるVM(仮想マシン)です。
※もちろん一般的な意味でのVMではないので、この中でWindowsやLinuxのような一般的なOSが動作するわけではありません。その意味ではコンテナ(OS上で動作するプロセスという意味で)に近いものです。(ただし後述するように一般的なコンテナの挙動とも少し違います)
なお、かつてSVMはVserverと呼ばれていたこともあり、コマンド操作などでは"svm"よりも"vserver"が使われます。
何が嬉しいのか?
NetAppで多い使われ方はやはりファイルサーバです。
各部署で管理していた家庭用・SOHO用のNASを情報システム部門が集約・統合して管理する、というお話は20年以上前からよくあるものですが、この時に1台のファイルサーバに整理・集約するための時間をかけられるケースは、実際のところ、あまり多くありません。
各ファイルサーバ/NASのIPアドレス・ホスト名・その中に設定されているアクセス権やローカルユーザも全部まるっと引き継いで集約してほしい、なんてことも珍しくありませんが、これがSVMを使うことで可能になります。
SVMは個別のIPアドレス(LIF)を持つことができ、それぞれが独自にファイルサービスとしての設定を持ちます。
このため、SVM#1はドメインA所属、SVM#2はドメインB所属、SVM#3はWORKGROUP環境、などということが可能になります。
環境の確認(やってみる、その1)
前提の確認
ファイルサーバが1つ設定されているNetApp環境をイメージしてみましょう。
※今回はNetApp社が提供するデモ環境であるLab on Demandを使用します。
また管理用の設定など一部の結果表示は省略しています。
cluster1::> vserver show
Admin Operational Root
Vserver Type Subtype State State Volume Aggregate
----------- ------- ---------- ---------- ----------- ---------- ----------
(略)
svm1_cluster1
data default running running svm1_ aggr1
cluster1_
root
n entries were displayed.
cluster1::>
cluster1::> volume show -vserver svm1_cluster1
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm1_cluster1
svm1_cluster1_root
aggr1 online RW 20MB 17.71MB 6%
svm1_cluster1
volmulti aggr1 online RW 10GB 9.50GB 0%
2 entries were displayed.
cluster1::>
cluster1::> vserver cifs show
Server Status Domain/Workgroup Authentication
Vserver Name Admin Name Style
----------- --------------- --------- ---------------- --------------
svm1_cluster1
CIFS1 up DEMO domain
cluster1::>
cluster1::> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm1_cluster1 volmulti /volmulti oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
n entries were displayed.
cluster1::>
ここまで超簡単解説・その1:
[svm1_cluster1]という名前のSVM(vserver)が作成されており、このSVMには[volmulti]という名前のvolume(10GB)があります。
[svm1_cluster1]は[CIFS1]の名前で[DEMO]ドメイン(AD)に参加しており、[volmulti]volumeに[volmulti]の名前でCIFS共有(Everyone/Full Controll)が作成されています。
Windows Serverでのファイルサーバ設定に慣れている方の場合、SVM名とCIFSサーバ名が別になっていることに違和感を覚えるかもしれません(Windowsの場合、両方ともOSのコンピュータ名(≒ホスト名)になります)。
ONTAPでは上記の「ホスト名」としては「CIFSサーバ名」が使用されます(ADで使用するDNSサーバのAレコードに登録される値もCIFSサーバ名になります)。
なお、CIFSサーバ名はsvm名と同じ値にすることも可能です。
ボリュームのクローンとマウント
こうした環境を作成・利用する中で、既存環境に新しいシステムを連携させるなど、テスト環境が必要になることは珍しくありません。
もちろん、常時二重化するなどの方法でテスト環境を常に用意することも可能ですが、それはファイルサーバの性能と容量を消費するため、「その場限りの」「ただし、まっさらな環境ではなく本番と同じデータを持った」テスト環境を用意したいというニーズは結構あるものです。
NetAppではデータをコピーすることなくテスト目的に使える機能として「クローン(FlexClone)」というものがあります。
今回はこの機能を使って既存のボリュームのコピーを作成してみましょう。
クローンの作成とマウント(やってみる、その2)
cluster1::> volume clone create -flexclone vol_test -parent-volume volmulti
[Job 141] Job succeeded: Successful
cluster1::>
cluster1::> volume show
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm1_cluster1
vol_test aggr1 online RW 10GB 9.50GB 0%
svm1_cluster1
volmulti aggr1 online RW 10GB 9.50GB 0%
n entries were displayed.
cluster1::>
cluster1::> volume mount -volume vol_test -junction-path /vol_test
cluster1::>
cluster1::> cifs share create -vserver svm1_cluster1 -share-name vol_test -path /vol_test
cluster1::> cifs share show
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm1_cluster1 vol_test /vol_test oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm1_cluster1 volmulti /volmulti oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
n entries were displayed.
cluster1::>
ここまで超簡単解説・その2:
既存のボリューム[volmulti]を基にしてクローンボリューム[vol_test]を作成します。
volume一覧を表示します。ここで[vol_test]は元ボリュームと同じサイズ(10GB)に見えていますが、この時点ではvol_testの実際のデータ量はメタデータのみ(数MB)です。
作成した[vol_test]をマウントします。
CIFSファイル共有[vol_test]を作成します。
作成したCIFS共有を確認します。
ここまで設定すると、元のボリューム・共有(\CIFS1\volmulti)と同じ内容を持った新しい共有(\CIFS1\vol_test)がWindowsクライアントから確認できるようになります。(下図)
作成したクローンボリュームは通常のボリュームと同様に、volume showに表示され、volume deleteで削除することができます。クローンであることを確認するにはvolume clone showコマンドなどで可能ですが、一見してクローンであることがわかる名前にしておくと、運用上で混乱を招かないでしょう。
※考えにくいことですが、元ボリュームを削除した場合、元ボリュームからクローンされたボリュームも同時に削除されます。(実際には操作中にエラーメッセージが表示され、一般の管理者では(クローン先ボリュームをすべて削除しない限り)クローン元ボリュームを削除できないようになっています)
また、クローンはテストなどに使い終わったら基本的に削除することが想定されますが、元ボリュームからデータをコピーし、永続的に分離(split)することも可能です。
なお、クローン先ボリュームを作成するときに、(指定しなければ)自動的に元ボリュームにsnapshotが作成されます。クローン先ボリュームを削除する時には、この元ボリュームのsnapshotの削除も同時に行うようにしましょう
(クローンボリュームの削除と連携してsnapshotが削除されることはありません)。
まとめ
今回はSVMとvolumeの基本的な考え方についてご説明しました。
意外と簡単にできることがお判りいただけたのではないかと思います。
数十TB~の容量を持つファイルサーバと全く同じデータを利用するテスト環境を(慣れれば)数分で作成できる、というのは使いこなせれば便利な場面も多いかと思います。
なお、今回はクローンしたボリュームを同じSVMに接続しましたが、別のSVM(≒ファイルサーバ)に接続することも可能です。
今後の参考になれば幸いです。
We Are Hiring!