Go to main content
Oracle® Solaris 11.3 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

ZFS クローンの概要

クローン」とは、書き込み可能なボリュームまたはファイルシステムのことで、最初の内容は作成元のデータセットと同じです。スナップショットの場合と同様に、クローンは瞬間的に作成され、最初は追加のディスク領域を消費しません。また、クローンのスナップショットを作成することもできます。

クローンは、スナップショットからしか作成できません。スナップショットが複製されるときに、クローンとスナップショットの間に暗黙の依存関係が作成されます。クローンはファイルシステム階層内の別の場所に作成されますが、クローンが存在する間は元のスナップショットを破棄することはできません。この依存関係は、origin プロパティーからわかります。そのような依存関係が存在する場合には、zfs destroy コマンドを実行すると表示されます。

クローンでは、作成元のデータセットのプロパティーが継承されません。zfs get および zfs set コマンドを使用して、複製したデータセットのプロパティーを表示して変更することができます。詳細については、ZFS プロパティーを設定するを参照してください。

クローンのすべてのディスク領域は最初は元のスナップショットと共有されるため、used プロパティーの初期値はゼロになります。クローンに変更が加えられるにつれて、使用されるディスク領域が多くなります。元のスナップショットの used プロパティーには、クローンが消費するディスク領域は含まれません。

ZFS クローンを作成する

クローンを作成するには、zfs clone コマンドを使用します。クローンの作成元となるスナップショット、および新しいファイルシステムまたはボリュームの名前を指定すると、ZFS 階層内の任意の場所に配置できます。新しいデータセットは、クローンの作成元になったスナップショットと同じ種類 (ファイルシステムやボリュームなど) です。クローンを作成するためのファイルシステムは、基にするファイルシステムスナップショットがあるプールに存在している必要があります。

次の例では、初期の内容がスナップショット system1/ws/gate@yesterday と同じ system1/home/matt/bug123 という名前の新しいクローンを作成します。

# zfs snapshot system1/ws/gate@yesterday
# zfs clone system1/ws/gate@yesterday system1/home/matt/bug123

次の例では、スナップショット projects/newproject@today からクローンが作成されたワークスペースを一時ユーザー用に projects/teamA/tempuser として作成します。次に、クローンが作成されたワークスペース上にプロパティーが設定されます。

# zfs snapshot projects/newproject@today
# zfs clone projects/newproject@today projects/teamA/tempuser
# zfs set share.nfs=on projects/teamA/tempuser
# zfs set quota=5G projects/teamA/tempuser

ZFS クローンを破棄する

ZFS クローンを破棄するには、zfs destroy コマンドを使用します。例:

# zfs destroy system1/home/matt/bug123

親のスナップショットを破棄する前に、クローンを破棄する必要があります。

ZFS ファイルシステムを ZFS クローンで置き換える

アクティブな ZFS ファイルシステムをそのファイルシステムのクローンで置き換えるには、zfs promote コマンドを使用します。この機能を使ってファイルシステムの複製と置換を実行でき、「作成元」のファイルシステムが、指定されたファイルシステムのクローンになります。さらに、クローンの作成元であるファイルシステムを破棄することもできます。クローンの移行促進を行わない限り、アクティブクローンの元のファイルシステムを破棄することはできません。詳細については、ZFS クローンを破棄するを参照してください。

次の例では、system1/test/productA ファイルシステムのクローンが作成されたあとに、クローンファイルシステム system1/test/productAbeta が元の system1/test/productA ファイルシステムになります。

# zfs create system1/test
# zfs create system1/test/productA
# zfs snapshot system1/test/productA@today
# zfs clone system1/test/productA@today system1/test/productAbeta
# zfs list -r system1/test
NAME                          USED  AVAIL  REFER  MOUNTPOINT
system1/test                  104M  66.2G    23K  /system1/test
system1/test/productA         104M  66.2G   104M  /system1/test/productA
system1/test/productA@today      0      -   104M  -
system1/test/productAbeta        0  66.2G   104M  /system1/test/productAbeta
# zfs promote system1/test/productAbeta
# zfs list -r system1/test
NAME                              USED  AVAIL  REFER  MOUNTPOINT
system1/test                      104M  66.2G    24K  /system1/test
system1/test/productA                0  66.2G   104M  /system1/test/productA
system1/test/productAbeta         104M  66.2G   104M  /system1/test/productAbeta
system1/test/productAbeta@today      0      -   104M  -

この zfs list の出力では、元の productA ファイルシステムのディスク領域計上情報が、productAbeta ファイルシステムのものに置き換わっています。

ファイルシステムの名前を変更することで、クローンの置換処理を完了することができます。例:

# zfs rename system1/test/productA system1/test/productAlegacy
# zfs rename system1/test/productAbeta system1/test/productA
# zfs list -r system1/test

また、旧バージョンのファイルシステムを削除することもできます。例:

# zfs destroy system1/test/productAlegacy