The Rank of F

渋谷で働く無能のブログ

TerraMaster F2-422

f:id:zeriyoshi:20210504053404p:plain

TerraMaster F2-422 を買った。

購入動機

  • 自宅サーバーを本格的に運用するため、 NAS とサーバーを分離したかった
  • btrfs RAID1 をやめたかった
    • btrfs が嫌いとか信頼性がとかではない
    • 単に自分の用途だと不要だった
    • モニタリングが手動で壊れても気づけない可能性があった
  • セールしていて安かった
  • なんとなく買いたかった

開封~動作確認

f:id:zeriyoshi:20210504054802j:plain

電源アダプタを確認。 Powertron Electronics の 12.0V / 3.33A (= 39.96 W) のものだった。 プラグは一般的な丸形。

試しに HDD をセットせず電源を入れてみた。しかし Web UI にアクセスするとエラーメッセージが表示された。 どうやら HDD をセットしないと動作しないらしい。

とりあえず手持ちの余ってた HDD (HGST HDT721010SLA360) をセットして起動。 Single Disk / RAID1 どちらも問題なく動作した。

後述するがシステムイメージはセットした HDD に書き込まれているみたい。

セットアップ

基本的に WebUI に従ってセットアップすれば問題ない。

ただし、現状 (TOS 4.2.11-2103251142) にて日本語設定でストレージプールの編集を行おうとすると JavaScript が構文エラーを起こして WebUI が機能しなくなる。 一度英語に設定してから設定すれば問題なく動作する。

HDD は WD WD80EFZX 8TB を 2 個使った。

f:id:zeriyoshi:20210504070441j:plain

ハードウェア (分解)

動作も問題なさそうなので分解してみる。

バックパネルを固定している 4 本のネジを外して引っ張るだけ。簡単。

f:id:zeriyoshi:20210504054841j:plain

そういえば初期ロットでは HDMI 端子が隠されていたようだけど普通に使える状態になっていた。

f:id:zeriyoshi:20210504070724j:plain

バックパネルには 8cm の冷却ファンがついている。メーカーは不明。

f:id:zeriyoshi:20210504054946j:plain

バックパネルを外すときに基板に接続されているファンコネクタを外す必要があるので注意。 ロジックボードにはもう一つコネクタがついていた。 4 ベイモデルと共通化されている?

f:id:zeriyoshi:20210504055124j:plain

あとはフロントパネル側を引っ張ればケースから外せる。

f:id:zeriyoshi:20210504055215j:plain

ロジックボードに未使用のメモリスロットを発見。仕様的に DDR3L SO-DIMM を追加できそう。 丁寧に搭載方法もシールで記載されている。

f:id:zeriyoshi:20210504055318j:plain

その他、オンボードで LPDDR3 メモリ (SK Hynix H5TC4G64EFR) が搭載されていた。 写真には写っていないが裏側にも実装されていて計 8 枚実装されている。

f:id:zeriyoshi:20210504071912j:plain

メモリチップの仕様としては DDR3L (1.35V) の 4Gbit (512MiB) 品。 8 枚なので仕様通り 4 GiB 。 メモリを増設する際はこれに合わせて PC3-14900 (DDR3-1866) のものを購入すれば良さそう。

ネジを外してロジックボードが取れた。内部 USB ポートに USB メモリが刺さっていた。 最初はこれに OS がインストールされているのかと思っていた。

f:id:zeriyoshi:20210504060248j:plain

ちなみに、フロントパネルの LED / 電源ボタン用にコネクタが接続されているので注意。 この後取り外した。

f:id:zeriyoshi:20210504060105j:plain

ロジックボードを見ていく。 NIC として Realtek RTL8153B (USB 3.0) と Realtek RTL8111H (PCI Express 1.1 1lane) が搭載されている。 1GbE ポートはこれらで賄われている模様。

f:id:zeriyoshi:20210504061051j:plain

PCI Express と USB 3.0 でバスが分離されているのは冗長化という意味で良さそうだが、ボンディングするなら微妙かも。 速度面求めるなら 10GbE があるんだからそっちを使えということかもしれない。

10GbENIC についてはヒートシンクがつけられており、手元にグリスもなかったので外さなかった。どうせ Linux なので後で SSH 接続して確認する。(答えを言ってしまうと Marvel (旧: Aquantia) AQtion AQC107)

ソフトウェア (Linux)

F2-422 は SSH 接続ができるので、実際に接続していろいろ確認していく。

まずは sudo で root になる。 パスワードはセットアップ時に指定したやつ。

[zeriyoshi@ZeriNAS ~]$ sudo su -
Password:
[root@ZeriNAS ~]#
Kernel

カーネルuname -a で確認。

[root@ZeriNAS ~]# uname -a
Linux ZeriNAS 4.19.165+ #44 SMP Fri Mar 19 18:11:01 CST 2021 x86_64 GNU/Linux

予想通り Linux だった。 Linux なのはいいのだが公式サイトでソースコードが公開されていない。 GPL 違反なのでなんとかしてほしい。

あとちょっとカーネルが古い。

Network

ip a で確認

[zeriyoshi@ZeriNAS ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
3: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 6c:bf:b5:01:d5:2a brd ff:ff:ff:ff:ff:ff
    inet 169.254.254.152/16 brd 169.254.255.255 scope global eth0
       valid_lft forever preferred_lft forever
4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
5: gre0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/gre 0.0.0.0 brd 0.0.0.0
6: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
9: ip6_vti0@NONE: <NOARP> mtu 1332 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
10: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
11: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
12: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1000
    link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
13: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 6c:bf:b5:01:d5:2b brd ff:ff:ff:ff:ff:ff
    inet 169.254.253.199/16 brd 169.254.255.255 scope global eth1
       valid_lft forever preferred_lft forever
14: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 6c:bf:b5:01:dc:97 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global eth2
       valid_lft forever preferred_lft forever
    inet6 <IPv6 Global Address>/64 scope global dynamic mngtmpaddr
       valid_lft 2591999sec preferred_lft 604799sec
    inet6 <IPv6 Link Local Address>/64 scope link
       valid_lft forever preferred_lft forever

意味はないけどせっかくなので 10GbE ポート (eth2) を利用している。

で、IPv6 アドレスが割り当てられている。 これはちょっと嫌な予感がしたので後輩に確認してもらったところ IPv6 ですべてがオープンになっていた。

NAT がない環境で何も設定せずに使うと危険だ。

PCI Express

次に lspciPCI Express 接続デバイスを確認。

[root@ZeriNAS ~]# lspci
00:00.0 Class 0600: Device 8086:5af0 (rev 0b)
00:02.0 Class 0300: Device 8086:5a85 (rev 0b)
00:0e.0 Class 0403: Device 8086:5a98 (rev 0b)
00:0f.0 Class 0780: Device 8086:5a9a (rev 0b)
00:12.0 Class 0106: Device 8086:5ae3 (rev 0b)
00:13.0 Class 0604: Device 8086:5ad8 (rev fb)
00:13.2 Class 0604: Device 8086:5ada (rev fb)
00:14.0 Class 0604: Device 8086:5ad6 (rev fb)
00:14.1 Class 0604: Device 8086:5ad7 (rev fb)
00:15.0 Class 0c03: Device 8086:5aa8 (rev 0b)
00:1f.0 Class 0601: Device 8086:5ae8 (rev 0b)
00:1f.1 Class 0c05: Device 8086:5ad4 (rev 0b)
01:00.0 Class 0200: Device 1d6a:d107 (rev 02)
02:00.0 Class 0200: Device 10ec:8168 (rev 15)

oh... PCI Vendor Ids がない... というわけで落としてくる

[root@ZeriNAS ~]# curl -O http://pci-ids.ucw.cz/v2.2/pci.ids
-bash: curl: command not found

curl がない... wget もないようだ。 と思ったら ter_curlter_wget という実行ファイルがある模様。もしかしてそのまま使えるのでは?

[root@ZeriNAS ~]# ter_curl -O http://pci-ids.ucw.cz/v2.2/pci.ids
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1237k  100 1237k    0     0   412k      0  0:00:03  0:00:03 --:--:--  331kl
[root@ZeriNAS ~]# ls
pci.ids

いけた。再度 lspci で確認してみる。

[root@ZeriNAS ~]# lspci -i pci.ids
00:00.0 Host bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge (rev 0b)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 500 (rev 0b)
00:0e.0 Audio device: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster (rev 0b)
00:0f.0 Communication controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Trusted Execution Engine (rev 0b)
00:12.0 SATA controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SATA AHCI Controller (rev 0b)
00:13.0 PCI bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #1 (rev fb)
00:13.2 PCI bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port A #3 (rev fb)
00:14.0 PCI bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #1 (rev fb)
00:14.1 PCI bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series PCI Express Port B #2 (rev fb)
00:15.0 USB controller: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series USB xHCI (rev 0b)
00:1f.0 ISA bridge: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface (rev 0b)
00:1f.1 SMBus: Intel Corporation Celeron N3350/Pentium N4200/Atom E3900 Series SMBus Controller (rev 0b)
01:00.0 Ethernet controller: Aquantia Corp. AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] (rev 02)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)

特に特殊なものはついておらず、 RealtekNIC と Marvel (旧: Aquantia) の NIC が見えるだけだった。 個人的に SATAインターフェイスチップでもついているかと思っていたのだけどついていなかった。

SoC から生えている SATA 端子が 2port しかないはずなので、多分 4 ベイモデルではついていると思う。

USB

次に lsusb で USB を見ていく。

[root@ZeriNAS ~]# lsusb
Bus 002 Device 002: ID 0bda:8153
Bus 002 Device 001: ID 1d6b:0003
Bus 001 Device 002: ID 1000:1320
Bus 001 Device 001: ID 1d6b:0002

ids がないので何もわからない。 残念なことに lsusb は ids ファイルを指定できないし、数も少ないので手動で照らし合わせる。

Bus 002 Device 002: ID 0bda:8153 Realtek Semiconductor RTL8153 Gigabit Ethernet Adapter
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 1000:1320 Speed Tech Flash-Disk
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

らしい。特に変わったものはついていなかった。 さっき内部 USB 端子に接続されていたディスクも見える。

Block Devices

次に lsblk でブロックデバイス一覧を見てみる。この結果は RAID1 構成が完了した状態のもの。

[root@ZeriNAS ~]# lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda             8:0    0   7.3T  0 disk
|-sda1          8:1    0   285M  0 part
|-sda2          8:2    0   1.9G  0 part
| `-md9         9:9    0   1.9G  0 raid1 /
|-sda3          8:3    0   977M  0 part
| `-md8         9:8    0 976.4M  0 raid1 [SWAP]
`-sda4          8:4    0   7.3T  0 part
  `-md0         9:0    0   7.3T  0 raid1
    `-vg0-lv0 252:0    0   7.3T  0 lvm   /mnt/md0
sdb             8:16   0   7.3T  0 disk
|-sdb1          8:17   0   285M  0 part
|-sdb2          8:18   0   1.9G  0 part
| `-md9         9:9    0   1.9G  0 raid1 /
|-sdb3          8:19   0   977M  0 part
| `-md8         9:8    0 976.4M  0 raid1 [SWAP]
`-sdb4          8:20   0   7.3T  0 part
  `-md0         9:0    0   7.3T  0 raid1
    `-vg0-lv0 252:0    0   7.3T  0 lvm   /mnt/md0

普通に mdraid で Software RAID が構成されていた。 どうやら OS 自体もディスクに格納されてパーティションが切られているみたい。 というか SWAP まで RAID1 が構成されている。

mdraid

mdraid で構成されているようなので状態を見てみる。

[root@ZeriNAS ~]# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : active raid1 sdb4[1] sda4[0]
      7810601984 blocks super 1.2 [2/2] [UU]
      bitmap: 0/59 pages [0KB], 65536KB chunk

md8 : active raid1 sdb3[72] sda3[0]
      999872 blocks super 1.2 [72/2] [UU______________________________________________________________________]

md9 : active raid1 sdb2[72] sda2[0]
      1998848 blocks super 1.2 [72/2] [UU______________________________________________________________________]

unused devices: <none>

なんか md8 と md9 がとんでもない構成になっている気がするが、メインのデータパーティションは普通だった。 とんでもない構成も動作的に実害はなさそうなのでスルー。

ps

ps で実行プロセス一覧を見てみる。

[root@ZeriNAS ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   4284  1556 ?        Ss   May03   0:03 init [3]
root         2  0.0  0.0      0     0 ?        S    May03   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   May03   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   May03   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   May03   0:00 [kworker/0:0H-kb]
root         8  0.0  0.0      0     0 ?        I<   May03   0:00 [mm_percpu_wq]
root         9  0.0  0.0      0     0 ?        S    May03   0:01 [ksoftirqd/0]
root        10  0.2  0.0      0     0 ?        I    May03   4:46 [rcu_sched]
root        11  0.0  0.0      0     0 ?        I    May03   0:00 [rcu_bh]
root        12  0.0  0.0      0     0 ?        S    May03   0:00 [migration/0]
root        13  0.0  0.0      0     0 ?        S    May03   0:00 [cpuhp/0]
root        14  0.0  0.0      0     0 ?        S    May03   0:00 [cpuhp/1]
root        15  0.0  0.0      0     0 ?        S    May03   0:00 [migration/1]
root        16  0.0  0.0      0     0 ?        S    May03   0:01 [ksoftirqd/1]
root        18  0.0  0.0      0     0 ?        I<   May03   0:00 [kworker/1:0H-kb]
root        19  0.0  0.0      0     0 ?        S    May03   0:00 [cpuhp/2]
root        20  0.0  0.0      0     0 ?        S    May03   0:00 [migration/2]
root        21  0.0  0.0      0     0 ?        S    May03   0:01 [ksoftirqd/2]
root        23  0.0  0.0      0     0 ?        I<   May03   0:00 [kworker/2:0H-kb]
root        24  0.0  0.0      0     0 ?        S    May03   0:00 [cpuhp/3]
root        25  0.0  0.0      0     0 ?        S    May03   0:00 [migration/3]
root        26  0.0  0.0      0     0 ?        S    May03   0:01 [ksoftirqd/3]
root        28  0.0  0.0      0     0 ?        I<   May03   0:00 [kworker/3:0H-kb]
root        29  0.0  0.0      0     0 ?        S    May03   0:00 [kdevtmpfs]
root        30  0.0  0.0      0     0 ?        I<   May03   0:00 [netns]
root        35  0.0  0.0      0     0 ?        S    May03   0:00 [kauditd]
root       581  0.0  0.0      0     0 ?        S    May03   0:00 [oom_reaper]
root       582  0.0  0.0      0     0 ?        I<   May03   0:00 [writeback]
root       583  0.0  0.0      0     0 ?        S    May03   0:05 [kcompactd0]
root       585  0.0  0.0      0     0 ?        I<   May03   0:00 [crypto]
root       586  0.0  0.0      0     0 ?        I<   May03   0:00 [kintegrityd]
root       588  0.0  0.0      0     0 ?        I<   May03   0:00 [kblockd]
root       767  0.0  0.0      0     0 ?        I<   May03   0:00 [ata_sff]
root       787  0.0  0.0      0     0 ?        I<   May03   0:00 [md]
root       790  0.0  0.0      0     0 ?        I<   May03   0:00 [edac-poller]
root       793  0.0  0.0      0     0 ?        I<   May03   0:00 [ib-comp-wq]
root       797  0.0  0.0      0     0 ?        I<   May03   0:00 [kworker/u9:0-xp]
root       798  0.0  0.0      0     0 ?        I<   May03   0:00 [ib-comp-unb-wq]
root       801  0.0  0.0      0     0 ?        I<   May03   0:00 [ib_mcast]
root       802  0.0  0.0      0     0 ?        I<   May03   0:00 [ib_nl_sa_wq]
root       905  0.0  0.0      0     0 ?        I<   May03   0:00 [rpciod]
root       906  0.0  0.0      0     0 ?        I<   May03   0:00 [xprtiod]
root       909  0.0  0.0      0     0 ?        I<   May03   0:00 [cfg80211]
root       953  0.5  0.0      0     0 ?        S    May03   9:28 [kswapd0]
root      1074  0.0  0.0      0     0 ?        S    May03   0:00 [ecryptfs-kthrea]
root      1076  0.0  0.0      0     0 ?        I<   May03   0:00 [nfsiod]
root      1088  0.0  0.0      0     0 ?        I<   May03   0:00 [cifsiod]
root      1089  0.0  0.0      0     0 ?        I<   May03   0:00 [cifsoplockd]
root      1111  0.0  0.0      0     0 ?        I<   May03   0:00 [xfsalloc]
root      1112  0.0  0.0      0     0 ?        I<   May03   0:00 [xfs_mru_cache]
root      1191  0.0  0.0      0     0 ?        I<   May03   0:00 [acpi_thermal_pm]
root      1196  0.0  0.0      0     0 ?        I<   May03   0:00 [nfit]
root      1234  0.0  0.0      0     0 ?        S    May03   0:00 [i915/signal:0]
root      1235  0.0  0.0      0     0 ?        S    May03   0:00 [i915/signal:1]
root      1236  0.0  0.0      0     0 ?        S    May03   0:00 [i915/signal:2]
root      1237  0.0  0.0      0     0 ?        S    May03   0:00 [i915/signal:6]
root      1317  0.0  0.0      0     0 ?        I<   May03   0:00 [iscsi_eh]
root      1334  0.0  0.0      0     0 ?        I<   May03   0:00 [scst_release_ac]
root      1342  0.0  0.0      0     0 ?        S<   May03   0:00 [scst_uid]
root      1353  0.0  0.0      0     0 ?        S    May03   0:00 [scstd0]
root      1354  0.0  0.0      0     0 ?        S    May03   0:00 [scstd1]
root      1355  0.0  0.0      0     0 ?        S    May03   0:00 [scstd2]
root      1356  0.0  0.0      0     0 ?        S    May03   0:00 [scstd3]
root      1357  0.0  0.0      0     0 ?        S<   May03   0:00 [scst_initd]
root      1358  0.0  0.0      0     0 ?        S<   May03   0:00 [scsi_tm]
root      1359  0.0  0.0      0     0 ?        S<   May03   0:00 [scst_mgmtd]
root      1363  0.0  0.0      0     0 ?        S    May03   0:00 [scst_usr_cleanu]
root      1366  0.0  0.0      0     0 ?        S    May03   0:00 [iscsird0_0]
root      1367  0.0  0.0      0     0 ?        S    May03   0:00 [iscsird0_1]
root      1368  0.0  0.0      0     0 ?        S    May03   0:00 [iscsird0_2]
root      1369  0.0  0.0      0     0 ?        S    May03   0:00 [iscsird0_3]
root      1370  0.0  0.0      0     0 ?        S    May03   0:00 [iscsiwr0_0]
root      1371  0.0  0.0      0     0 ?        S    May03   0:00 [iscsiwr0_1]
root      1372  0.0  0.0      0     0 ?        S    May03   0:00 [iscsiwr0_2]
root      1373  0.0  0.0      0     0 ?        S    May03   0:00 [iscsiwr0_3]
root      1504  0.0  0.0      0     0 ?        I<   May03   0:00 [isert_conn_wq]
root      1507  0.0  0.0      0     0 ?        I<   May03   0:00 [scstlclaen]
root      1509  0.0  0.0      0     0 ?        S    May03   0:00 [scsi_eh_0]
root      1510  0.0  0.0      0     0 ?        I<   May03   0:00 [scsi_tmf_0]
root      1515  0.0  0.0      0     0 ?        I<   May03   0:00 [nvme-wq]
root      1517  0.0  0.0      0     0 ?        I<   May03   0:00 [nvme-reset-wq]
root      1518  0.0  0.0      0     0 ?        I<   May03   0:00 [nvme-delete-wq]
root      1530  0.0  0.0      0     0 ?        S    May03   0:00 [scsi_eh_1]
root      1531  0.0  0.0      0     0 ?        I<   May03   0:00 [scsi_tmf_1]
root      1534  0.0  0.0      0     0 ?        S    May03   0:00 [scsi_eh_2]
root      1535  0.0  0.0      0     0 ?        I<   May03   0:00 [scsi_tmf_2]
root      1545  0.0  0.0      0     0 ?        I<   May03   0:00 [target_completi]
root      1546  0.0  0.0      0     0 ?        I<   May03   0:00 [tmr-rd_mcp]
root      1547  0.0  0.0      0     0 ?        I<   May03   0:00 [xcopy_wq]
root      1602  0.0  0.0      0     0 ?        I<   May03   0:00 [ixgbe]
root      1604  0.0  0.0      0     0 ?        I<   May03   0:00 [ixgbevf]
root      1656  0.0  0.0      0     0 ?        I<   May03   0:00 [uas]
root      1685  0.0  0.0      0     0 ?        I<   May03   0:00 [raid5wq]
root      1688  0.0  0.0      0     0 ?        I<   May03   0:00 [bcache]
root      1689  0.0  0.0      0     0 ?        I<   May03   0:00 [bch_journal]
root      1694  0.0  0.0      0     0 ?        I<   May03   0:00 [dm_bufio_cache]
root      1695  0.0  0.0      0     0 ?        I<   May03   0:00 [kmpathd]
root      1696  0.0  0.0      0     0 ?        I<   May03   0:00 [kmpath_handlerd]
root      1702  0.0  0.0      0     0 ?        I<   May03   0:00 [rdma_cm]
root      1762  0.0  0.0      0     0 ?        I<   May03   0:00 [ipv6_addrconf]
root      1783  0.0  0.0      0     0 ?        I<   May03   0:00 [xprtrdma_receiv]
root      1784  0.0  0.0      0     0 ?        I<   May03   0:00 [kstrp]
root      1787  0.0  0.0      0     0 ?        I<   May03   0:00 [ceph-msgr]
root      1843  0.2  0.0      0     0 ?        I<   May03   4:02 [kworker/3:1H-kb]
root      1852  0.2  0.0      0     0 ?        I<   May03   3:14 [kworker/2:1H-kb]
root      1862  0.0  0.0      0     0 ?        S    May03   0:00 [scsi_eh_3]
root      1863  0.0  0.0      0     0 ?        I<   May03   0:00 [scsi_tmf_3]
root      1864  0.0  0.0      0     0 ?        S    May03   0:00 [usb-storage]
root      1889  0.2  0.0      0     0 ?        I<   May03   3:24 [kworker/0:1H-kb]
root      1897  0.0  0.0      0     0 ?        S    May03   0:01 [md9_raid1]
root      1912  0.2  0.0      0     0 ?        I<   May03   3:23 [kworker/1:1H-kb]
root      1917  0.0  0.0      0     0 ?        S    May03   0:00 [jbd2/md9-8]
root      1918  0.0  0.0      0     0 ?        I<   May03   0:00 [ext4-rsv-conver]
root      1970  0.0  0.0      0     0 ?        I<   May03   0:00 [atlantic]
root      2102  0.0  0.0   6400  1752 ?        S    May03   0:03 /sbin/syslogd -n
root      2105  0.0  0.1   8548  5784 ?        S    May03   0:00 /sbin/klogd -n
root      2120  0.0  0.0   4296    96 ?        Ss   May03   0:00 /usr/sbin/acpid -n
dbus      2143  0.0  0.0  30084  2000 ?        Ss   May03   0:00 dbus-daemon --system
root      2675  0.0  0.1  35820  6416 ?        Ss   May03   0:00 nginx: master process /usr/sbin/nginx -p /var/ -c /etc/nginx/nginx.conf
root      2681  0.0  0.0  20100  2916 ?        Ss   May03   0:00 /sbin/udevd -d
root      2919  0.0  0.1  87896  6500 ?        Ss   04:26   0:00 sshd: zeriyoshi [priv]
zeriyos+  2929  0.0  0.1  87896  4848 ?        R    04:26   0:01 sshd: zeriyoshi@pts/0
zeriyos+  2931  0.0  0.0  32372  3612 pts/0    Ss   04:26   0:00 -bash
root      3179  0.1  0.4 1462164 17016 ?       Sl   May03   2:41 /sbin/nasips
root      3210  0.0  0.2 1455076 9124 ?        Sl   May03   0:06 /sbin/regcloud
root      3214  0.0  0.0  13724  2672 ?        S    May03   1:15 /bin/bash /sbin/restart_service
root      3303  0.6  0.0 460000   136 ?        Sl   May03  10:43 /usr/sbin/syscontrol /tmp/sys_log 0
root      3404  0.0  0.4 1315200 16376 ?       Ssl  May03   0:02 [TOSDeamon]
root      3465  0.0  0.0      0     0 ?        S    May03   0:00 [md8_raid1]
root      3511  1.8  0.0      0     0 ?        S    May03  29:40 [md0_raid1]
root      3532  0.0  0.0      0     0 ?        I<   May03   0:00 [kdmflush]
root      3580  0.0  0.0      0     0 ?        I<   May03   0:00 [kcopyd]
root      3616  0.0  0.0      0     0 ?        I<   May03   0:00 [ext4-rsv-conver]
root      3742  0.0  0.0  10856  1960 ?        Ss   May03   0:00 /usr/bin/rpcbind
root      3744  0.0  0.0  11192  2388 ?        Ss   May03   0:00 rpc.statd
root      3751  0.0  0.0      0     0 ?        I<   May03   0:00 [kworker/u9:1-xp]
root      3752  0.0  0.0      0     0 ?        S    May03   0:00 [lockd]
root      3755  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3756  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3757  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3758  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3759  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3760  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3761  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3762  0.0  0.0      0     0 ?        S    May03   0:00 [nfsd]
root      3764  0.0  0.0  23296   352 ?        Ss   May03   0:00 rpc.idmapd
root      3766  0.0  0.0  17580   612 ?        Ss   May03   0:00 rpc.mountd
redis     3836  0.1  0.0  48124  2920 ?        Ssl  May03   2:40 /usr/bin/redis-server 127.0.0.1:6379
root      4039  0.0  0.0   7080  2012 ?        Ss   May03   0:07 mdadm --monitor --scan --daemonise --syslog --delay=10 --program=/etc/init.d/nas/mdadm-monitor
root      4040  0.0  0.0  15440  1072 tty1     Ss+  May03   0:00 /sbin/getty -L tty1 0 vt100
root      4066  0.0  0.0      0     0 ?        I    01:15   0:00 [kworker/2:0]
root      4126  0.0  0.0      0     0 ?        I    May03   0:12 [kworker/2:2-eve]
root      4212  0.0  0.1  35848  4040 ?        Ss   May03   0:00 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups
root      4332  0.0  0.0   6400  1784 ?        Ss   May03   0:01 crond -L /var/log/crond.log
root      4358  0.0  0.0 102964  3856 ?        Ssl  May03   0:43 /usr/bin/msgcenter
root      5104  0.0  0.0      0     0 ?        I    04:44   0:00 [kworker/3:0-mm_]
root     11156  0.0  0.0      0     0 ?        I    02:02   0:00 [kworker/1:1-rcu]
root     12892  0.0  0.0      0     0 ?        I    04:59   0:02 [kworker/u8:2-ev]
root     15385  2.7  0.5 440096 21652 ?        S    05:16   2:14 /usr/sbin/smbd -D
root     18407  0.0  0.0      0     0 ?        I    05:35   0:00 [kworker/0:0]
root     19682  0.0  0.0      0     0 ?        I    May03   0:06 [kworker/0:1-mm_]
root     21294  0.0  0.5 340232 19868 ?        S    02:52   0:08 /usr/sbin/smbd -D
root     22024  0.0  0.3 356352 14036 ?        Ss   May03   0:01 php-fpm: master process (/etc/nginx/php-fpm.conf)
root     22025  0.1  0.9 437128 35708 ?        S    May03   0:37 php-fpm: pool TOS
root     22026  0.1  0.8 437068 32816 ?        S    May03   0:36 php-fpm: pool TOS
root     22027  0.1  0.8 436856 34236 ?        S    May03   0:35 php-fpm: pool TOS
root     22028  0.1  0.8 436888 34240 ?        S    May03   0:35 php-fpm: pool TOS
root     22029  0.1  0.8 436916 31680 ?        S    May03   0:35 php-fpm: pool TOS
root     24335  0.0  0.0      0     0 ?        I    May03   0:04 [kworker/3:1-eve]
root     24834  0.0  0.1  85288  4976 pts/0    S    06:18   0:00 sudo su -
root     24835  0.0  0.0  32372  3608 pts/0    S    06:18   0:00 -bash
root     25292  0.0  0.0      0     0 ?        I    06:21   0:00 [kworker/u8:0-ev]
avahi    26511  0.0  0.0  38636  3220 ?        S    May03   0:05 avahi-daemon: running [ZeriNAS.local]
root     26683  0.0  0.1  52948  5084 ?        S    May03   0:13 nginx: worker process
root     26685  0.0  0.1  52920  5140 ?        S    May03   0:04 nginx: worker process
root     26686  0.0  0.1  52792  5056 ?        S    May03   0:00 nginx: worker process
root     26687  0.0  0.1  52920  5176 ?        S    May03   0:00 nginx: worker process
root     27098  0.0  0.0      0     0 ?        I    May03   0:04 [kworker/1:0-mm_]
root     27104  0.0  0.4 327528 17212 ?        Ss   May03   0:00 /usr/sbin/smbd -D
root     27106  0.0  0.1 326240  5448 ?        S    May03   0:22 /usr/sbin/smbd -D
root     27107  0.0  0.1 318052  4576 ?        S    May03   0:00 /usr/sbin/smbd -D
root     27108  0.0  0.1 335708  6648 ?        Sl   May03   0:00 /usr/sbin/smbd -D
root     27183  0.0  0.2 252984  9828 ?        Ss   May03   0:17 /usr/sbin/nmbd -D
root     27730  0.0  0.0  22100  1672 ?        S    06:37   0:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /bin/sleep 2
root     27731  0.0  0.0  27532  2400 pts/0    R+   06:37   0:00 ps aux
root     28868  0.0  0.0 627912  2532 ?        Sl   May03   0:03 /usr/sbin/upnpd eth0 eth0

特に変なものはなさそう。 あと、 WebUI が nginx と PHP で構成されているのがわかった。

一応変といえば変かもしれないので TOSDaemon も見てみたが、アプリ周りを動かすための Golang (Gin) で書かれた Web アプリケーションのようだった。

[zeriyoshi@ZeriNAS home]$ TOSDeamon
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /app/language             --> TOSDeamon/customRouter.(*Router).HandleLanguage-fm (4 handlers)
[GIN-debug] POST   /app/install              --> TOSDeamon/customRouter.(*Router).HandleAppInstall-fm (4 handlers)
[GIN-debug] POST   /app/state                --> TOSDeamon/customRouter.(*Router).HandleAppState-fm (4 handlers)
[GIN-debug] POST   /app/handinfo             --> TOSDeamon/customRouter.(*Router).HandleHandInfo-fm (4 handlers)
[GIN-debug] POST   /app/handinstall          --> TOSDeamon/customRouter.(*Router).HandleHandInstall-fm (4 handlers)
[GIN-debug] GET    /app/list                 --> TOSDeamon/customRouter.(*Router).HandleAppList-fm (4 handlers)
[GIN-debug] Listening and serving HTTP on :5050
[GIN-debug] [ERROR] listen tcp :5050: bind: address already in use
PHP

PHPer なので PHP について見ていく。

とりあえずバージョン

[root@ZeriNAS ~]# php --version
PHP 7.1.13 (cli) (built: Sep 29 2019 11:42:02) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.13, Copyright (c) 1999-2017, by Zend Technologies

oh... EOL 済みの 7.1 ...

WebUI を見ていると、どうにも PHP オンリーじゃできなそうなこともやっている気がする。 もしかして、と思って extension を見てみた。

[root@ZeriNAS ~]# php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
intl
json
ldap
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
php_terra_master
posix
readline
redis
Reflection
session
shmop
SimpleXML
snmp
soap
sockets
SPL
sqlite3
standard
sysvshm
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

php_terra_master という謎の拡張が読み込まれていた。

何をやっているのか気になるので確認してみたが、 tos_encrypt_str という関数を提供しているだけのようだった。 クラスとか定数とかの定義は特になし。

[root@ZeriNAS ~]# php -r 'var_dump((new ReflectionExtension("php_terra_master"))->getFunctions());'
array(1) {
  ["tos_encrypt_str"]=>
  object(ReflectionFunction)#2 (1) {
    ["name"]=>
    string(15) "tos_encrypt_str"
  }
}

実際に動かしてみた。が、なんの意味があるのかは不明。 decrypt なさそうだしただのハッシュ関数なのだろうか。

[root@ZeriNAS ~]# php -r 'echo tos_encrypt_str("bongo") . PHP_EOL;'
5773253a486660224893d1b76e106420

というわけで、 extension で何かしら特殊なことをやってるわけではなさそう。 だとすると PHP スクリプトでシェルをバンバン叩いていることになるのでう~んという感じ。

総評

  • それなりに知識のあるユーザー向け
    • IPv6 全オープンの仕様は割とヤバいと思う
    • 日本語設定時に WebUI が死ぬのはアレだけど...
  • 値段の割には良くできている
    • ロジックボードや筐体の作りも良い
    • ただファンが静音寄りすぎ (冷えてない) 気がする
      • ファンを全力にしても HDD を酷使すると 55 ℃を超える
        • WD WD80EFZX (HGST OEM Helium 5400rpm) で使用時

作業メモ

以下、自分がどうセットアップしたかのメモ。

HDD を引っこ抜く

NAS というかサーバーから HDD を引っこ抜く。 久々に分解したらとんでもないくらいホコリがついていた。

f:id:zeriyoshi:20210504070814j:plain

f:id:zeriyoshi:20210504070833j:plain

トレイに HDD をセットして差し込む。ネジ止めは WD80EFZX の仕様上 3 箇所しかできない。

f:id:zeriyoshi:20210504071015j:plain

とりあえず HDD 1 台接続した状態でセットアップを完了させる。 セットアップ時に HDD はクイックフォーマットされる。

セットアップが終わったらもう一台の HDD を接続して SSH で接続し、コマンドで適当な場所に mount する。

[zeriyoshi@ZeriNAS ~]$ sudo su -
Password:
[root@ZeriNAS ~]# cd
[root@ZeriNAS ~]# mkdir temp_mount
[root@ZeriNAS ~]# mount -o degraded,ro /dev/sdb temp_mount

で、 NAS 管理下にコピーする

[root@ZeriNAS ~]# cd temp_mount
[root@ZeriNAS temp_mount]# cp -R * /home/zeryoshi/home

コピーが終わったら umount してディレクトリを削除

[root@ZeriNAS ~]# cd
[root@ZeriNAS ~]# umount temp_mount
[root@ZeriNAS ~]# rmdir temp_mount

WebUI を開き、 コントロールパネル > ストレージプール > 編集 で管理対象外になっている HDD を追加する。 この時 WebUI が日本語設定だと JavaScript が構文エラーを起こして動かなくなるので注意。

後は RAID1 の構築が完了するのを待って終わり。 (大体丸一日かかった)