トップ > 興味のあること > コンピュータ > ソフトウェア > FreeBSD

2020年のFreeBSD

2020年9月11日

Drobo FSが容量的にも、ハードウェア的にも、 限界を迎えつつある。 なので、 弟が 「ファイルサーバー増やしてくれー」 と泣きついてきた。 昔のようにHPのサイコロサーバーを3万円で買えればともかく、 さすがにサーバーそのものを増やすのもなんなので、 外付けでハードディスクを増設することに。

既に動いているサーバーは富士通のTX1310 M1で、 実はすでに二つの外付けケースでハードディスクを増やしてあり、 そろそろUSB 3.0が足りない。 なのでインターフェースを増設するのだが、 ここでUSB 3.0ではなく、 使ったことの無いeSATAを選択してみた。 USB 3.0に比べると少し帯域が広いし、 プロトコル変換しなくてすむ分、速くなるはず。

モノは玄人志向のSATA3E2-PCIE で、 チップはMarvellの88SE9128である。 購入価格は2950円也。 一応、ahciドライバでサポートされているらしいのだが、 ポートマルチプライヤーが動くかどうかが怪しい。

本体の蓋を開けて、 一番下のPCIeコネクタにボードを差す。 まずはこの状態でブートして、

ahci0: <Marvell 88SE9128 AHCI SATA controller> port 0xe050-0xe057,0xe040-0xe043,0xe030-0xe037,0xe020-0xe023,0xe000-0xe01f mem 0xf7d10000-0xf7d107ff irq 17 at device 0.0 on pci2
ahci0: AHCI v1.20 with 8 6Gbps ports, Port Multiplier not supported
ahci0: quirks=0x900<NOBSYRES,ALTSIG>
              

と認識されていることを確認。 Port Multiplier not supportedが気になるが。

外付けハードディスクケースは、 ロジテックのLHR-4BNHEU3を1万3060円で購入。 実はコレ、すでに使用中で、 USB 3.0なら問題なく動いている。 なので、最悪eSATAが使えなくても、 なんとかなるはず。 eSATAでサーバーと接続し、 まずは1台だけハードディスクを入れてみた。 すると、無事

ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <WDC WD40EZRX-00SPEB0 80.00A80> ACS-2 ATA SATA 3.x device
ada0: Serial Number WD-WCC4E0027788
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 3815447MB (7814037168 512 byte sectors)
ada0: quirks=0x1<4K>
              

として認識された。 む、外付けの方が若い番号になるのか。 でも問題無くブートできている。 システムもzfsにインストールしたおかげかな。 これでハードウェア的な問題は無さそうなので、 もう1台追加。

ada1 at ahcich2 bus 0 scbus2 target 0 lun 0
ada1: <ST4000DM000-1F2168 CC54> ACS-2 ATA SATA 3.x device
ada1: Serial Number Z301HK2D
ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 3815447MB (7814037168 512 byte sectors)
ada1: quirks=0x1<4K>
              

こちらも問題なく認識され、 ポートマルチプライヤーも動いているようである。 続けて2台を追加して、 4台フル実装。 もちろん、すべて認識された。 ちなにみハードディスクは新品ではなく、 使用中のものから玉突き衝突的に捻出したもの。 なので、既にパーティションが切ってある。 そこで、 gpart destroy -i 1 ada0 などとして、 全部のパーティションを削除していく。

不要なパーティションを削除したら、 zpool create nano raidz ada0 ada1 ada2 ada3 でraid 5相当なnanoという名前のプールを作る。 これはそのまま/nanoとして見えるので、 普通にsambaで共有した。 一応、 14TBくらいの空き容量があるように見える。 Windows 10から書き込んでみると100MB/sくらいは出るようで、 ほぼ1000-BASEの帯域を使い切っている感じ。 ネットワーク越しでは、 USB 3.0もeSATAも全然変わらないのだった。

2020年9月12日

ふと気づくと、スワップ領域が認識されていなかった。 外付けハードディスクケースの方が番号が若いせいだろうか? とりあえずgpart showでパーティションを調べて、 /etc/fstabに

/dev/diskid/DISK-JP6940HZ05W07Fp2		none	swap	sw		0	0
/dev/diskid/DISK-JP6940HZ07PJ1Fp2		none	swap	sw		0	0
/dev/diskid/DISK-JP6940HZ09EM5Fp2		none	swap	sw		0	0
/dev/diskid/DISK-JP6940HZ097GTFp2		none	swap	sw		0	0
                

と書いて事なきを得た。

2020年9月15日

最近、FreeBSDなサーバーにつなげているディスプレイの、 入力切替がうまくいかない時がある。 そういえば、昔ながらのシリアル通信という手もあるよなあ、 と思って調べたら、 ちゃんとシリアルコンソールを使う手段が用意されていた。

まずは手元のワークマシンだが、 チップに機能は入っているものの、 D-subコネクタがない。 なので、 以前からあったシリアル-USB変換ケーブルを掘り出した。 ただこれが結構古いため、 Windows 10ではサポート外。 メーカー提供のドライバも最新のものはダメで、 バージョン3.3を使う必要があった。

次にFreeBSD側である。 ブートログを見ると、

uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: console (115200,n,8,1)
              

というのがあるので、 /boot/loader.confに

boot_multicons="YES"
console="comconsole,vidconsole"
comconsole_port="1016"
comconsole_speed="115200"
              

を追加した。 1016は0x3f8の10進表記である。 これはコンソール表示用の設定で、 ログインするには/etc/ttysに

ttyu0	"/usr/libexec/getty std.115200"	vt100	on secure
              

の1行を付け加える。 これでFreeBSDマシンとワークマシンをクロスのシリアルケーブルで接続し、 TeraTermやputtyなどを使ってCOMポート経由、 8ビット/1ストップビット/ノンパリティでつなげればOK。 速度は、115200bpsである。 COMポートが何番になるかは、 ワークマシンのハードウェアによる。 今回はシリアル-USB変換ケーブルの設定でCOM4を割り当てたので、 これを使う。 ただ、shとzshはログインできてもプロンプトが出てこない。 bashは出てくるのだが、sudoするとやっぱり表示が途絶する。 うーん、何が原因なのか?

まあこの状態でも、 通信ソフトを接続したままリブートすると、 ちゃんとシャットダウンの過程が見えて、 PCの起動画面はさすがに無理だが、 FreeBSDのブートメニューから表示される。 延々とブートメッセージも表示されるので、 これで切替の不安定なディスプレイを使わずにすむ。