Top > 開発者資料 > データセット、ディレクトリパス、URLの構造について

データセット、ディレクトリパス、URLの構造について

ZFSのデータセットとは

TeraCLOUDのファイルシステムとして利用しているZFSのデータセットは、ディレクトリのような入れ子構造をもつ。

dataset.jpg

データセット毎に異なるプロパティを持つことができるため、容量などの値の取得、スナップショットの作成、参照、また将来においてロールバック、差分、クォータ、圧縮管理、暗号化など、様々な機能のコントロール単位となる。

また、プロパティは親子での継承がおきるため、基本、設定は親の者を継承するし、利用容量などは下位を含んだものを表す。

 

これらは、パスのような書式で管理されており、

DATASET名
/
/backup
/backup/data.ZsXw
/backup/data.WtPO
/files

次の様に、実際には次の様にディレクトリ・パスにマウントされている。

DATASET名MOUNTPOINT
/./
/backup./backup
/backup/data.ZsXw./backup/data.ZsXw
/backup/data.WtPO./backup/data.WtPO
/files./files

マウントポイントは、パスへの配置意味する。

上記のようなデータセット構造で、./backup/fooというディレクトリがあった場合、これはあくまでばbackupデータセットに設置された単なるfooというディレクトリであり、/backup/fooというデータセットがあるわけでは無い。データセットの作成はディレクトリの作成よりは高コストなので、ディレクトリ毎にデータセットを作るものではない。

ディレクトリではなく、データセットを作成する場合は、あくまでデータセットリソースを固有で管理したいとき、例えばスナップショットを固有で取りたい、それを参照したい、将来においては、ロールバックをしたい、差分を取りたいなど、何か管理区分を変えたいときに利用するものとなる。

また、上記に置いてデータセットとは、次のものの総称した名前である。

したがって、上記に置いてのデータセットとは、データセットのファイルシステムということとなる。

ファイルシステムとは

ZFSにおけるファイルシステムとは、ディレクトリ・パスにマウントできるデータセットのことを意味する。

 

スナップショットとは

スナップショットとは、データセット-ファイルシステムのイメージを、ある時点で「そのまま」固めて持つことができる機能である。これは「ほとんど一瞬」で取得することができる。スナップショット作成後にデータを書いても、ファイルシステムには差分しかデータは記録されずにすむ。そのため、極めてコストの低い方法で現状の状態を保持できるものとなる。

スナップショットはデータセットのファイルシステムに対して取得ができる。データセット単位毎に行う必要があるが、リカーシブの設定をすれば、下位のデータセット-ファイルシステムまで含め、同時刻で取得することも可能だ。なお、スナップショットのスナップショットは取得することができない。

参照は、それぞれのデータセットの直下にある/.zfs/snapshot以下に、スナップショット名が着いた参照専用ディレクトリがある。スナップショットは、そのデータセット自身にあるファイルだけが参照できるので、上記の例では/filesのスナップショットのファイルは/files/.zfs/snapshot以下にだけある。仮に/files/fooというデータセットを作った場合は、./foo以下ディレクトリに置いたファイルのスナップショットは、/files/foo/.zfs/snapshot以下に設置され、/files/.zfs/snapshot/<スナップショット名>/foo以下には存在しない。

スナップショットはあくまでその時点の状態を保持するものであり、バックアップではない。しかし、ロジカルな操作ミスからの復元にはとても役に立つ。

TeraCLOUDにおいてはスナップショットはユーザ毎に100個までしか取得することはできない。

またスナップショットの作成はほとんど一瞬で作成できるものの、削除、特に占有しているデータ領域の開放には時間がかかる。

ロールバックとは

ファイルシステムを、スナップショットの時点に巻き戻す機能である。スナップショット以後に書かれたものを全て捨て、ファイルシステムを元の状態に戻す機能である。

ロールバックをした場合、経過のスナップショットは全て失われるため、ロールバックの取り消しをすることは原理的にできない。

現在のTeraCLOUDは未サポートであり、将来サポートされる予定となっている。

クローンとは

クローンはスナップショットを元に、新しいファイルシステムを作る機能である。

スナップショット以後からの差分しかデータを保持しないため、同じようなデータの入ったものであれば、容量の圧迫を防ぐことができる。

現在のTeraCLOUDは未サポートであり、将来サポートされる予定となっている。

ファイルシステムレベルの暗号化とは

ファイルシステムの単位でAES等の暗号化をする機能である。

このファイルシステムは、マウント時にパスワードか、キーを必要とする。パスワードやキーを失った場合、データは暗号化されているため、当然復元はできなくなる。

現在のTeraCLOUDは未サポートであり、将来サポートされる予定となっている。

TeraCLOUDにおけるデータセット構造について

TeraCLOUDのユーザは、アカウント作成時に一つのユーザ用データセット-ファイルシステムを持ち、ディレクトリにマウントされている。そしてその下に更にデータセット-ファイルシステムを持っている。

このデータセット-ファイルシステムは、同名のマウントポイントにマウントされ、ユーザのデータが保存されている。

このうち、URL経由でアクセスできるデータセットは、マウントパスとマッピングされたものだけで、これはHTTPS(WebDAV)プロトコルを用いてアクセスする。ブラウザ経由で一般ユーザが自由にアクセス可能なのは、/dav/のみであり、/backup以下はアプリケーションが固有に使うことができる領域となる。

DATASET名MOUNTPOINTURL
//なし
/backup/backup/backup
/backup/JUSTPLAYER/backup/JUSTPLAYER/backup/JUSTPLAYER
/backup/JUSTPLAYER/appname/backup/JUSTPLAYER/appname/backup/JUSTPLAYER/appname
/backup/data.ZsXw/backup/data.ZsXW/backup/data.ZsXW
/backup/data.WtPO/backup/data.WtPO/backup/data.WtPO
/files/files/dav/ ※browserから閲覧可
/someappdata/someappdataなし ※一般には作るべきではない
/someappdata2/someappdata2なし ※一般には作るべきではない

ユーザのルートデータセット以下は、すべてユーザの持ち物であり、ユーザの使用容量とはルートデータセットの下位(子孫)をすべて含んだ使用容量を意味する。

ただし、データセット名は本来、先頭に/をつけないため、ルートは便宜上のもので、API上ではヌルストリングとなる。

データセット長は、最大で64文字となっている。

また、ユーザのIDとパスワードで、データセットの全てが管理でき、REST APIで好きなところに32個まで、データセットを作ることができる。

TeraCLOUDにおいて、ファイルシステム型のデータセットは、必ずルートからのデータセット名と等しい場所にマウントされる。つまり、someappdataというデータセットを作ると、/someappataというパスにマウントされ、その下にsomeappdata/fooというデータセットを作ると、/someappdata/fooというパスにマウントされる。

しかしながら、たとえばfiles/fooというデータセットを作ろうとしたとき、すでにユーザがfooというディレクトリを作り、ファイルを設置している場合は、そのデータセットの作成はできない。

各データセットの役割

上記のようにTeraCLOUDデータセットは名前に意味を持つ。

 

DATASET名URL 役割
/なしユーザの領域のもっとも親となる。容量の合計計測はこちらから参照することとなるため、一部のユーザを除いて、この領域が直接使われる事は無い。
/files/dav/ユーザの一般領域。ブラウザや、一般的なウェブダブクライアントからアクセスすることができる。ただし、2015年4月以前に作られたユーザにこのデータセットはなく、直接ルートデータセットに配置されている。
files以下にデータセットを作成する事は構わないが、これ以下は一般的に、ユーザが自由にデータを保持している領域である為、ユーザが同名のディレクトリを作っていた場合、そのままでは作ることができないため、注意が必要。
/backup/<VendorID>/<AppName>/backup/<VendorID>/<AppName>アプリケーションが、ユーザが簡単に触ることができない特定の領域を用意する場合に利用する。用途は、バックアップデータ、アプリのデータ保存など。
ただし、ブラウザからは参照不可能なものの、ユーザがあえてそのパスを汎用のWebDAVクライアントに指定した場合には、その限りではない事に注意が必要。
下位に作成されたデータセット内を自由に使うことができるが、ベンダ名、アプリ名のルールに従う必要がある。また、最大64文字、英数字のみのため、ベンダ名、アプリ名はある種の簡易名称であることが推奨される。スペースなどは許されないことに注意。

例:/backup/JUSTPLAYER/tctest 等。
/backup/data.XXXX/backup/data.XXXXXXXXには自由な文字列が入る。XXXXが自由であるかどうかは、dataset apiのcreate時に(unique)をつけることで作成可能で、返値に作成できたURLが戻る。
ベンダ名、アプリ名を作りたくない場合は、このデータセット名を利用すること。
それ以外のDATASET名なし現時点に置いて、無作為な名前を作ることは推奨されない。今後、要望に応じて、これらの領域に特殊アクセスする仕組みが作られる可能性はある。

/dav/で、URLアクセスできるメカニズム

上記のように、データセット名とマウントポイントは一意の関係があるが、データセットと公開されたURLには一意の関係はない。

通常、ユーザがウェブインタフェイスや、WebDAVで見ることができるエリアは、「/dav/」というパスからアクセスすることができる。

URL層/dav/
URLパス変換ルール(固定)/dav/ → /dav/
ディレクトリパス層/dav/
マッパー
/dav/ → /files/
/files
マウントパスルール(固定)/files → files
データセット層files

パス:/dav/は、パス:/files/にマッピングされ、かつ、パス:/files/へデータセット:filesがマウントされている。しかし、2015年4月それ以前に作られたユーザには、filesデータセットはなく、ルートデータセットに/files/というディレクトリが作られている。

上記のマッパーは、今後公開される予定のmapperAPIで切り替えられるよう考慮されているが、この機能は副作用も多く、現在、検討中となっている。

 
アカウント作成(無料 10GB)

1分で簡単登録!今すぐスタート!
Works online, Windows, Mac, iOS and Android