テクニカルコラム かんたん♪ZFS
第七回:ZFS データの送受信(2010年5月12日発行)

  五月です。今年は四月に入っても寒い日が続きました。でも、ようやく暖
  かくなってきたようです。外を歩いていても、木々の新しい緑が目に鮮や
  かですね。

  このコラムでは、 よく使われているファイルシステムと ZFS の違いをケー
  ススタディをもとにご紹介していきます。

  今までのファイルシステムとは一味違う ZFS  を活用して面倒なファイル
  管理の苦労を減らしましょう!

 -------------------------------------------------------------------

   情報システム部へやってきた根久善太の勧めに従い、 Nexenta OS をイ
  ンストールしたAさん。いろいろと ZFS の機能を試しています。

  「次はデータの送信と受信をやってみましょう」

   根久は別のマシンにログインし、コンソールからコマンドを打ちました。

   # zfs list -t snapshot
   NAME                             USED  AVAIL  REFER  MOUNTPOINT
   syspool/rootfs-nmu-002@initial  14.7M      -   887M  -
   syspool/rootfs-nmu-002@nmu-001   344K      -   890M  -
   syspool/rootfs-nmu-002@nmu-002  3.89M      -   954M  -
   tank/data@snap000                 16K      -    19K  -
   tank/data@snap001                   0      -    20K  -


  「ZFS はスナップショットを送受信することができます。例えば、
   tank/data@snap000 を送信してみましょう」

   # zfs send tank/data@snap000 | dd of=/dev/null bs=1024k
   0+1 records in
   0+1 records out
   255296 bytes (255 kB) copied, 0.0199754 seconds, 12.8 MB/s

  「zfs send は、 スナップショットに含まれるメタデータとデータを標準
   出力へ出力します。このようにバイナリストリームとして送信できるの
   で、テープなどのメディアへ簡単にバックアップすることができます」

  「どうやってバックアップしたデータをリストアするんだい」

  「zfs send と対になる zfs recv というコマンドがあります」

   # zfs send tank/data@snap000 >/tmp/tank-data-snap000

   # zfs recv syspool/tank-data-snap000 < /tmp/tank-data-snap000

   # syspool/tank-data-snap000
   NAME                        USED  AVAIL  REFER  MOUNTPOINT
   syspool/tank-data-snap000    19K   271G    19K  legacy

  「なる程、これを使えばサテライトオフィスとデータを共有することがで
   きそうだね」

  「そうです。rsync と違い ZFS ACL  などのメタデータも完全にバックアッ
   プできるのが良いところなんですよ。 例えば SSH を使ってデータを遠隔
   地に送信することができます」

   根久は別の場所にある host1 にスナップショットを送信しました。

   # zfs send tank/data@snap001 | ssh host1 zfs recv tank/data

  「欠点は何だろう?」

  「少し遅いところでしょうか。 例えばこのマシンの syspool というスト
   レージプールは 7800 回転の SATA ディスク二台でミラー構成されてい
   ます」

   # zpool status syspool
     pool: syspool
    state: ONLINE
    scrub: none requested
   config:

           NAME        STATE     READ WRITE CKSUM
           syspool     ONLINE       0     0     0
             mirror    ONLINE       0     0     0
               c0t0s0  ONLINE       0     0     0
               c0t1s0  ONLINE       0     0     0

   errors: No known data errors

  「このプール上のスナップショットを送信してみましょう。スナップショッ
   トは 887 MB のデータを参照しています」

   # zfs send syspool/rootfs-nmu-002@initial | dd of=/dev/null bs=1024k
   316+3461 records in
   316+3461 records out
   1004087104 bytes (1.0 GB) copied, 33.5898 seconds, 29.9 MB/s

  「主に読み出しなので、二台のハードディスクをストライプしているはずで
   す。それでも 30 MB/秒 程度の速度しか出ていません」

  「対策はないのかな」

  「そうですね」

   根久は思案するように上を見つめました。

  「zfs send は増分のみを送信することもできます」

  (つづく)


  ■ 参考文献

   (1) サンマイクロシステムズ、"Solaris ZFS 管理ガイド"、
     Part No. 819-6260-15、2009 年 4 月

 (高田 浩生)
世界最高峰の技術で、世界最高性能のストレージを
Copyright 2020 Core Micro Systems Inc., All rights reserved.