小型Linuxサーバの最高峰 OpenBlockS 600活用指南

第3回ルータにもなる自宅サーバをOpenBlockSで構築してみませんか(Part1)

はじめに

連載3回目の今回からは、実機を使った実際の設定手順を紹介します。さらには、OpenBlockS 600のパフォーマンスの測定を行い、使用感や性能をデモします。なお、OpenBlockS 600からは、サーバの構築ではWebインターフェースだけでもできるように機能強化していますが、本誌読者の方々には直接的なコマンド操作が適していそうですので、これを前提に解説をしていきます(実際の実行内容がわかりにくいGUIよりも、コマンド操作のほうがシックリきますよね⁠⁠。ご紹介する内容は、標準OSであるSSD/Linuxの使用方法から、OpenBlockSシリーズの利用方法として例の多いルータ的な使い方、また同時にサーバとしても動作させるまでを予定しています。

OpenBlockSの勘所

OpenBlockSは小型Linuxサーバとして販売をしていますが、一般的なIAサーバとは異なる点も多くあります。初めて利用するユーザにとっては戸惑いを覚える方も多いようです。そこで、まずは最初にOpenBlockSに特有な点を解説しましょう。

SSD/Linuxとは

標準搭載しているOSは、ぷらっとホームがOpenBlockSシリーズ向けに開発/メンテナンスしているオリジナルディストリビューションSSD/Linuxです。ぷらっとホームの本社所在地が秋葉原の外神田なので、Sotokanda Software Distribuitionと名付けられています。頭文字を取ってSSD/Linuxなのですね。

設定方法の基本

勘の良い方は気づいたかもしれませんが、SSD/LinuxはBSDを意識した作りになっております。ネットワーク設定や各種デーモンの起動制御などは「/etc/rc.conf」ファイルで行います。また「/usr/src」以下でOSそのものを構築するしくみも持っています。オリジナルのファームウェア(次項で解説)を作成するための開発環境としても利用します。OSをファームウェア化して使用することを想定しているので、SSD/Linuxにもともと含まれるものは最小限の内容になっています。そこで環境ごとに必要なソフトウェアを追加して利用するしくみを採っています。

ストレージ不要の稼働

OpenBlockS 600からはCF(Compact Flash)スロットを標準添付していますが、従来モデルと同様にCFやSSD(Solid State Drive)などのストレージがなくても動作できます。どのようにしてこのしくみを実現しているのでしょうか。それは図1で示したハードウェア構成の中で、FlashROMが重要な役割を担っています。

図1 主要パーツの構成
図1 主要パーツの構成

FlashROMには、IAサーバでいうところのBIOSとGRUBやNTLDRなどの機能を併せ持つブートローダを出荷時から書き込んでいます。そのほか、SSD/LinuxのカーネルとユーザランドをRAMディスク用にイメージ化したもの(RedHatなどでは/bootにあるinitrdファイルに相当します)を結合したファイルも書き込まれています。電源をONにすると、メインメモリの一部(OpenBlockS600では128Mバイト)をRAMディスクとして確保し、図2のdfコマンドの結果のように、rootパーティションとして利用することでストレージなしの稼働を実現しています。

図2 OS 起動後のメインメモリの見え方
# df -h
Filesystem Size Used Avail Use%
Mounted on
/dev/ram1 126M 25M 95M 21% /

カーネルの読み出し元

前項のとおり、カーネルはファームウェアとしてFlashROMに書き込まれています。IAサーバのつもりで、ストレージにカーネルを置いても、そのカーネルは使われませんでした。この仕様上の制限はOpenBlockS 600から、ブートローダにU-Bootを採用することで解消されました。このため、IAサーバを管理するのと同じ感覚でストレージ上のカーネル更新が行えるようになっています。またこの機能により、OSをインストールしたCFを差し替えるだけで、SSD/Linux以外のOSを起動することも容易にできるようになっています。

ネットワークの設定

それでは、さっそく設定していきます。まずは何はともあれネットワークです、固定IP、DHCPクライアント、PPPoEクライアントの場合について、初期状態では、シリアルコンソールで接続して設定を行いますが、この手順は、製品添付マニュアルにて解説していますので、ここでは割愛させていただきます。

固定IP

「/etc/rc.conf」に必要なパラメータを記述して設定を行います。⁠ホスト名、IPアドレス、デフォルトゲートウェイ、DNSサーバ」を設定した例が、リスト1です。設定された値は、⁠/etc/netstart」スクリプトによって、解釈され実行されます。これはシェルスクリプトになっているので、設定もシェルスクリプトでの変数定義の方法で記述していきます。最後にある「ipforward=YES」は、IPルーティングを有効にするための設定です。ルータとして動作させる場合は必ず設定します。

リスト1 固定IPの設定
hostname=“obs600.example.org”
defaultroute=“192.168.0.1”
ifconfig_eth0=“192.168.0.254 netmask 255.255.255.0 broadcast 192.168.0.255"
ifconfig_eth1="172.16.0.254 netmask 255.255.255.0 broadcast 172.16.0.255“
nameservers=“192.168.0.10 192.168.0.11“
ipforward=“YES”

DHCPクライアント

設定ファイルは同じく/etc/rc.conf、設定例はリスト2のとおりです。DHCPクライアントデーモンを起動する必要があるため、⁠dhclient="YES"」という記述を行っています。⁠dhclient_flags="eth0"」は、DHCPクライアントデーモンに対する引数そのままです。ここではインターフェースだけを指定していますが、追加で引数が必要な場合は、続けてここに記述します。

リスト2 DHCP クライアントの設定(/etc/rc.conf)
hostname=“obs600.example.org”
dhclient=“YES”
dhclient_flags=“eth0”
ifconfig_eth1="172.16.0.254 netmask 255.255.255.0 broadcast 172.16.0.255“
ipforward=“YES”

PPPoEクライアント

設定ファイルは同じく「/etc/rc.conf」です。設定例はリスト3のとおりです。PPPoEの場合では、pppoe-setupコマンドで入力する値を記述することになります。そのため、PPPoE用のID/パスワードを直接書き込む必要があり、設定後は必ず「/etc/rc.conf」のパーミッションを600に変更して、root以外のユーザから参照できないようにします。

リスト3 PPPoE クライアントの設定(/etc/rc.conf)
hostname=“obs600.example.org”
pppoe=“YES”
pppoe_int=“eth0”
pppoe_user=“guest@plathome”
pppoe_password=“plathome”
pppoe_defaultroute=“YES”
ifconfig_eth1="172.16.0.254 netmask 255.255.255.0 broadcast 172.16.0.255“
ipforward=“YES”

スループットの測定

ネットワークの設定が済んだところで、実際の通信スループット測定をしてみました。固定IP設定によりローカルルータとして設定した状態で、FTP通信をIPルーティングさせて計測しています図3参照⁠⁠。比較対象として、従来モデルのOpenBlockS 266とIAサーバでの計測も行っています表1⁠。

表1のように、最新クラスのQuadCore XeonのIAサーバに迫る結果を叩き出しました。OpenBlockS 600ではCPUにネットワークチップが統合されていること、そして内部ではネットワークに特化したRGMⅡバスによる接続を行っていることが、この結果に寄与しているものと考えられます⁠。

図3 スループットの測定
図3 スループットの測定
表1 測定結果
機種名スループット(Mbps)
OpenBlockS 600521.75
OpenBlockS 26672.74
IAサーバ537.24
※)
ここでのOpenBlockS 600の評価データは、開発段階のカーネルで動作しており、出荷時点での結果とは異なる場合があります。

おすすめ記事

記事・ニュース一覧