FreeBSD 10.3Rにディスクを追加

はやくもHDDが壊れてディスクの交換をする,という話ではありません。もう,ディスクの故障に懲りたので(いつも同じことを言っている気がする)バックアップを取ろうという話です。なのでzfsでファイルシステムを作る必要もなくて,usb 3.0で接続してフォーマットしてマウントしてrsyncしようう,という程度の話です。

まずは,ヨドバシカメラでcenturyのスライディング裸族 SATA6Gを買ってきました。理由は一番安かったから。これよりももっと安い3.5inch HDD用ハードディスクケースもないではないですが,熱がこもりそうとか評判が悪いとかで怖かったのでやめました。

適当にそこらを漁ってみたらRAID用に使っていたとおぼしき3TBのWD Greenが出てきたのでこれでバックアップを取ることにします。ディスクサーバーのほうは3TB x 3でRAID 5を組んでいるのだから全然容量が足りないのですが,今は足りるのでよしとします。なんて,適当な。HDDを裸族に差し込んで電源を入れてからusb 3.0のケーブルでつなぐと
ugen0.3: at usbus0
umass0: on usbus0
umass0: SCSI over Bulk-Only; quirks = 0x0100
umass0:4:0:-1: Attached to scbus4
da0 at umass-sim0 bus 0 scbus4 target 0 lun 0
da0: Fixed Direct Access SPC-4 SCSI device
da0: Serial Number 123456789012
da0: 400.000MB/s transfers
da0: 2861588MB (5860533168 512 byte sectors)
da0: quirks=0xa
となって素直に認識されます。

gpart show da0
とやると
=> 34 5860533101 da0 GPT (2.7T)
34 128 1 freebsd-boot (64K)
162 268435456 2 freebsd-zfs (128G)
268435618 201326592 3 freebsd-zfs (96G)
469762210 5390770925 4 freebsd-zfs (2.5T)
となって,FreeBSDでなにかに使っていた痕跡があります。気にせずまっさらにしてしまいます。

# gpart delete -i 4 da0
# gpart delete -i 3 da0
# gpart delete -i 2 da0
# gpart delete -i 1 da0
# gpart show da0
=> 34 5860533101 da0 GPT (2.7T)
34 5860533101 - free - (2.7T)
# gpart destroy da0
# gpart show da0
gpart: No such geom: da0.

となってまっさらになってしまいます。
# gpart create -s gpt da0
da0 created
# gpart show da0
=> 34 5860533101 da0 GPT (2.7T)
34 5860533101 - free - (2.7T)
次に,ufsのスライスを確保します。
# gpart add -t freebsd-ufs da0
da0p1 added
# gpart show da0
=> 34 5860533101 da0 GPT (2.7T)
34 6 - free - (3.0K)
40 5860533088 1 freebsd-ufs (2.7T)
5860533128 7 - free - (3.5K)

gpart addするときに適当なジオメトリを入れてスライスのサイズを指定できますが,何も言わなければいっぱいっぱい使ってくれます。というわけで2.7TBが確保されました。次はフォーマット。
# newfs -S 4096 /dev/da0p1
正しくフォーマットが終了すれば,
# mount /dev/da0p1 /mnt
でマウントできます。あとはrsyncでバックアップを取ります。
# rsync -av /home1 /mnt/
# rsync -av /media /mnt/
ってな感じです。

あとはいかにこまめにバックアップをとるかという心がけの話になるのですが,これが一番難しいかも。

FreeBSD 10.3Rでディスクサーバー (4) アプリケーションインストール編

あんまり整理されてないメモで混乱してきましたが,次はアプリケーションをいろいろ入れていきます。

1. UPS
apcのUPSを使っているので停電のときに自動的にshutdownするようにしたいところです。
# cd /usr/ports/sysutils/apcupsd
# make config-recursive
# make install
/usr/local/etc/rc.d/apcupsd/apcupsd.confを編集して以下のように変更します。
UPSNAME S-UPS 500
DEVICE /dev/ttyU0
TIMEOUT 30
KILLDELAY 30
DEVICEはusb-serial変換ケーブルを使う場合の設定です。

/etc/rc.confに
apcupsd_enable="YES"
apcupsd_program="/usr/local/sbin/apcupsd"
を追加しておきます。
apcaccess status
とやれば現在のステータスがずらずらと表示されます。特に問題はなさそうですので、これで停電時もなんとかなるでしょう。

2. samba
samba 4.xに乗り換えられず,相変わらず3.6をインストールしてしまいます。安直にバイナリをインストールします。
# pkg install samba36
設定は前のものをそのまま引き継いで,パスワードの設定だけしておきます。/etc/passwdに登録されているユーザーでなくてはなりません。
# pdbedit -a -u user_name
とやってユーザを追加します。削除は
# pdbedit -x -u user_name
ユーザ情報の一覧表示は
# pdbedit -L
あとは,/etc/rc.confにsamba_enable="YES"を追加して,
# service samba start
とすれば起動します。

3. DNS
bindは10.xからportsに移されてしまいました。これも新しいバージョンやソフトに移行できず,9.9を使ってしまいます。
# cd /usr/ports/dns/bind
# make config-recursive
# make
# make install

/usr/local/etc/namedb/named.confを編集します。以前からの設定を引き継げばよいのですが,設定ファイルのインストール先が前は/etc/namedbだったのがportsを使ったので/usr/local/etc/namedbになってしまったためパスの違いに気が付かずはまってしまいました。

/etc/rc.confに
named_enable="YES"
named_flags=""
named_chrootdir=""
named_chroot_autoupdate="NO"
named_symlink_enable="NO"
を追加して,
# service named start
で起動します。ちゃんと名前が引ければOKです。



FreeBSD 10.3Rでディスクサーバー (3) 基本設定編

とりあえずOSが動いてディスクもなんとかなっているようですので,基本的な設定をします。

まずは,ネットワークを設定。/etc/rc.confに以下を追加。
hostname="hogehoge.example.com"
ifconfig_re0="inet xxx.xxx.xxx.xxx netmask 255.255.255.0"
defaultrouter="xxx.xxx.xxx.yyy\"
sshd_enable="YES"
ntpdate_enable="YES"
ntpdate_flags="-b xxx.xxx.xxx.xxx"
ntpd_enable="YES"
nfs_client_enable="YES"

ifconfig_re0="DHCP"
としてとりあえずはdhcpで動かしておいたほうがお手軽かもしれません。

1. FreeBSDのバイナリのアップデート
# freebsd-update fetch
# freebsd-update install

2. portsツリーのアップデート
昔(って,本当に大昔)と違ってportsnapでアップデートするようになったようです。
# portsnap fetch
# portsnap extract
# portsnap update
2回目以降はextractは不要です。
10.x以降は黙っていてもバイナリパッケージはpkgngによる管理となったようですが,念のため,
# pkg2ng
をやってから/etc/make.confに
WITH_PKGNG=yes
MAKEOPTS="-j n3"
を追加しておきます。二つ目のほうは4 coresなのでこんなもんでよいか,という程度のおまじないです。

次にportupgradeのインストールと設定をします。
# /usr/ports/ports-mgmt/portupgrade/
# make
# make install
# rehash
# cd /usr/local/etc
# chmod 644 pkgtools.conf
# vi pkgtools.conf
MAKE_ARGS = {
}
の間に以下を追加
'*' => [
'WITH_BDB_VER=42',
'WITHOUT_IPV6=yes',
'WITHOUT_X11=yes',
],

脆弱性の確認のために,
# pkg audit -F
0 problem(s)とでればよいようです。

古いパッケージを消すのには,
# pkg autoremove
また,パッケージの古いものがあるかどうかは,
# pkg version -vL=
パッケージのアップデートは
# pkg upgrade
portsからのアップデートは
# portupgrade -a

3. ntpサーバーとしてGPSからのPPSが使えるようにカーネルを再構築。
# cd /usr/src/sys/amd64/conf/
GENERICカーネルにPPS_SYNCを追加するだけなので,追加分のファイルを作成。
# cat > GENPPS
include GENERIC
ident GENPPS
options PPS_SYNC
あとはカーネルのコンパイルとインストール。
# cd /usr/src/
# make KERNCONF=GENPPS buildkernel
# make KERNCONF=GENPPS installkernel
これで再起動すればPPSに対応したカーネルになっているはず。

4. gpsのシリアルポートを設定。
/etc/devfs.confに
link cuau0 gps0
を追加。
# service devfs start
これで/dev/gps0から/dev/cuau0へのシンボリックリンクが張られます。

5. gpsのドライバを設定
/etc/ntp.confにドライバを設定します。通信速度が9600bpsなのでmode 16を設定します。以下を記入。
server 127.127.20.0 mode 16 minpoll 4 maxpoll 4 prefer
fudge 127.127.20.0 flag1 1 flag3 1 time2 0.06 refid GPS
#
restrict default notrust nomodify noquery ignore
restrict 127.127.20.0 mask 255.255.255.255
restrict 127.0.0.1 mask 255.255.255.255
restrict 192.168.0.0 mask 255.255.0.0

6. だいたいの時間の設定
# ntpdate -b 192.168.xxx.xxx
として適当なntpサーバーに同期させて時間をあわせる。

7. ntpdの起動
# service ntpd start
これでntpq -pとかntptimeとしてGPSに同期していればOKです。

ところが,freebsd-updateをやってカーネルを再構築している間に何が原因かわかりませんが,/dev/cuau0でNMEAコードを受け取れなくなってしまいました。usb-serial変換ケーブルを使ってGPSの出力を見るとちゃんとデータは送ってきているのでGPS側の問題ではなさそうです。せっかく動いたのに動かなくなるってなんなんでしょう。とりあえず解決できないので先送りしてしまいます。

8. nfsサーバーの設定
/etc/exportsにnfsによる共有の設定をします。大雑把にやるなら,
/home -maproot=root -alldirs -network 192.168.0.0 -mask 255.255.0.0
です。-maprootは危険もあるのでそれを承知の上でやるかどうか考える必要があります。

/etc/rc.confに
nfs_client_enable="YES"
rpcbind_enable="YES"
mountd_enable="YES"
nfs_server_enable="YES"
を追加します。

9. mailサーバーの設定
mailをこのサーバーで使うことはないはずなのですが,一応,postfixに入れ替えておくのがよいだろうということで入れ替えます。

# setenv FTP_PROXY http://proxy.hoge.com:3128
# cd /usr/ports/mail/postfix/
# make config-recursive
# make
# make install

もともと,sendmailが走っていたら,
# service sendmail stop
として止めます。/etc/aliasesにrootの転送先を設定してnewaliasesを走らせておきます。

/usr/local/etc/postfix/main.cfを編集して,/etc/rc.confにpostfix_enable="YES"を追加して,/usr/local/etc/rc.d/postfix startとしてpostfixを起動します。起動したら第三者中継チェックをやってくれるサイトなどで不正中継がされないかどうか確認しておくのが平和です。

10. 省電力設定
/etc/rc.confに
powerd_enable="YES"
を追加します。
sysctrl dev.cpu
とするとCPUの動作状態を確認できます。