Monthly Archives: July 2010

FreeBSD 8.1にavahiをインストールした

FreeBSDでBonjour (Zero Configuration Networking)を使用したかったのですが、インストールしようとするといろいろと無駄なものが入るので、なるべく削った状態でインストールしたいというのが積年の思いでした。

avahi 0.6.25まではどうしてもコンパイルがうまくいかなかったのですが、0.6.27になって(もしかしたら0.6.26でもいいのかも?)無事インストールができました。

$ wget http://avahi.org/download/avahi-0.6.27.tar.gz
$ tar zxf avahi-0.6.27.tar.gz
$ cd avahi-0.6.27
$ ./configure --disable-glib --disable-gobject --disable-qt3 --disable-qt4 --disable-gtk --disable-dbus --disable-python --disable-mono --disable-autoipd --disable-gdbm --disable-gtk3 --disable-monodoc
$ gmake
$ sudo gmake install

gmakeを使わないと

sed -e 's,@sbindir\@,/usr/local/sbin,g'  > avahi-daemon.sh

というところで止まってしまいます。

あと行うべきことは2点。

  • /etc/rc.conf に avahi_daemon_enable=”YES” を記述する。
  • user/group に avahi を追加する。そうしないと
    Failed to find user 'avahi'.

    と怒られて起動ができません。

参考文献

NetBSD on KuroBox : Instal the avahi

ZFS(raidz2 + spare)での修復の実際

家で使用している、ファイルサーバはFreeBSD 8.0とZFSを使用して構築したものです。
先日、接続すると上手く反応してくれなくなっていたので、調べてみたら一つのディスクがエラーを出している様子。

環境は以下のようになります。
da0: Seagate ST3500410AS
da1 – da7: HGST HDP725050GLA360
新しいHDD: HGST HDS721010CLA332

ログは確かこんな感じ(消してしまったので適当に細工)。

# zpool status
  pool: pool state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub:  none requested
config:

        NAME        STATE     READ WRITE CKSUM 
        pool        DEGRADED     0     0     0 
          raidz2    DEGRADED     0     0     0 
            da1     ONLINE       0     0     0  81.1M resilvered
            da2     ONLINE       0     0     0  81.1M resilvered
            da3     DEGRADED   209  449K     0 
            da4     ONLINE       0     0     0  81.1M resilvered
            da5     ONLINE       0     0     0  81.1M resilvered
            da6     ONLINE       0     0     0  81.1M resilvered
            da7     ONLINE       0     0     0  81.1M resilvered
        spares
          da0       AVAIL

da3の調子が悪いみたいです。
こんなときにと用意していた、ホットスペアは勝手に使用してくれない様なので、手動でreplaceします。

# zpool replace da3 da0
# zpool status
  pool: pool state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: resilver completed after 2h14m with 0 errors on Thu Jul  1 03:24:59 2010
config:

        NAME        STATE     READ WRITE CKSUM 
        pool        DEGRADED     0     0     0 
          raidz2    DEGRADED     0     0     0 
            da1     ONLINE       0     0     0  81.1M resilvered
            da2     ONLINE       0     0     0  81.1M resilvered
            spare   DEGRADED     0     0     0 
              da3   OFFLINE    209  449K     0 
              da0   ONLINE       0     0     0  152G resilvered
            da4     ONLINE       0     0     0  81.1M resilvered
            da5     ONLINE       0     0     0  81.1M resilvered
            da6     ONLINE       0     0     0  81.1M resilvered
            da7     ONLINE       0     0     0  81.1M resilvered
        spares
          da0       INUSE     currently in use

このままだとずっとdegradedという嫌な表示が出たままなのでda3を切り離します。

# zpool detach pool da3

いったんマシンの電源を落とし、新しいHDDを入れて起動すると

# zpool status
NAME        STATE     READ WRITE CKSUM
pool        UNAVAIL      0     0     0  insufficient replicas
  raidz2    UNAVAIL      0     0     0  insufficient replicas
    da1     ONLINE       0     0     0
    da2     ONLINE       0     0     0
    da0     ONLINE       0     0     0
    da4     FAULTED      0     0     0  corrupted data
    da5     FAULTED      0     0     0  corrupted data
    da6     FAULTED      0     0     0  corrupted data
    da7     UNAVAIL      0     0     0  corrupted data

となってしまい、使用できない状態。
どうなっているのかを調べてみると、da3 => da7になり、da4以降が一つずつ前にずれている状態。
先でda3はdetachされているので、da4だったda3が見えていないと。

HDDのScan Orderは変えられないし、どうしたものかと悩んで調べていたら、ただ単純にexportしてimportすれば良いだけということがわかりました。

# zpool export pool
# zpool import pool
# zpool status
  pool: pool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        pool        ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            da1     ONLINE       0     0     0
            da2     ONLINE       0     0     0
            da0     ONLINE       0     0     0
            da3     ONLINE       0     0     0
            da4     ONLINE       0     0     0
            da5     ONLINE       0     0     0
            da6     ONLINE       0     0     0

めでたく戻ってる!
最後は、spareはspareに戻しました。

# zpool replace pool da0 da7
# zpool status
  pool: pool
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scrub: resilver in progress for 0h47m, 40.25% done, 1h10m to go
config:

        NAME           STATE     READ WRITE CKSUM
        pool           ONLINE       0     0     0
          raidz2       ONLINE       0     0     0
            da1        ONLINE       0     0     0  31.1M resilvered
            da2        ONLINE       0     0     0  31.1M resilvered
            replacing  ONLINE       0     0     0
              da0      ONLINE       0     0     0
              da7      ONLINE       0     0     0  61.4G resilvered
            da3        ONLINE       0     0     0  31.0M resilvered
            da4        ONLINE       0     0     0  31.0M resilvered
            da5        ONLINE       0     0     0  31.0M resilvered
            da6        ONLINE       0     0     0  31.0M resilvered
# zpool add pool spare da0
# zpool status
  pool: pool
 state: ONLINE
 scrub: resilver completed after 2h21m with 0 errors on Sat Jul  3 07:07:19 2010
config:

        NAME        STATE     READ WRITE CKSUM
        pool        ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            da1     ONLINE       0     0     0  79.7M resilvered
            da2     ONLINE       0     0     0  79.6M resilvered
            da7     ONLINE       0     0     0  152G resilvered
            da3     ONLINE       0     0     0  79.6M resilvered
            da4     ONLINE       0     0     0  79.6M resilvered
            da5     ONLINE       0     0     0  79.6M resilvered
            da6     ONLINE       0     0     0  79.6M resilvered
        spares
          da0       AVAIL   

errors: No known data errors

らくちんらくちんです。

参考文献