FreeBSD

Intel NUC NUC6CAYH で自宅サーバ

これまでの総投資
Intel NUC6CAYH 2019-12-06 17,980
SSD 128GB 2.5in MLC
Transcend TS128GSSD370S
2016-04-29 流用
SSD 250GB 2.5in
WD Blue WDS250G2B0A-EC
2021-02-16 5,104
8GB DDR3L-1600 SO-DIMM
CFD-Panram D3N1600PS-L8G
2016-04-29 流用
Buffalo WLI-UC-AG300N 2016-05-16 流用
Buffalo LUA-U2-KTX 不明 手持
Buffalo WI-U2-433DHP 2020-06-27 2,740
合計 25,824

前用機の 5CPYH が壊れてしまった。 まったく電源が入らない。 AC アダプタは正常なので、メインボードがだめになったみたい。

しかたないので Amazon でいちばん安くてすぐ来るのをセレクト。

少々古めみたいだけど、メモリがそのまま使える 6CAYH が値段も手頃なので即発注。

メモリと SSD をそのまま移植。 すんなり行くかと思ったら、なんかブートしない。

ハマった点は以下の通り。

あと、どうもオンボードの LAN の調子が悪い。 watchdog timeout ばかり吐いて ppp リンクに失敗する。 しかたないので手持ちの USB ethernet アダプタ (Buffalo LUA-U2-KTX) を刺して使うことにした。 →使えるようになりました [2021-03-01]

無線 LAN アダプタ取替え

run(4) が時々 device timeout を吐いて止まることがあってちょっと困るので、違うドライバのものを物色。

Web を検索すると、どうやら Buffalo WI-U2-433DHP は RTL8821AU を使っているらしい。rtwn(4) で動きそうなので購入。

if_rtwn_usb.ko をロードして刺してみたけど、

ugen0.2: <Realtek 802.11ac WLAN Adapter> at usbus0

と出るだけで認識しない。 usbdevs やらいじってモジュール再コンパイル。 diff はこちら

# cd /sys/dev/usb
# vi usbdevs
# cd /sys/dev/rtwn/usb
# vi rtwn_attach_usb.h
# cd /sys/modules/rtwn_usb
# make
# cp /usr/obj/usr/src/amd64.amd64/sys/modules/rtwn_usb/if_rtwn_usb.ko /boot/kernel/

作り直したモジュールをロードしてやると、あっさり認識。

ugen0.2: <Realtek 802.11ac WLAN Adapter> at usbus0
rtwn0 on uhub0
rtwn0: <802.11ac WLAN Adapter > on usbus0
rtwn0: MAC/BB RTL8821AU, RF 6052 1T1R

hostap も問題なく動いてる。

いつ取り込まれるかわからないけどいちおう bug report 出しておいた

結局元に戻した

しばらく使ってるとどうも時々止まる感じ。 ドライバの問題なのか熱のせいなのか原因を追いきれていないので、とりあえず元のアダプタに戻した。

SSD 交換

最近、時々 SSD が SMART error を吐くようになってきた。

Feb 16 03:02:57 moon smartd[91952]: Device: /dev/ada0, 393216 Currently unreadable (pending) sectors

とか出るんだけど、あとで smartctl -a してみると 0 になってる。 Power_On_Hours の数値も少し前から変(桁あふれ?)だし、そろそろ 5 年経つので予防的に交換。

それにしても SSD 安くなったなぁ。250G で 5 千円くらい。 今回は WD Blue をチョイス。

作業は ZFS だから早くて簡単。

※作業ログを取り忘れていて、思い出しながら書いていますので、メッセージや値が違っているかもしれません。予めご了承ください。

  1. 手持ちの SATA to USB アダプタ経由で新しい SSD をつなぐ。
  2. gpart(8) で元の SSD と同じようにパーティションを作る。
    # gpart create -s gpt da0
    # gpart add -t freebsd-boot -b 40 -s 1024 da0
    # gpart add -t freebsd-swap -b 2048 -s 4194304 da0
    # gpart add -t freebsd-zfs -s 483393536 da0
    # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
    # gpart show da0
    =>       40  488397088   da0  GPT  (233G)
             40       1024     1  freebsd-boot  (512K)
           1064        984        - free -  (492K)
           2048    4194304     2  freebsd-swap  (2.0G)
        4196352  483393536     3  freebsd-zfs  (231G)
      487589888     807240        - free -  (394M)
    
  3. 新しいほうの freebsd-zfs パーティションを attach して、ミラープールにする。
    # zpool attach zroot ada0p3 da0p3
    
  4. Resilver が終わったら電源を切って SSD を交換。
    ※何度か detach attach したので、以下の例では scan: のところが変です。初めて attach したときは 1 分くらいかかってました。
    # zpool status
      pool: zroot
     state: ONLINE
      scan: resilvered 7.57M in 0 days 00:00:00 with 0 errors on Sun Feb 21 08:06:15 2021
    config:
    
            NAME          STATE     READ WRITE CKSUM
            zroot         ONLINE       0     0     0
              mirror-0    ONLINE       0     0     0
                ada0p3    ONLINE       0     0     0
                da0p3     ONLINE       0     0     0
    
    errors: No known data errors
    # poweroff
    
  5. 新しい SSD だけでブート。 上がってきたら zpool status で確認。
    古いほうが FAULTED とかになってるので detach する。このとき、デバイス名 (ada0p3) でなく、vdev GUID(長い数字)で指定する。
    # zpool status
      pool: zroot
     state: DEGRADED
    status: One or more devices could not be opened.  Sufficient replicas exist for
            the pool to continue functioning in a degraded state.
    action: Attach the missing device and online it using 'zpool online'.
      scan: resilvered 7.57M in 0 days 00:00:00 with 0 errors on Sun Feb 21 08:06:15 2021
    config:
    
             NAME                      STATE     READ WRITE CKSUM
             zroot                     DEGRADED     0     0     0
               mirror-0                DEGRADED     0     0     0
                 11964264738870817946  FAULTED      0     0     0     was ada0p3
                 ada0p3                ONLINE       0     0     0
    
    errors: No known data errors
    # zpool detach zroot 11964264738870817946
    # zpool status
      pool: zroot
     state: ONLINE
      scan: resilvered 7.57M in 0 days 00:00:00 with 0 errors on Sun Feb 21 08:06:15 2021
    config:
    
             NAME        STATE     READ WRITE CKSUM
             zroot       ONLINE       0     0     0
               ada0p3    ONLINE       0     0     0
    
    errors: No known data errors
    
  6. 今回はディスクが大きくなったので、プールを拡張。
    # zpool list zroot
    NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
    zroot   124G  7.43G   117G        -         -    23%     6%  1.00x  ONLINE  -
    # zpool online -e ada0p3
    # zpool list zroot
    NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
    zroot   230G  7.43G   223G        -         -    12%     3%  1.00x  ONLINE  -
    

完了。

オンボード LAN をなんとかする

せっかくあるオンボード LAN をやっぱりなんとかしたい。

ぜんぜん気づかなかったけど、いつの間にか ports に net/realtek-re-kmod ってのができてる。

pkg(8) で入れて試してみたら、あっさり使えるようになった。 ブート時のメッセージはこんな感じ。

re0: <Realtek PCIe GbE Family Controller> port 0xe000-0xe0ff mem 0x91104000-0x91104fff,0x91100000-0x91103fff irq 20 at device 0.0 on pci2
re0: Using Memory Mapping!
re0: Using 1 MSI-X message
re0: ASPM disabled
re0: version:1.96.04
re0: Ethernet address: xx:xx:xx:xx:xx:xx

This product is covered by one or more of the following patents:            
US6,570,884, US6,115,776, and US6,327,625.
re0: Ethernet address: xx:xx:xx:xx:xx:xx

今までの苦労はいったい何だったんだろう。