TerraMaster F2-422
TerraMaster F2-422 を買った。
購入動機
- 自宅サーバーを本格的に運用するため、 NAS とサーバーを分離したかった
- btrfs RAID1 をやめたかった
- btrfs が嫌いとか信頼性がとかではない
- 単に自分の用途だと不要だった
- モニタリングが手動で壊れても気づけない可能性があった
- セールしていて安かった
なんとなく買いたかった
開封~動作確認
電源アダプタを確認。 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 個使った。
ハードウェア (分解)
動作も問題なさそうなので分解してみる。
バックパネルを固定している 4 本のネジを外して引っ張るだけ。簡単。
そういえば初期ロットでは HDMI 端子が隠されていたようだけど普通に使える状態になっていた。
バックパネルには 8cm の冷却ファンがついている。メーカーは不明。
バックパネルを外すときに基板に接続されているファンコネクタを外す必要があるので注意。 ロジックボードにはもう一つコネクタがついていた。 4 ベイモデルと共通化されている?
あとはフロントパネル側を引っ張ればケースから外せる。
ロジックボードに未使用のメモリスロットを発見。仕様的に DDR3L SO-DIMM を追加できそう。 丁寧に搭載方法もシールで記載されている。
その他、オンボードで LPDDR3 メモリ (SK Hynix H5TC4G64EFR) が搭載されていた。 写真には写っていないが裏側にも実装されていて計 8 枚実装されている。
メモリチップの仕様としては DDR3L (1.35V) の 4Gbit (512MiB) 品。 8 枚なので仕様通り 4 GiB 。 メモリを増設する際はこれに合わせて PC3-14900 (DDR3-1866) のものを購入すれば良さそう。
ネジを外してロジックボードが取れた。内部 USB ポートに USB メモリが刺さっていた。 最初はこれに OS がインストールされているのかと思っていた。
ちなみに、フロントパネルの LED / 電源ボタン用にコネクタが接続されているので注意。 この後取り外した。
ロジックボードを見ていく。 NIC として Realtek RTL8153B (USB 3.0) と Realtek RTL8111H (PCI Express 1.1 1lane) が搭載されている。 1GbE ポートはこれらで賄われている模様。
PCI Express と USB 3.0 でバスが分離されているのは冗長化という意味で良さそうだが、ボンディングするなら微妙かも。 速度面求めるなら 10GbE があるんだからそっちを使えということかもしれない。
10GbE の NIC についてはヒートシンクがつけられており、手元にグリスもなかったので外さなかった。どうせ 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
次に lspci
で PCI 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_curl
や ter_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)
特に特殊なものはついておらず、 Realtek の NIC と 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 を引っこ抜く
旧 NAS というかサーバーから HDD を引っこ抜く。 久々に分解したらとんでもないくらいホコリがついていた。
トレイに HDD をセットして差し込む。ネジ止めは WD80EFZX の仕様上 3 箇所しかできない。
とりあえず 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 の構築が完了するのを待って終わり。 (大体丸一日かかった)