Solaris/ZFS の変更点


*USBメモリでZFS [#d60c1c9b]

#contents

**volfsサービスを停止する。 [#w4f11557]
 # svcs -a|grep volfs
 online          9:13:59 svc:/system/filesystem/volfs:default
 
 # svcadm disable volfs
 # svcs -a|grep volfs
 disabled        9:50:13 svc:/system/filesystem/volfs:default

**USBメモリを差し込むみ認識されたか確認 [#b24daaa4]
 # rmformat 
 デバイスを探しています...
     1. Logical Node: /dev/rdsk/c1t0d0p0
        Physical Node: /pci@0,0/pci15ad,1976@7,2/storage@1/disk@0,0
        Connected Device: BUFFALO  ClipDrive        1.00
        Device Type: Removable
     2. Logical Node: /dev/rdsk/c2t0d0p0
        Physical Node: /pci@0,0/pci15ad,1976@7,2/hub@2/storage@1/disk@0,0
        Connected Device: USB      Flash Memory:    0.00
        Device Type: Removable
     3. Logical Node: /dev/rdsk/c3t0d0p0
        Physical Node: /pci@0,0/pci15ad,1976@7,2/hub@2/storage@2/disk@0,0
        Connected Device: TOSHIBA  TransMemory      1.00
        Device Type: Removable
     4. Logical Node: /dev/rdsk/c4t0d0p0
        Physical Node: /pci@0,0/pci15ad,1976@7,2/hub@2/storage@3/disk@0,0
        Connected Device: USB 2.0  Flash Disk       0.00
        Device Type: Removable
     5. Logical Node: /dev/rdsk/c4t0d1p0
        Physical Node: /pci@0,0/pci15ad,1976@7,2/hub@2/storage@3/disk@0,1
        Connected Device: USB 2.0  Flash Disk       0.00
        Device Type: Removable

**USBメモリをフォーマット [#m6c32760]
 # format -e
 Searching for disks...
 
 The device does not support mode page 3 or page 4,
 or the reported geometry info is invalid.
 WARNING: Disk geometry is based on capacity data.
 
 The current rpm value 0 is invalid, adjusting it to 3600
 done
 
 c4t0d1: configured with capacity of 43.00MB
 
 
 AVAILABLE DISK SELECTIONS:
        0. c0d0 <DEFAULT cyl 1302 alt 2 hd 255 sec 63>
           /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0
        1. c0d1 <VMware V-0000000000000000-0001-2.00GB>
           /pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0
        2. c1t0d0 <BUFFALO-ClipDrive-1.00 cyl 245 alt 2 hd 64 sec 32>
           /pci@0,0/pci15ad,1976@7,2/storage@1/disk@0,0
        3. c2t0d0 <DEFAULT cyl 959 alt 2 hd 64 sec 32>
           /pci@0,0/pci15ad,1976@7,2/hub@2/storage@1/disk@0,0
        4. c3t0d0 <TOSHIBA-TransMemory-1.00 cyl 243 alt 2 hd 64 sec 32>
           /pci@0,0/pci15ad,1976@7,2/hub@2/storage@2/disk@0,0
        5. c4t0d0 <DEFAULT cyl 503 alt 2 hd 64 sec 32>
           /pci@0,0/pci15ad,1976@7,2/hub@2/storage@3/disk@0,0
        6. c4t0d1 <USB2.0-FlashDisk-0.00 cyl 43 alt 2 hd 64 sec 32>
           /pci@0,0/pci15ad,1976@7,2/hub@2/storage@3/disk@0,1
        7. c6d0 <VMware V-0000000000000000-0001-2.00GB>
           /pci@0,0/pci-ide@7,1/ide@1/cmdk@0,0
        8. c6d1 <VMware V-0000000000000000-0001-2.00GB>
           /pci@0,0/pci-ide@7,1/ide@1/cmdk@1,0
 Specify disk (enter its number):
該当の番号を選択する。

**fdiskを実行 [#nd0d594d]

***既存のパーティションを削除 [#rf7407f7]
表示されたデバイス名をもとに fdisk コマンドにてパーティションを切り直します。

(A) Partition 情報の表示を行う。

(B) 3. Delete a partition で既存のパーティションを消去する。~
※注意:既存データは全て消えます

              Total disk size is 962 cylinders
              Cylinder size is 2048 (512 byte) blocks
 
                                                Cylinders
       Partition   Status    Type          Start   End   Length    %
       =========   ======    ============  =====   ===   ======   ===
           1       Active    DOS-BIG           1   961     961    100
 
 
 
 
 
 SELECT ONE OF THE FOLLOWING:
    1. Create a partition
    2. Specify the active partition
    3. Delete a partition
    4. Change between Solaris and Solaris2 Partition IDs
    5. Exit (update disk configuration and exit)
    6. Cancel (exit without updating disk configuration)
 Enter Selection:3

***Solaris用のパーティションを作成 [#bc8a294c]
  (C) 1. Create a partition で Solaris 向けパーティションを作成。
    ※ Type はSolaris2 を選択し容量は 100% を割り当てる。
  (D) 5. Exit (update disk configuration and exit) を選択して終了。

             Total disk size is 962 cylinders
             Cylinder size is 2048 (512 byte) blocks
 
                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1       Active    Solaris2          1   961     961    100
 
 
 
 
 
 SELECT ONE OF THE FOLLOWING:
    1. Create a partition
    2. Specify the active partition
    3. Delete a partition
    4. Change between Solaris and Solaris2 Partition IDs
    5. Exit (update disk configuration and exit)
    6. Cancel (exit without updating disk configuration)
 Enter Selection

***label の作成 [#rae17096]
※ スライス0番に全容量をアサインし SMI Label を選択するのがミソです。

 format> label
 [0] SMI Label
 [1] EFI Label
 Specify Label type[0]: 0
 Ready to label disk, continue? y


**zfsプールを作成する。 [#f9fc8549]
 -bash-3.00# zpool create -f zfs raidz c0d1 c6d0 c6d1 c1t0d0p0 c2t0d0p0 spare c3t0d0p0 c4t0d0p0
 -bash-3.00# zpool status
   プール: zfs
  状態: ONLINE
  スクラブ: 何も要求されませんでした
 構成:
 
         NAME          STATE     READ WRITE CKSUM
         zfs           ONLINE       0     0     0
           raidz1      ONLINE       0     0     0
             c0d1      ONLINE       0     0     0
             c6d0      ONLINE       0     0     0
             c6d1      ONLINE       0     0     0
             c1t0d0p0  ONLINE       0     0     0
             c2t0d0p0  ONLINE       0     0     0
         スペア
           c3t0d0p0    AVAIL   
           c4t0d0p0    AVAIL   
 
 エラー: 既知のデータエラーはありません

*zpool [#r2f6be14]

ただのプール 1ディスク以上
mirror はraid1 2ディスク以上
raidz はシングルパリティの冗長性を持った構成で RAID5と同等 3ディスク以上
raidz2 は,シングルパリティではなく,ダブルパリティによる冗長構成でプールを作成する事が出来ます.一般的には RAID6 と呼ばれるものと同等 4ディスク以上


**raidz2のテスト [#t8680b77]
スペアのドライブを2台用意してみました。

 # # zpool create -f zfs raidz2 c0d1 c6d0 c1t0d0p0 c2t0d0p0 c3t0d0p0 spare c4t0d0p0 c6d1
 
 # zpool status
   プール: zfs
  状態: ONLINE
  スクラブ: 何も要求されませんでした
 構成:
 
        NAME          STATE     READ WRITE CKSUM
        zfs           ONLINE       0     0     0
          raidz2      ONLINE       0     0     0
            c0d1      ONLINE       0     0     0
            c6d0      ONLINE       0     0     0
            c1t0d0p0  ONLINE       0     0     0
            c2t0d0p0  ONLINE       0     0     0
            c3t0d0p0  ONLINE       0     0     0
        スペア
          c4t0d0p0    AVAIL   
          c6d1        AVAIL   
 
 エラー: 既知のデータエラーはありません


**障害を仮定してc2t0d0p0を無理やり引っこ抜く [#k12abc14]
スペアのディスクが自動で挿入される。

 # zpool status
   プール: zfs
  状態: DEGRADED
 状態: 1 つまたは複数のデバイスの再同期化が進行中です。
        プールはおそらく縮退状態で動作を継続します。
 アクション: 再同期化が完了するまでお待ちください。
  スクラブ: resilver が 0h0m で進行中、99.91% 完了、0h0m 開始待ち
 構成:
 
        NAME            STATE     READ WRITE CKSUM
        zfs             DEGRADED     0     0     0
          raidz2        DEGRADED     0     0     0
            c0d1        ONLINE       0     0     0
            c6d0        ONLINE       0     0     0
            c1t0d0p0    ONLINE       0     0     0
            spare       DEGRADED     0     0     0
              c2t0d0p0  削除         0     0     0
              c4t0d0p0  ONLINE       0     0     0
            c3t0d0p0    ONLINE       0     0     0
        スペア
          c4t0d0p0      INUSE     現在使用中です
          c6d1          AVAIL   
 
 エラー: 既知のデータエラーはありません

**新しいディスクを挿入を仮定して、c2t0d0p0を再度差し込む [#b71cf747]
自動で復旧してくれる。

 # zpool status
   プール: zfs
  状態: ONLINE
  スクラブ: Wed Mar 18 13:48:32 2009
  上で 0 エラーが発生した 0h0m のあとの resilver completed構成:
 
        NAME          STATE     READ WRITE CKSUM
        zfs           ONLINE       0     0     0
          raidz2      ONLINE       0     0     0
            c0d1      ONLINE       0     0     0
            c6d0      ONLINE       0     0     0
            c1t0d0p0  ONLINE       0     0     0
            c2t0d0p0  ONLINE       0     0     0
            c3t0d0p0  ONLINE       0     0     0
        スペア
          c4t0d0p0    AVAIL   
          c6d1        AVAIL   
 
 エラー: 既知のデータエラーはありません

*スナップショット [#ub11ed49]
スナップショットを簡単に取る事ができて、リストアも簡単なのでバックアップは必要ないみたいです。

**スナップショットの作成 [#e248b774]
スナップショットを作成するにはzfs snapshotコマンドを使います。tank/homeのスナップショットを作成します。

 # zfs snapshot tank/home@snapshot1

スナップショットは数秒で作成されます。スナップショットを作った時点ではディスク容量は消費せず、ファイルを更新するたびに容量を消費していきます。


作成したスナップショットには/export/home/.zfs/snapshot/からアクセスできます。このディレクトリはlsコマンドでは見えないので注意してください(-aオプションでも見えません)。


**ある時点のスナップショットに戻す [#xc7422ef]
ファイルシステムをある時点のスナップショットに戻すにはzfs rollbackコマンドを使います。
 # zfs rollback tank/home@snapshot1

**スナップショットを削除する [#b22e7d8d]
スナップショットを削除するにはzfs destroyコマンドを使います。
 # zfs destroy tank/home@snapshot1

**バックアップ・リストア [#t2369184]
バックアップ・リストアにはzfs send, zfs recvコマンドを使います。(以前はbackup/restoreというコマンドでしたがsend/receiveに変更されました。) 


**バックアップ [#lfe814b2]
zfs sendコマンドでバックアップしたいスナップショットを指定します。
 # zfs send tank/home@snapshot1 > /backup/home.img

**差分バックアップ [#t69ace09]
差分バックアップを取る場合は-iオプションと2つのスナップショットを指定します。
 # zfs send -i tank/home@snapshot1 tank/home@snapshot2 > /backup/home_sub.img

**リストア [#y4baf6a3]
zfs sendコマンドで出力したバックアップデータをzfs receiveコマンドでリストアします。
 # zfs receive tank/home < /backup/home.img


*ZFS ストレージプールを移行する [#yc13c9f2]
こんなのもできるみたいですが使い方がいまいち分かりませんでした。
http://docs.sun.com/app/docs/doc/819-6260/gbchy?a=view