はじめに
ONTAPでは、仮想ストレージ(SVM)を作成後に、各SVMにVolumeを作成し、プロトコルの設定を行う事でデータにアクセスができるようになります。また、このSVMに対して管理ユーザを作成し権限の委譲をすることで指定した操作を許可することができます。
但し、従来のONTAPでは作成したSVM内における操作においてVolumeやClone作成の権限を許可すると、SVMに割り当てているAggregateのサイズを全て使う事ができてしまうという問題がありました。
(制限する為には、小サイズのAggregate作成し、SVMのaggr-listに設定)
ONTAP 9.13.1以降では、この問題に対処する為の 「SVM Capacity Limits」という機能が実装されており、この機能を使用することで、各SVMで利用できる容量を制限することができます。
何をしたい?できる?
- SVM capacity limitsの挙動を確認してみる
- CloneやLUN作成時の挙動を確認してみる
- 重複排除時の論理容量は関係しない事の確認
SVM Capacity Limitsについて
SVMへの容量制限の割り当ては以下のような計算方法が適用されます。
- SVM上の容量制限は、FlexVol、FlexGroup 、FlexClone、FlexCache の合計値
- 削除後にVolumeが制限状態、オフライン状態、リカバリキュー内にある場合でも、容量計算に影響
- Volume自動拡張が設定されている場合は、拡張の最大値が計算に影響
- 自動拡張を設定しない場合は、Volumeのサイズのみの計算
記事における環境情報
本記事では、以下の環境で実施した内容となります。
- ONTAP9.13.1
実施手順
1. SVM capacity limitsの設定
手順例では既存SVMに対しての設定を例にして記載します。
容量制限は1GBで設定します。
# 容量制限の設定値の確認
> vserver show -vserver svm100 -fields storage-limit
vserver storage-limit
------- -------------
svm100 -
# 容量制限を1GBで設定
> vserver modify -vserver svm100 -storage-limit 1g
# 設定値の確認
> vserver show -vserver svm100 -fields storage-limit
vserver storage-limit
------- -------------
svm100 1GB
2. ユーザ用の1GB Volume作成
SVM内のVolumeサイズの合計が計算対象の為、シンプロ構成でも1GBのVolume作成が失敗することを確認します。
以下の例ではSVMのroot Volumeのサイズを加味してないので、失敗が確認できます。
> vol create -vserver svm100 -volume vol100 -state online -size 1g -space-guarantee none -junction-path /vol100 -security-style ntfs -aggregate cluster1_01_SSD_1
Error: command failed: Request to perform volume operation failed because there is insufficient storage available in
the Vserver "svm100". To increase the available storage in the Vserver, you can, for example, delete volumes,
Snapshot copies, or files. Other options include raising the storage limit.
この環境ではSVMのroot volumeが20MBなので、900MBのVolumeサイズでは成功する事を確認します。
(容量制限の合計値1GBを超えない形)
> vol create -vserver svm100 -volume vol100 -state online -size 900m -space-guarantee none -junction-path /vol100 -security-style ntfs -aggregate cluster1_01_SSD_1
[Job 91] Job succeeded: Successful
> vol show -vserver svm100
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm100 svm100_root cluster1_01_SSD_1
online RW 20MB 17.83MB 6%
svm100 vol100 cluster1_01_SSD_1
online RW 900MB 854.6MB 0%
2 entries were displayed.
次に、ユーザへの払い出しをTB単位で実施するような環境を例にします。
SVMのroot Volumeのサイズが1GBの環境の場合、storage-limitをGB指定でroot Volume分の1GB分だけ増やす事で、ユーザ用VolumeをTB単位で作成やサイズ変更ができるようになります。
(1TB=1024GBなので、1GB分だけ加算するとユーザが1TBのVolumeを作成できる)
# 容量制限を1025GB(1024GB + 1GB)に変更
> vserver modify -vserver svm100 -storage-limit 1025g
> vol size -vserver svm100 -volume vol100 -new-size 1T
vol size: Volume "svm100:vol100" size set to 1t.
> vol show -vserver svm100
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm100 svm100_root cluster1_01_SSD_1
online RW 1GB 971.1MB 0%
svm100 vol100 cluster1_01_SSD_1
online RW 1TB 280.2GB 0%
2 entries were displayed.
3. 容量制限を超えなければ、Volumeを複数作成できる事を確認
# 容量制限を3GBに変更
> vserver modify -vserver svm100 -storage-limit 3g
# 新規の別Volume作成
> vol create -vserver svm100 -volume vol200 -state online -size 1g -aggregate cluster1_01_SSD_1 -junction-path /vol200
[Job 98] Job succeeded: Successful
> vol show -vserver svm100
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm100 svm100_root cluster1_01_SSD_1
online RW 1GB 972.4MB 0%
svm100 vol100 cluster1_01_SSD_1
online RW 1GB 972.4MB 0%
svm100 vol200 cluster1_01_SSD_1
online RW 1GB 972.5MB 0%
3 entries were displayed.
4. Clone Volumeも計算対象になる事の確認
上記のvol200を削除後に、cloneも計算対象になる事を確認します。
# 容量制限を10GBに変更
> vserver show -vserver svm100 -fields storage-limit
vserver storage-limit
------- -------------
svm100 10GB
# Volumeサイズを9GBに変更
> vol size -vserver svm100 -volume vol100 -new-size 9g
vol size: Volume "svm100:vol100" size set to 9g.
# 容量制限に達しているのでClone作成失敗
> vol clone create -vserver svm100 -flexclone clone01 -type RW -parent-vserver svm100 -parent-volume vol100
Error: command failed: Request to perform volume operation failed because there is insufficient storage available in
the Vserver "svm100". To increase the available storage in the Vserver, you can, for example, delete volumes,
Snapshot copies, or files. Other options include raising the storage limit.
#ユーザ用Volumeのサイズを縮小してからClone作成
> vol size -vserver svm100 -volume vol100 -new-size 4g
vol size: Volume "svm100:vol100" size set to 4g.
> vol clone create -vserver svm100 -flexclone clone01 -type RW -parent-vserver svm100 -parent-volume vol100
[Job 93] Job succeeded: Successful
# 合計値がCloneを含め容量制限の10GB以内である事の確認
> vol show -vserver svm100
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm100 clone01 cluster1_01_SSD_1
online RW 4GB 3.80GB 0%
svm100 svm100_root cluster1_01_SSD_1
online RW 1GB 972.4MB 0%
svm100 vol100 cluster1_01_SSD_1
online RW 4GB 3.80GB 0%
3 entries were displayed.
5. LUNのシンプロ構成であれば作成に影響が無い事の確認
LimitがはVolume内に作成されるファイルサイズ(LUN)には影響しない事の確認を実施します。
設定例として5GBのVolumeに10GBのシンプロ設定されたLUNを作成します。
# 容量制限は10GB設定
> vserver modify -vserver svm100 -storage-limit 10g
# Volumeを5GBにサイズ変更
> vol size -vserver svm100 -volume vol100 -new-size 5g
vol size: Volume "svm100:vol100" size set to 5g.
# 10GBのLUNをシンプロ設定で作成
> lun create -vserver svm100 -path /vol/vol100/lun01 -size 10g -ostype windows_gpt -space-reserve disabled
Created a LUN of size 10g (10737418240)
# LUN作成の確認
> lun show
Vserver Path State Mapped Type Size
--------- ------------------------------- ------- -------- -------- --------
svm100 /vol/vol100/lun01 online unmapped windows_gpt 10GB
# Volumeの状態を確認
> vol show -vserver svm100
Vserver Volume Aggregate State Type Size Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
svm100 svm100_root cluster1_01_SSD_1
online RW 1GB 971.1MB 0%
svm100 vol100 cluster1_01_SSD_1
online RW 5GB 4.72GB 0%
2 entries were displayed.
重複排除が有効な利用環境について(SVM Capacity Limitsとは別要素)
LUNで確認したときのように、SVM Capacity Limitsは、Volumeの器のサイズのみ計算に組み入れられるので、以下のような事を実現したい場合には、別の考慮が必要となります。
具体的には、以下の図の右側ように、同一Volumeに同じファイルをコピーした際に、ONTAP上では重複排除しても、アクセスするユーザには重複排除効果を見せなくない場合にどうするかといった内容です。
こちらは、Volumeへis-space-reporting-logicalと、is-space-enforcement-logicalを有効にすることで実現できます。
SVM自体への同様の設定が可能となりますが、この場合はSVM設定後に新規作成されるVolumeに対して有効になります。(SVMに作成されるVolumeへのDefault値になる)
> vol modify -vserver svm100 -volume vol100 -is-space-enforcement-logical true -is-space-reporting-logical true
Volume modify successful on volume vol100 of Vserver svm100.
volumeのmodifyの実行をSVM管理者に許容すると、Volumeへis-space-reporting-logicalと、is-space-enforcement-logicalを無効にされてしまうので、特定の操作のみ許可するRoleの作成を実施します。
以下の例では、特定のvolume操作しか実施できない管理ユーザを作成した例です。
(本来であれば、共有やexports設定もできるようにする形になるかと)
- volumeのcreateとmodifyは連動している為、readonlyにして設定できないようにする
- Clone作成や削除、用意されたVolumeのサイズ変更は許可
> security login role show -vserver svm100 -role voladmin
Role Command/ Access
Vserver Name Directory Query Level
---------- ------------- --------- ----------------------------------- --------
svm100 voladmin DEFAULT none
volume readonly
volume clone all
volume clone create all
volume clone show all
volume create readonly
volume delete all
volume modify readonly
volume offline all
volume show readonly
volume size all
volume snapshot all
12 entries were displayed.
> security login show -vserver svm100 -user-or-group-name voladmin
Vserver: svm100
Second
User/Group Authentication Acct Authentication
Name Application Method Role Name Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
voladmin http password voladmin no none
voladmin ontapi password voladmin no none
voladmin ssh password voladmin no none
3 entries were displayed.
論理的な設定だけでは実施したいことが実現できない場合は、FabricPool/Cloud Tieringの利用でユーザVolumeからは分からないように、Aggregateデータの階層化を実施であったり、AFF Cシリーズを利用してそもそものSSD単価を下げるといった事が考えられます。