POLESTAR Automationに「QNAP」のNASを登録してみた

2020年8月14日

ワイドテック プロダクト企画のYです。

今回は前書きなし、いきなり始めます。テーマはこれです。

QNAP(キューナップ)のNAS(Network Attached Storage)、今春発売された最新のエントリーモデル「TS-231K」です。

QNAP(キューナップ)のNAS(Network Attached Storage)、今春発売された最新のエントリーモデル「TS-231K」です。

■今どきのNASは…

このQNAP、最近、お客様から「POLESTAR AutomationでQNAPのNASが管理できるか?」というお問い合わせをいただいたので、検証のために購入したものです。

取り急ぎ、社内のサーバー室から古いハードディスク(HDD)2台を提供してもらって組み込んでみたのですが、装着はネジ不要、非常に簡単です。RAID動作中に片方のHDDが故障してもその場で交換できる「ホットスワップ」にも対応しています。
NASの基本構造はHDDケースにCPU、メモリ、ネットワーク(LAN)インターフェースが付いたもので、近年はUSBインターフェースなども標準的です。OSはLinuxかWindows(Windows Storage Server)ですし、ディスプレイ出力がない(最近はHDMIが付いているものもありますが)だけで、ほぼPCですね。

NASの目的はLAN上でのストレージの共有ですが、その昔、PC周辺機器メーカー数社からLinuxを搭載した低価格のNASケースが発売され、本来の用途だけでなく、Webサーバーとブログ用CMS(WordPressなど)を立ち上げたり、VPNを組み込んで遠隔ファイル共有をしたりと、さまざまな用途が開拓されていったものでした。
今では、NASベンダー自体が元からそうした多用途のアプリケーションサーバー、ホームサーバーを志向しているように思います。
国内のNAS市場というと、B社やI社といった日本の有名周辺機器ブランドのものもありますが、主役はQNAPやSynology(シノロジー)のような台湾メーカー製だと思います。
とにかくコストパフォーマンス(価格が安いというより、文字通りの価格対性能比、費用対効果の意味で)が優秀ということで、SMB(中小企業)からSOHO、個人まで幅広く愛用されている印象があります。スペックも良いのですが、前述のようなアプリケーションの豊富さも人気の理由でしょう。

■QNAPをLinuxサーバーとして使うには

QNAPのNASには、CPUにx86/x64系とArm系のRISCを採用したものがあります。今回購入したTS-231Kは後者で、Annapurna Labs(Amazonの関連会社らしいです)のAlpine AL214という、クアッドコアのArmを搭載しています。
OSは「QTS」という、独自のWeb GUIを搭載したLinuxベースのもので、CPUに関係なく共通で用意されているようです。このスマホやタブレット端末を彷彿とさせるGUIが非常に出来がよく、初期化やRAID関連を含む基本設定は、何でもGUIだけでできてしまいます。「App Center」というGUIベースのアプリインストーラもあり、バックアップツールやWordPress、MediaWikiのようなCMS、メディアサーバー、ホームオートメーションなど、NASで可能な一通りのアプリケーションがカバーされています。

QNAP2

一方、普段からCLI(コマンドライン)に慣れ親しんでいるユーザー向けには、CLIによるアクセス手段もちゃんと提供されています。SSHやTelnetを有効化すれば、常用のターミナルクライアントからCLIでログインできます。
しかし、このCLIが結構独特なもので、adminというアカウント名ながらroot権限になってはいるものの、標準のシェルがbashなどではなく、素のUNIXシェルであるshである上、yum/dnfやaptのようなパッケージインストーラも提供されていません。
とりあえず、QNAPをCLIモードで汎用Linuxサーバーっぽく使えて、かつPOLESTAR Automationの管理対象としてスクリプトジョブなども走るようにするには、

– シェルをshからbashに変更する

– パッケージインストーラを使えるようにする

の2点が必須かな、ということで、早速実践してみました。

■QNAPにパッケージインストーラを追加+シェルをbashに

ここでは、QNAPのNASをSSH経由でCLIの使えるLinuxサーバーとして設定する手順をご紹介します。

1. SSHの有効化

まず、QTSのWeb GUIにログインしてでコントロールパネルの「ネットワークサービスとファイルサービス」-「Telnet/SSH」からSSHを有効にしておきます。

QNAP3

2. Web GUIからEntwareのインストール

QNAPやSynologyなどのNAS用独自OSに、CLI用のパッケージ管理機能を追加できる「Entware」というソフトウェアをインストールしますが、「App Center」のQNAP標準アプリストアからはインストールできないので、手動でインストールします。
最新のEntwareは、以下の場所にあります
https://github.com/Entware/Entware/wiki/Install-on-QNAP-NAS
「Download this package for standard installation…」の「this」以降の文字列が、インストーラファイルのリンク先になっています。クリックすると、インストーラ(本稿執筆時点ではEntware_1.00std.qpkg)がダウンロードされます。
App Centerを起動してツールバーから「手動でインストール」アイコンをクリックし、先にダウンロードしたインストーラを開いてEntwareをインストールします。
(いろいろ警告が出ますが、とりあえずスルーしてください)

QNAP4

次に、お使いのターミナルクライアントで、QNAPのアドレスへのSSHを設定します。
GUIにログインするのと同じadminアカウントとパスワードで、SSHにもログインできます。
Entwareが入ると、パッケージインストーラの「opkg」コマンドが使えるようになります。例えばテキストエディタのnano(個人的にはこれが一番使いやすいと思っています…)をopkgでインストールするには、以下のように実行します。

# opkg install nano
root権限ですので、頭にsudoは不要です。

3. CLIシェルの変更

ところで、この時点でのシェルは前述の通り「sh」です。現在のシェルを確認するには

# echo $SHELL
と実行しますが、返ってくるのは

/bin/sh
のはずです。
ほとんどのLinux使いの皆さんはbashに慣れていると思いますので、bashを標準シェルに設定(固定)しましょう。
テキストエディタ(標準で入っているvi/vimでも、opkgでインストールできるnanoでも)で /etc/passwd を書き換えます。

admin:x:0:0:administrator:/share/homes/admin:/bin/sh

admin:x:0:0:administrator:/share/homes/admin:/bin/bash
に変更して保存後再ログインすれば、以降はbashが標準のシェルになります。 /etc/passwd には他のユーザーの情報も入っていると思いますので、/bin/sh は全部 /bin/bash に書き換えてしまいましょう。
bashが適用されるとプロンプトが[~]から[admin@サーバー名 ~]に変わるので、シェルが変わったことがわかるかと思います。先のecho $SHELLでも

/bin/bash
と返ってくるはずです。

QNAP5

4. パスを通しておく

Entwareのopkgでインストールしたプログラムは /opt/bin または /opt/sbin ディレクトリに保存されます。
Entwareのインストール直後は、これらのディレクトリにパスは通っていません。
以下のコマンドを実行するとパスが通ります。

export PATH=/opt/bin:/opt/sbin:$PATH

次回のログイン以降も有効にするには、テキストエディタで ~/.bash_profile ファイルを開き、最終行に上記のコマンドを追加して保存します。

■QNAPはエージェントでどうぞ

POLESTAR Automationにサーバーを登録する方式には、エージェントとエージェントレスの2種類がありますが、QNAP QTSは現状、エージェントレスでの登録ができません。
QNAPではエージェントをお使いください。CPUがx64系であればx64版が、Arm系ならRaspberry Pi(ラズパイ)用として提供しているエージェントが利用できます。
TS-231KはArmですので、ラズパイ用エージェントをTera TermのSCPで送ってインストールし、POLESTAR Automationに登録することができました。

QNAP6

ところで、QNAP(最新ファームウェア、バージョン4.4.3.1381)でのEntwareに関しては、今回どうしても解決できなかった問題が残っています。
QNAPを再起動すると、Entwareそのものやopkgでインストールした /opt 配下のプログラム、パス設定、あとPOLESTAR Automationのエージェントなどが消失してしまうのです(bash関連の設定変更だけは戻されませんでした)。
どこかにバックアップがあるのか、前述のインストール手順でEntwareを再インストールすると、再起動前に存在していた /opt 以下の内容が復旧します。ただし、POLESTAR Automationのエージェントだけは、再インストールが必要でした。
セキュリティ機能が働いているのでしょうが、今後さらなる追究が必要かなと考えています。
なお、ネットワーク機器として登録する方法もあり、こちらですと明示的に削除しない限り登録が消えませんが、利用可能なジョブには限りがあります。

以上、QNAPのNASをPOLESTAR Automationに登録する方法と、その前提となる環境構築手順をご紹介しました。なかなか面白い実験でしたが、再起動の件はなんとかならないかなと思っています。
そこの解決方法も含め、引き続き検証を続けて行くつもりです。上位機種なら管理対象としてだけでなく、POLESTAR Automationの管理サーバーも動かせるかなと思いますので、機会があればトライしてみるつもりです。あと、NASのもう一方の雄、Synologyもぜひ試してみたいところですね。