<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/zfssetup/">
    <title>FreeBSD+ZFS SETUP@Wiki</title>
    <link>http://w.atwiki.jp/zfssetup/</link>
    <atom:link href="https://w.atwiki.jp/zfssetup/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>FreeBSD+ZFS SETUP@Wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2013-04-30T17:10:06+09:00</dc:date>
    <utime>1367309406</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/25.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/26.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/40.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/28.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/36.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/37.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/zfssetup/pages/38.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/25.html">
    <title>個別ケース/とりあえず</title>
    <link>https://w.atwiki.jp/zfssetup/pages/25.html</link>
    <description>
      #topicpath(top=トップページ);
----
#contents()
----
**前提
-DVD起動されたところから
-そこまでは[[事前準備&gt;事前準備/OS用意]]を参照
-原則HDDを2台以上で運用するもので複数台まとめて設定できる
-今回は1台だけでセットアップしてあとで拡張する方法

**デバイス名確認
 # dmesg | grep MB

-解説：[[dmesg&gt;その他/コマンド#dmesg]]で得た初期設定情報キーワード「MB」を拾うと、HDDほかがヒットするのでデバイス名をメモっとく&amp;br();ここではSATAドライブがつながっているとして「ada0」と「ada1」が認識されているものとする

**ドライブの初期化
 # dd if=/dev/zero of=/dev/ada0 bs=1m count=1
-解説：[[dd&gt;その他/コマンド#dd]]で[[/dev/zero&gt;その他/用語#zero]]を使ってデバイスada0を初期化する、しょっぱなは別にしなくてもいいけど、何度かセットアップに失敗してあたまからやる場合は、これをおまじないのようにやっておくとよい

**パーティション作成
 # gpart create -s gpt ada0
 # gpart add -s 64K -t freebsd-boot ada0
 # gpart add -t freebsd-zfs -l disk0 ada0
 # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

なお確認のため以下を実行
 # ls /dev/gpt

「disk0」が参照されればOK

**プール作成
 # zpool create -f rpool /dev/gpt/disk0
-ここで「cannot mount &#039;rpool&#039;:failed to create mountponit」などのエラーがでるがそういうものなので無視してかまわない
-プール名は任意、講習会にあわせて「rpool」とした

**とりあえずマウント
 # zfs set mountpoint=/mnt rpool
 # zfs set checksum=fletcher4 rpool

**エクスポート、インポート
 # zpool export rpool
 # zpool import -o cachefile=/var/tmp/zpool.cache rpool

**ラベルの割り当て
 # zfs create rpool/root
 # zfs create rpool/root/usr
 # zfs create rpool/root/var
 # zfs create -o compression=on -o exec=on -o setuid=off rpool/root/tmp

-ルートディレクトリはプール直下につくらないこと！
-ここでは「root」というディレクトリを作ってそれ以下に各ディレクトリを作成

**スワップ作成
 # zfs create -V 20G rpool/swap
 # zfs set org.freebsd:swap=on rpool/swap
 # zfs set checksum=off rpool/swap

-スワップを固定サイズのswap領域にしているが、ZFSでの運用も可能？
-スワップディレクトリはどうせ見えないのでプール直下においておいた

**ディレクトリ作成とスティッキィビット設定
 # mkdir /mnt/root/var/tmp
 # mkdir /mnt/root/var/empty
 # chmod 1777 /mnt/root/tmp
 # chmod 1777 /mnt/root/var/tmp

**FreeBSDのインストール
 # cd /usr/freebsd-dist
 # export DESTDIR=/mnt/root
 # for f in base.txz lib32.txz kernel.txz src.txz
 &gt; do
 &gt; cat $f | tar --unlink -xvpJf - -C ${DESTDIR:-/}
 &gt; done

**起動ファイルの設定
 # echo &#039;zfs_enable=&quot;YES&quot;&#039; &gt;&gt; /mnt/root/etc/rc.conf
 # echo &#039;zfs_load=&quot;YES&quot;&#039; &gt;&gt; /mnt/root/boot/loader.conf
 # echo &#039;vfs.root.mountfrom=&quot;zfs:rpool/root&quot;&#039; &gt;&gt; /mnt/root/boot/loader.conf
 # touch /mnt/root/etc/fstab

-ZFSはfstabの評価前にロードされて確定するので、今回の設定ではfstabを読むことはない
-swapディレクトリもZFS上に作ったためfstabに設定は不要

**キャッシュをコピーしておく
 # cp /var/tmp/zpool.cache /mnt/root/boot/zfs/zpool.cache

**アンマウント、マウントポイントの再設定
 # zfs umount -af
 # zfs set mountpoint=legacy rpool/root
 # zfs set mountpoint=/tmp rpool/root/tmp
 # zfs set mountpoint=/usr rpool/root/usr
 # zfs set mountpoint=/var rpool/root/var
 # zfs set mountpoint=none rpool
 # zpool set bootfs=rpool/root rpool

**再起動
 # sync;sync;sync
 # reboot    </description>
    <dc:date>2013-04-30T17:10:06+09:00</dc:date>
    <utime>1367309406</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/26.html">
    <title>個別ケース/ミラー1</title>
    <link>https://w.atwiki.jp/zfssetup/pages/26.html</link>
    <description>
      #topicpath(top=トップページ);
----
(編集中)
*ミラーを作る
#contents()
----
**前提
-[[とりあえず&gt;個別ケース/とりあえず]]でdisk0の設定が済んでいる
-その後、[[事後処理]]にてrootの設定などが済んでいる
-ミラー用のHDDが接続され、BIOSで正しく認識されている

**rootでログイン
 Login:myuser
 password:****
 # su
 password:****

-解説：一般ユーザーでログインしてスーパーユーザーになっておく

**デバイス名確認
とりあえずada0で設定済みだとして追加デバイスがada1だとする

**ドライブの初期化
 # dd if=/dev/zero of=/dev/ada1 bs=1m count=1
-解説：ada0の時と同様ada1を初期化する。

**パーティション作成
 # gpart create -s gpt ada1
 # gpart add -s 64K -t freebsd-boot ada1
 # gpart add -t freebsd-zfs -l disk1 ada1
 # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
-基本的にada0と同じ構成
-ようはada0が壊れてもada1が独自にブートできるようにしている

**プールにミラーをついか
 # zpool attach rpool  /dev/gpt/disk0 /dev/gpt/disk1

-pool list -vで確認すること    </description>
    <dc:date>2013-04-30T17:09:51+09:00</dc:date>
    <utime>1367309391</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/40.html">
    <title>個別ケース/ミラー2</title>
    <link>https://w.atwiki.jp/zfssetup/pages/40.html</link>
    <description>
          </description>
    <dc:date>2013-04-30T17:08:53+09:00</dc:date>
    <utime>1367309333</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/zfssetup/pages/2.html</link>
    <description>
      **メニュー
-[[トップページ]]
--[[FreeBSDとZFS]]
--[[導入の前提条件]]
--[[こんなことがしたい]]
-[[事前準備]]
--[[マシン&gt;事前準備/マシン]]
--[[OS用意&gt;事前準備/OS用意]]
--[[BIOS設定&gt;事前準備/BIOS設定]]
-[[個別ケース]]
--[[ケース1&gt;個別ケース/とりあえず]] とりあえず
--[[ケース2&gt;個別ケース/ミラー1]] ミラーその１
--[[ケース3&gt;個別ケース/ミラー2]] 大容量
-- ミラーその２
-- ホットスワップ
--[[SSD&gt;個別ケース/SSD]]
-[[事後処理]]
--[[再起動後&gt;事後処理/再起動後]]
-[[設定]]
--[[スナップショット&gt;設定/スナップショット]]
--[[状態確認&gt;設定/状態確認]]
--[[トラブル対応&gt;設定/トラブル対応]]
-[[その他]]
--[[コマンド&gt;その他/コマンド]]
--[[トラブル&gt;その他/トラブル]]
--[[用語&gt;その他/用語]]
--[[リンク&gt;その他/リンク]]
----
文責
yambejp
----
&amp;online()人アクセス
本日:&amp;counter(today)/全体:&amp;counter(total)
----
SINCE:2012年11月14日

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2013-04-30T16:58:49+09:00</dc:date>
    <utime>1367308729</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/19.html">
    <title>個別ケース</title>
    <link>https://w.atwiki.jp/zfssetup/pages/19.html</link>
    <description>
      [ [[トップページ]] ]
----
*個別ケース
-[[ケース1&gt;個別ケース/とりあえず]]
-[[ケース2&gt;個別ケース/ミラー1]]
-[[ケース3&gt;個別ケース/ミラー2]]
-[[SSD&gt;個別ケース/SSD]]    </description>
    <dc:date>2013-04-30T16:57:44+09:00</dc:date>
    <utime>1367308664</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/28.html">
    <title>個別ケース/SSD</title>
    <link>https://w.atwiki.jp/zfssetup/pages/28.html</link>
    <description>
      #topicpath(top=トップページ);
----
#contents()
----
**SSDとの相性

-ZFSの基本は冗長化
-SSDを複数搭載するのは高いしまだ早い？
-よってSSDを使う場合は当座UTFにしておこう

いや、実際にSSDは買ってつなごうと思ったのだが、あまりいい運用記事が見当たらないので、あえてZFSにする必要ないのかなぁ・・・なんて。ZFS設定のページの割に投げやり（苦笑）

ただしMBRの信頼性が落ちてきているのでGPTで設定をしておく    </description>
    <dc:date>2013-04-30T16:55:11+09:00</dc:date>
    <utime>1367308511</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/39.html">
    <title>設定/トラブル対応</title>
    <link>https://w.atwiki.jp/zfssetup/pages/39.html</link>
    <description>
      #topicpath(top=トップページ);
----

*トラブル対応
#contents()

**概要
-zfsにfsckはない？
冗長化してあればチェックサムがバリバリきいているのでアクセスするたびに不整合をチェックして自動的に修正してくれるらしい

したがってfsck的なアプローチはする必要がない（zpoolで認識されている限り）


**参考リンク
詳しくは[[ここ&gt;https://www.allbsd.org/~hrs/diary/201109.html]]にあるが、逆に運用上のトラブルにあったことがないので検証はしてません

[[FreeBSD Topics&gt;http://gihyo.jp/admin/clip/01/fdt]]で後藤さんも書いているように[[scrub&gt;http://gihyo.jp/admin/clip/01/fdt/201109/15]]で処理する必要もあまりない    </description>
    <dc:date>2013-04-30T16:44:35+09:00</dc:date>
    <utime>1367307875</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/36.html">
    <title>設定</title>
    <link>https://w.atwiki.jp/zfssetup/pages/36.html</link>
    <description>
      #topicpath(top=トップページ)
----
*設定
-[[スナップショット&gt;設定/スナップショット]]
-[[状態確認&gt;設定/状態確認]]
-[[トラブル対応&gt;設定/トラブル対応]]    </description>
    <dc:date>2013-04-30T16:39:05+09:00</dc:date>
    <utime>1367307545</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/37.html">
    <title>設定/スナップショット</title>
    <link>https://w.atwiki.jp/zfssetup/pages/37.html</link>
    <description>
      #topicpath(top=トップページ);
----

*スナップショット
#contents()

**概要


**初期設定
-スナップショット用のプール「shared」をつくり、「/data/shared」にマウントしておきます。

 # mkdir -p /data/shared
 # zfs create rpool/data
 # zfs mountpoint=none rpool/data
 # zfs set atime=off rpool/data

 # zfs create rpool/data/shared
 # zfs mountpoint=/data/shared rpool/data/shared

-今後「/data/shared」に保存したデータは好きなタイミングでスナップショットがとれます。

**テスト
 # cd /data/shared
 # ls
-当然特にデータはないはずです
-とりあえずテストデータをつくります。

 # touch 1 2 3 &amp;&amp; mkdir x y z &amp;&amp;  cd x &amp;&amp; touch 4 5 6 &amp;&amp; cd ../y &amp;&amp; touch 7 8 9 &amp;&amp; cd ..
 # find /data/shared | sort

-表示リスト
 /data/shared
 /data/shared/1
 /data/shared/2
 /data/shared/3
 /data/shared/x
 /data/shared/x/4
 /data/shared/x/5
 /data/shared/x/6
 /data/shared/y
 /data/shared/y/7
 /data/shared/y/8
 /data/shared/y/9
 /data/shared/z

**実行
-スナップショットをとり、別名「/data/shared2」でマウントします

 # mkdir -p /data/shared2
 # zfs snapshot rpool/data/shared@1
 # zfs clone rpool/data/shared@1 rpool/data/shared2
 # zfs mountpoint=/data/shared2 rpool/data/shared2

 # find /data/shared2 | sort

-表示リスト
 /data/shared2
 /data/shared2/1
 /data/shared2/2
 /data/shared2/3
 /data/shared2/x
 /data/shared2/x/4
 /data/shared2/x/5
 /data/shared2/x/6
 /data/shared2/y
 /data/shared2/y/7
 /data/shared2/y/8
 /data/shared2/y/9
 /data/shared2/z
※sharedとshared2は同じ構成

-sharedからいくつかファイルを削除
 # rm /data/shared/1 &amp;&amp; rm -rf /data/shared/y
 # find /data/shared | sort

-表示リスト
 /data/shared
 /data/shared/2
 /data/shared/3
 /data/shared/x
 /data/shared/x/4
 /data/shared/x/5
 /data/shared/x/6
 /data/shared/z

-一方先ほどとったスナップショットでは

 # find /data/shared2 | sort
しても、元の状態がキープされている。

**確認
 # zfs list

で、プールの一覧が表示されるが、作成したスナップショットが表示されないことがある&amp;br()その場合は設定をかえる

 # zpool listsnapshots=on rpool
 # zfs list

スナップショットだけ表示します
 # zfs list -t snapshot

**設定
-UNIXのatimeが無駄にファイルを増やす可能性があるため、あらかじめ切っておく

 # zfs get -r atime rpool

NAME&amp;space(15)PROPERTY&amp;space(2)VALUE&amp;space(2)SOURCE&amp;br;
rpool              atime     on     default
rpool/root         atime     on     default
rpool/root/shared  atime     on     default

**削除
 # zfs destroy -r rpool/data/shared@1    </description>
    <dc:date>2013-04-23T21:43:54+09:00</dc:date>
    <utime>1366721034</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/zfssetup/pages/38.html">
    <title>設定/状態確認</title>
    <link>https://w.atwiki.jp/zfssetup/pages/38.html</link>
    <description>
      #topicpath(top=トップページ);
----

*状態確認
#contents()

**概要
-zpool status

 # zpool status
  pool: rpool
 state: ONLINE
  scan: resilvered 2.11G in 0h1m with 0 errors on Wed Dec 19 23:51:16 2012
 config:
 
        NAME           STATE     READ WRITE CKSUM
        rpool          ONLINE       0     0     0
          mirror-0     ONLINE       0     0     0
            gpt/disk0  ONLINE       0     0     0
            gpt/disk1  ONLINE       0     0     0
 
 errors: No known data errors    </description>
    <dc:date>2013-01-30T12:13:36+09:00</dc:date>
    <utime>1359515616</utime>
  </item>
  </rdf:RDF>
