本当にどうでもいいメモなどをたまに書く程度。

TDK GBDriver GS1 SSD の S.M.A.R.T. 情報

日付:
タグ:

TDK の GBDriver GS1 という SSD を中古で入手したのだが、この S.M.A.R.T. 情報についてのメモ。

TL;DR

  • 使用時間や電源投入回数は『生の値 * 256 + 最悪値 = 実際の値』
  • 総書込量は 64 項目で『(生の値 * 256 + 最悪値) * 50MB = 総書込量』

詳細

まず S.M.A.R.T. 情報の項目自体かなり少ない。

ID 項目名
09 使用時間
0C 電源投入回数
64 ベンダ固有
AB ベンダ固有
AC ベンダ固有
AE ベンダ固有
B8 エンドツーエンドエラー
C7 UltraDMS CRC エラー数
FB ベンダ固有
FC ベンダ固有

といった具合。項目名は CrystalDiskInfo (8.16.4) による。

また、CrystalDiskInfo で表示される電源投入回数が増えない。
絶対増えないわけではないのだが、生の値の扱いが普通ではなく、次の式による。

生の値 * 256 + 最悪値 = 実際の数

そのため電源投入256回で CrystalDiskInfo での表示が1増えることになる。 使用時間も同様と考えられるので、256時間で生の値が1増えるはずだ。1時間で最悪値が1増えることは確認した。

総書込量は S.M.A.R.T. の項目としては存在しないが、64 項目で近い値が得られるようだ。
数分程度での検証だが、約 50MB の書込で 64 項目の最悪値が1増加し、最悪値が256に達すると生の値が1増加し最悪値が0になることを確認した。

(生の値 * 256 + 最悪値) * 50MB = 総書込量

なお CrystalDiskInfo を使う場合、生の値は16進法、最悪値は10進法の表示であることに留意。


この SSD のシリーズは SLC、pSLC、MLC とバリエーションがあるが、私が入手した個体がどれなのか知る術は今のところ見つけられていない。

メモ置き場を Netlify から Cloudflare Pages に移転した

日付:

これまで本サイトは Netlify に収容してきたが、このたび Cloudflare Pages に移転した。
Netlify は無料プランの場合、日本からのアクセスはシンガポールのサーバーで受けるが、Cloudflare Pages なら日本国内のサーバーで受けてくれるので。

本サイトは生成に Hugo を使用し、電力料金比較表だけは PHP (php-cli) で Hugo 用のソースを出力するという変則的な構成だが、Cloudflare Pages でも何一つ変更することなくこなしてくれている。

Cloudflare DNS を使わず、DNS CAA レコードを使っている場合の注意点

ここだけ少し引っかかった。

  • そのドメイン名で Cloudflare DNS を使っていない
  • DNS CAA レコードで SSL 証明書を発行できる認証局を指定している
  • その認証局に Cloudflare が利用している認証局が含まれていない

という条件を満たす場合に、CNAME レコードを設定しただけでは Active にならず、Inactive (Error) になってしまう。
自前の DNS と Let’s Encrypt を使っている場合が該当する。
Cloudflare Pages では Cloudflare 発行の SSL 証明書を使うことになっているので、それが発行できる状態でないとダメ、というわけだ。

そのため一度 Remove domain し、Cloudflare が SSL 証明書を発行できるように CAA レコードを追加する必要がある。

example.com.	IN	CAA	0 issue "digicert.com"
example.com.	IN	CAA	0 issue "comodoca.com"

レコードは Cloudflare の説明による。
Cloudflare DNS では issuewild も設定されるようだが、Cloudflare Pages に本サイトを収容する際には必要でなかった。

2021年 VPS

日付:
タグ:

半導体の価格高騰により、VPS も価格が上昇している印象。また、HDD ではなく SSD、中でも NVMe を採用する業者が増えた一方、ストレージ容量は下がっている。


8月下旬。あまりの安さについつい。

  • Boomer.host (Dallas, TX, US)
    • 4.95 USD / year
    • OpenVZ / 1 vCPU / 512MB RAM / 5GB SSD / 180GB BW / 1 IPv4 / 1 IPv6

ブラックフライデー / サイバーマンデー (BF/CM) では、サーバーの地理的分散を進めるべく各地に。あとフラッシュセールに飛びついたり。

  • Time4VPS (Vilnius, LT)
    • 15 EUR / year
    • OpenVZ / 1 vCPU / 2GB RAM / 20GB SSD / 2TB BW (100Mbps) / 1 IPv4 / 1 IPv6
    • 自宅からの ping rtt avg: 270ms
  • WebHorizon (Warsaw, PL)
    • 16 USD / year
    • OpenVZ / 2 vCPU / 2GB RAM / 40GB NVMe / 15TB BW (1Gbps) / 1 IPv4 / IPv6 (/64)
    • 自宅からの ping rtt avg: 253ms
  • AlphaVPS (Sofia, BG)
    • 18.74 EUR / year
    • KVM / 2 vCPU / 2GB RAM / 15GB SSD / 1.5TB BW (1Gbps) / 1 IPv4 / IPv6 (/64)
    • 自宅からの ping rtt avg: 255ms
  • RackNerd (Buffalo, NY, US)
    • 12.79 USD / year
    • KVM / 1 vCPU / 1.2GB RAM (1GB swap) / 28GB SSD / 4TB BW / 1 IPv4 / no IPv6
    • 自宅からの ping rtt avg: 159ms
  • VirMach (Buffalo, NY, US)
    • 8.84 USD / year
    • KVM / 1 vCPU / 2GB RAM (256MB swap) / 35GB SSD / 3500GB BW / 1 IPv4 / no IPv6
    • 自宅からの ping rtt avg: 157ms
  • HostCram (Dallas, TX, US)
    • 7 USD / year
    • LXC / 1 vCPU / 1GB RAM (1.5GB swap) / 10GB NVMe / 1TB BW / 1 IPv4 / IPv6 (/48)
    • 自宅からの ping rtt avg: 143ms
  • DediPath (Jacksonville, FL, US)
    • 10 USD / year
    • OpenVZ / 1 vCPU / 1GB RAM / 20GB SSD / 10TB BW (1Gbps) / 1 IPv4 / 1 IPv6
    • 自宅からの ping rtt avg: 186ms
  • Zappie Host (Valdivia, Ros Rios, CL)
    • 6.75 USD / 6 month
    • LXC / 1 vCPU / 512MB RAM / 30GB SSD / 200GB BW (100Mbps) / 1 IPv4 / ? IPv6
    • 自宅からの ping rtt avg: 300ms

フラッシュセールに飛びついた結果、バッファローだけで RackNerd と VirMach がかぶってしまった。出た時間帯が逆なら、VirMach だけで RackNerd は契約しなかったところだが、まあこれがフラッシュセールというものだろう。
ダラスなんかもっとひどくて、2014年から使い続けてる VPSDime、昨年 BF/CM の RackNerd、今年夏の Boomer.host、そして今年 BF/CM の HostCram と4台もある。

とりあえず来年は RackNerd を1台更新しない方針。
ColoCrossing 再販で IPv6 がないからね! (まあそれは VirMach も同様だが)

ヴィルニュスとワルシャワもどちらか片方を残す方向で、地理的にはヴィルニュスの Time4VPS を残したいのだが、どうにもストレージが遅い。一方ワルシャワの WebHorizon は OpenVZ ながらストレージは NVMe だけあってサクサクなだけに、なおさら。


Gullo’s Hosting はメモリ 512MB 以上の VPS は BF/CM セールに出てこなかったので、後日これを契約。
このほかモルドヴァのキシナウというエキゾチックロケーションの割に安価というところに惹かれて AlexHost を契約。

  • Gullo’s Hosting (Sydney, AU)
    • 12 USD / year
    • OpenVZ / 1 vCPU / 1GB RAM / 20GB HDD / 1000GB BW / 1 IPv4 / IPv6 (/80)
    • 自宅からの ping rtt avg: 169ms
  • AlexHost (Chisinau, MD)
    • 11.88 EUR / year
    • KVM / 1 vCPU / 1536MB RAM / 10GB SSD / unmetered @ 100Mbps / 1 IPv4 / 16 IPv6 (not block)
    • 自宅からの ping rtt avg: 285ms

Gullo’s Hosting は2020年5月の記事だが、執筆時点でクーポンコードはまだ有効だった。
シンガポールの在庫が復活したら現在の 512MB RAM から 1GB RAM に乗り換えたいところ。

AlexHost は 10GB SSD だが、Debian イメージでは swap に 1GB、/boot で 600MB 食われて / は 8.4GB。
KVM でマウントできる ISO image に Debian bullseye があるので、いずれインストールし直そう。
IPv6 アドレスは1~16個から選択でき、1個でも16個でも料金は変わらないので16個にした。一応連続した16個が割り当てられているが、ブロックとしての割り当てではない。

systemd-networkd-wait-online が2分間のタイムアウトまで居座る

本来はネットワークアダプターが複数ある環境で片方 LAN ケーブルが抜けているといった状況で発生する問題のようだ。
Ethernet Servers の OpenVZ で、ネットワークアダプターは venet0 と venet0:1 の環境で発生した。

これによって再起動時に After=network-online.target になっているサービスが上がるまで時間がかかる。

Ethernet Servers は SolusVM での管理となっており、ネットワーク設定は /etc/network/interfaces、つまり ifupdown で行う。 したがって systemd-networkd 自体が必要ない。にもかかわらず systemd-networkd が動くようになっていた。systemd-networkd を停止、無効化すれば良い。

$ sudo systemctl stop systemd-networkd
$ sudo systemctl disable systemd-networkd

LXC で pdns-recursor が起動しない

HostCram の LXC ではこの対応が必要だった。Zappie Host の LXC では不要。

pdns-recursor.service の下記の行をコメントアウトする。

ProtectControlGroups=true
ProtectKernelTunables=true
$ sudo systemctl daemon-reload; sudo systemctl start pdns-recursor

HostCram の LXC でまず最初にやること

/etc/pam.d/common-session の末尾近くにある下記の行をコメントアウトする。

session        optional        pam_systemd.so

これは LXC における Debian の基本らしいのだが、HostCram の VM イメージではコメントアウトされていなかった。ではどうなるかというと、su 等がえらく待たされる。

HostCram はまだ LXC 運用に慣れていない印象で、最初は systemd-logind が mask されておらず ssh も systemd-logind がタイムアウトするまで延々待たされるということもあった。

Time4VPS の OpenVZ でパッケージ削りの際の注意点

TL;DR quota は消すな。

VM イメージには最初から色々パッケージが入っていて、正直使わないものが結構多いので、私はまず最初に削り倒すことから始める。
OpenVZ や LXC だとぶっちゃけ initramfs-tools すら使わないので、libklibc ごと削除しても問題なく動作する。
というわけで削っていった結果、再起動をかけたら延々何もできなくなる有様に陥った。
「再インストールするから VM 止めてくれ」とメイルしたら、「quota 消したら起動しないよ」と返事が。
というわけで quota は削除してはいけない。 これまで OpenVZ で quota 削除して問題になったことはなかったのだが。

/etc/resolv.conf が再起動で上書きされてつらい件の対策

Virtualisor や Proxmox VE が VM 起動時・再起動に /etc/resolv.conf を上書きしてしまうので、これへの対策。

SolusVM や Virtualizor 下の OpenVZ や KVM:
VM 内で /etc/resolv.conf を編集した後、

chattr +i /etc/resolv.conf

すると、その後は上書きされなくなる。

Proxmox VE 下の LXC:
chattr すると VM が起動しなくなるので、泥臭く crontab に上書きを仕込む。

$ sudo crontab -e
@reboot echo 'nameserver 127.0.0.1' > /etc/resolv.conf

(2022/01/26 追記)

WebHorizon のワルシャワだが、フランスに移転との連絡が入った。ワルシャワという場所を気に入っていただけに残念。こうなるとヴィルニュスの Time4VPS は継続するしかない。
移転先は OVH、たぶん Roubaix。
フランスでは Central.so のパリ (これも OVH 再販) KVM VPS を契約しているし、距離的にも HostSlick のレリスタット (オランダ) も近いしで、WebHorizon の解約を検討。

VXL Itona Md76 シンクライアント

日付:

ヤフオクに掘り出し物でもないかと探していたら出てきた (お値段1,000円)、インド製のシンクライアント。
メーカー VXL がインドのメーカーだけあって製造もインド。

  • VXL Itona Md76
  • CPU : VIA Eden X2 U4200 1.2GHz (2コア)
  • メモリ : DDR3 SO-DIMM 2GB
  • ストレージ : SATA ハーフスリム 16GB
  • OS : Windows Embedded POSReady 7

HP t510 と同じ VIA Eden X2 U4200 を搭載しているが、1.0GHz ではなく 1.2GHz 動作になっている。

ストレージは SATA ハーフスリム (JEDEC MO-297) SSD 16GB 搭載で、M.2 2242 変換基板への換装は可能 (ただしネジ止めできない)。
mSATA 変換基板では横のコンデンサーと干渉して装着できない。

OS は珍しい Windows Embedded POSReady 7 が入っていたが、シェルが上がらない状態になっていた。Ctrl-Alt-Del からタスクマネージャーを開いて新しいタスクの実行をやれば Explorer や IE9 が動くのは確認した。
Windows 7 系でも POSReady 7 は延長サポート終了まで半年弱残っているが、今更直して使うほどの価値がある OS ではないね。

なお出品者はまだ在庫があるようで、現在も出品されている (「VXL ltona mdyy series」で検索。本来 Itona なのだが出品者のミスで ltona、大文字アイが小文字エルになっている)。
本体だけの出品で AC アダプターが付属しないので、19V、プラグ外径 5.5mm 内径 2.5mm のものが別途必要。電流はたぶん 2A もあれば足りる。

2020年ブラックフライデー VPS

日付:
タグ:

自分で契約したものばかり。

まだ契約できそうなもの

  • Ethernet Servers
    • https://www.ethernetservers.com/clients/store/ssd-linux-vps-special-offers
    • クーポンコード BLACKFRIDAY-VPS で 25% off。recurring なので翌年以降も 25% off。↓の金額はクーポン適用後。
    • 場所 Los Angeles / New Jersey
    • OpenVZ
    • 30 GB SSD / 1 TB BW / 1 GB RAM / 1 IP / 1 CPU
      • 9 USD / year
    • 60 GB SSD / 2 TB BW / 2 GB RAM / 1 IP / 1 CPU
      • 15 USD / year
    • 70 GB SSD / 3 TB BW / 2.5 GB RAM / 1 IP / 1 CPU
      • 18.75 USD / year
    • $15 の LA を契約したが快適。私が LA を契約した時は IPv4 アドレスが2個ついていたが、29日夜現在は1個になっている。クーポンコードはまだ有効なようだ。
    • 29日夜に $9 の NJ も契約した。
  • Gullo’s Hosting
    • https://hosting.gullo.me/black-friday/
    • RAM 512MB のシンガポール VPS が 8 USD / year。UK LittleVZ とあるが、オーダー画面でイギリスかシンガポールか選べる。
    • 上記ページからのオーダーリンクでクーポンコードはあらかじめ入力されているのだが、適用されていない場合がある。Use a coupon code をクリックするとコードが入力されているので Redeem する。ここでカートが空になる場合があり、その場合はもう一度上記ページからリンクを開く。
    • サポートなし、返金なしが強調されているので不安に思う人もいるだろうが、この業者 (といってもたぶん個人) は LET や LES などのフォーラムでアクティブに活動しているので、サーバーダウン等は速やかに解決されると思われる。私は3年半ほど彼のサービスを利用していて、これまでトラブルはない。
    • シンガポールは日本から近いだけあって低レイテンシで、操作性は素晴らしい。
  • HostHatch
    • https://www.lowendtalk.com/discussion/168301
    • 15 USD / year
    • KVM
    • 1 CPU (12.5% dedicated, burstable up to 100%)
    • RAM 2GB
    • NVMe SSD 20GB
    • BW 2TB
    • 場所 アムステルダム / ストックホルム / ロサンゼルス / チューリッヒ / オスロ / ウィーン / ワルシャワ / ロンドン / シカゴ / ニューヨーク / シドニー / 香港 / マドリード / ミラノ
    • 場所の選択肢がとても多い。香港・マドリード・ミラノは即開通ではなく12月中開通のプレオーダー。
    • 私はマドリードをプレオーダーした。
    • 契約方法の早い話 : 業者のサイトでユーザー登録してデポジットを払い、サポートチケットを開く。

それ以外

  • ViridWeb
    • 6 USD / year
    • KVM
    • 1 vCPU
    • RAM 1GB
    • SSD 25GB
    • BW 1TB
    • 場所 オランダ
    • IP アドレスは IPv4 と IPv6 が1個ずつ
    • LET のフラッシュセールで契約。ところがこの業者、クーポンコードの有効数設定を盛大に間違えて大量の注文を受け入れてしまい、返金処理をしているようだ。私のは開通して現在使えているが、後からキャンセル返金となるかも知れない。
  • RackNerd
    • 8.57 USD / year
      • KVM
      • 1 vCPU
      • RAM 768MB
      • SSD 20GB
      • BW 3TB
      • 場所 シアトル
    • 8.79 USD / year
      • KVM
      • 1 vCPU
      • RAM 1.2GB
      • SSD 16GB
      • BW 4TB
      • 場所 ロサンゼルス
    • LET のフラッシュセールで2台契約。ここは PayPal 支払いが FastSpring 経由で、FastSpring が消費税を上乗せしてくる (↑の金額は上乗せ済み)。が、それでもかなりのお買い得。
  • HostSolutions.ro
    • 8.88 EUR / year
    • 1 vCPU
    • RAM 2GB
    • SSD 50GB
    • BW 10TB
    • 場所 ブカレスト
    • ルーマニアの業者。LET のフラッシュセールで契約。5日以内に開通とのことで、まだ開通していない。

ベンチマーク

スクリプトはこれ

Ethernet Servers ロサンゼルス

Processor:    Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
CPU cores:    1
Frequency:    2399.926 MHz
RAM:          2.0Gi
Swap:         256Mi
Kernel:       Linux 4.19.0 x86_64

Disks:
ploop*****     60G  HDD

CPU: SHA256-hashing 500 MB
    5.598 seconds
CPU: bzip2-compressing 500 MB
    7.690 seconds
CPU: AES-encrypting 500 MB
    2.319 seconds

ioping: seek rate
    min/avg/max/mdev = 135.2 us / 366.8 us / 130.2 ms / 1.73 ms
ioping: sequential read speed
    generated 6.65 k requests in 5.00 s, 1.62 GiB, 1.33 k iops, 332.3 MiB/s

dd: sequential write speed
    1st run:    467.30 MiB/s
    2nd run:    487.33 MiB/s
    3rd run:    445.37 MiB/s
    average:    466.66 MiB/s

IPv4 speedtests
    your IPv4:    ***.***.***.***

    Cachefly CDN:         63.82 MiB/s
    Leaseweb (NL):        5.74 MiB/s
    Softlayer DAL (US):   20.06 MiB/s
    Online.net (FR):      4.88 MiB/s
    OVH BHS (CA):         10.57 MiB/s

IPv6 speedtests
    your IPv6:    ****:****:****:****

    Leaseweb (NL):        2.48 MiB/s
    Softlayer DAL (US):   6.29 MiB/s
    Online.net (FR):      1.68 MiB/s
    OVH BHS (CA):         6.92 MiB/s

SSD は高速だが、ネットワークは微妙かな?

Ethernet Servers ニュージャージー

OS を入れ直したら起動しなくなったのだが、サポートチケットを開いたら17分で解決の返事が来た。

Processor:    Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
CPU cores:    1
Frequency:    2399.926 MHz
RAM:          1.0Gi
Swap:         256Mi
Kernel:       Linux 4.19.0 x86_64

Disks:
ploop*****     30G  HDD

CPU: SHA256-hashing 500 MB
    5.447 seconds
CPU: bzip2-compressing 500 MB
    7.106 seconds
CPU: AES-encrypting 500 MB
    2.241 seconds

ioping: seek rate
    min/avg/max/mdev = 49.9 us / 230.4 us / 12.8 ms / 414.2 us
ioping: sequential read speed
    generated 6.18 k requests in 5.00 s, 1.51 GiB, 1.24 k iops, 309.1 MiB/s

dd: sequential write speed
    1st run:    577.93 MiB/s
    2nd run:    527.38 MiB/s
    3rd run:    653.27 MiB/s
    average:    586.19 MiB/s

IPv4 speedtests
    your IPv4:    ***.***.***.***

    Cachefly CDN:         86.58 MiB/s
    Leaseweb (NL):        9.12 MiB/s
    Softlayer DAL (US):   34.57 MiB/s
    Online.net (FR):      4.69 MiB/s
    OVH BHS (CA):         43.86 MiB/s

IPv6 speedtests
    your IPv6:    ****:****:****:****

    Leaseweb (NL):        13.79 MiB/s
    Softlayer DAL (US):   30.17 MiB/s
    Online.net (FR):      10.69 MiB/s
    OVH BHS (CA):         48.66 MiB/s

SSD は速い。

アメリカ東海岸なのでヨーロッパやカナダからの転送がロサンゼルスより速いのは理解できるが、ダラスも速い。

日本からの経路はニューヨーク (NYC) 経由。データセンターは Internap (INAP) のニュージャージーということなので、マンハッタンからハドソン川を渡って西に数 km の Secaucus らしい。まさにニューヨーク都市圏の VPS だと言える。

安 VPS 界隈でよく業者が利用する ColoCrossing がニューヨーク州バッファローにデータセンターを構えているため、NY と書いてあってもバッファローという安 VPS がかなり多いのだが、これは州境こそまたぐもののよっぽど NYC に近い。

Gullo’s Hosting シンガポール

Processor:    Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz
CPU cores:    1
Frequency:    889.465 MHz
RAM:          512Mi
Swap:         -
Kernel:       Linux 4.19.0 x86_64

Disks:
ploop*****     10G  HDD

CPU: SHA256-hashing 500 MB
    6.025 seconds
CPU: bzip2-compressing 500 MB
    10.402 seconds
CPU: AES-encrypting 500 MB
    2.406 seconds

ioping: seek rate
    min/avg/max/mdev = 140.4 us / 291.9 us / 73.7 ms / 1.00 ms
ioping: sequential read speed
    generated 1.04 k requests in 5.00 s, 259.8 MiB, 207 iops, 51.9 MiB/s

dd: sequential write speed
    1st run:    38.05 MiB/s
    2nd run:    38.24 MiB/s
    3rd run:    38.34 MiB/s
    average:    38.21 MiB/s

IPv4 speedtests
    your IPv4:    ***.***.***.***

    Cachefly CDN:         110.25 MiB/s
    Leaseweb (NL):        13.51 MiB/s
    Softlayer DAL (US):   3.37 MiB/s
    Online.net (FR):      15.65 MiB/s
    OVH BHS (CA):         7.29 MiB/s

IPv6 speedtests
    your IPv6:    ****:****:****:****

    Leaseweb (NL):        15.24 MiB/s
    Softlayer DAL (US):   2.86 MiB/s
    Online.net (FR):      14.89 MiB/s
    OVH BHS (CA):         5.19 MiB/s

見た目上 CPU はかなり絞ってあるようだ (889.465 MHz) が、ベンチマーク所要時間はそう悪くない。ストレージは SSD ではなく HDD と思われる。

ファイルサーバーの HDD 交換

日付:
タグ:

2014年に Q1900-ITX でファイルサーバーをリプレイスしたのだが、常時稼働5年半を超え、RAID1 を構成する HDD 2台のうち片方でバッドセクターが生じた。
ちょうど特別定額給付金が入ったので、HDD を交換した。


これまで HDD は基本的に Western Digital を選んでいて、メイン PC の SSD すら WD 製品を使うほど WD 信者と言っても良さそうな私なわけだが……よりによって NAS 向けである WD Red HDD で SMR を採用という大ポカをやらかしたので私の忠誠心は急落。

10TB あたりで考えていたのだが、ちょうど最新モデルから WD Red の 10TB はヘリウム充填ではなくなり、結構うるさいというレビューが散見された。
12TB を見てみたら、東芝が一番安くてヘリウム充填なのでこれに決定 (MN07ACA12T)。

この東芝 12TB HDD、普段は静かなのだが、書き込み時は昔の HDD のようなゴリゴリ音なので気になる人は多いかも知れない。


ついでにシステムとデータの分離を図る。

手元で余っていた Crucial の 64GB SSD (RealSSD C300 CTFDDAC064MAG) にシステムを入れ、ファイルサーバーとして使うデータ部分を切り離すことで、今後の HDD 交換時もデータのみコピーすれば済むようにした。

どうせログぐらいしか書き込まれないのだから SSD でもいけるだろう……という考え。

Wyse 3030 N03D シンクライアント (3290)

日付:

ヤフオクに2台で1000円 (送料を含めると2000円弱) という超特価で大量出品されていたもの。
メモリなし、ストレージなし、AC アダプターなしでの出品であるせいか、特価なのに入札者が少なかった。まだ大量に出ている。

  • Wyse 3030 N03D
  • CPU : Intel Celeron N2807 1.6GHz (2コア)
  • メモリ : DDR3L SO-DIMM 1スロット (元は 4GB らしい)
  • ストレージ : mSATA mini (元は 16GB らしい)

AC アダプターは 12V 5.5/2.1mm。電流容量は 1A で足りるはずだが、2A ぐらいが安心かな。手元に転がってるという人も多そうだ。
我が家には (他機付属のものを除いて) 4台あった。
持っていなくても、AliExpress でも200円以下で買える (到着まで日数はかかるが)。

メモリは DDR3L SO-DIMM で上限は 4GB (Celeron N2807 の上限)。出荷時にすでに最大量を搭載しているわけだ。
私は中古でメモリなしだったので、とりあえず 2GB をつけた。

ストレージは mSATA mini (JEDEC MO-300B) SSD。miniPCIe ハーフサイズと同じ縦横の mSATA SSD で、普通の (フルサイズ) mSATA は長さ方向でヒートシンクに干渉するため装着できない。
これの調達が本機活用にあたって最大のネックになると思われる。
AliExpress の最安値は Goldendisk の 8GB だが、もう少し出せば KingSpec の 64GB になる。悩ましい。
とりあえず注文して現在到着待ち。

ストレージ到着待ちなので Memtest86+ ぐらいしかしていないが、動作中で 6~7W。AC アダプターをあやしい中華 AC アダプターに交換すると動作中で最大 8W (ワットチェッカー実測)。1W の差は AC アダプターの発熱と思われる。中華の方が熱い。


内部へのアクセスは、背面のネジ3個をはずして、製品情報タグが入っていない側の側面パネルを開ける。
前面側がヒンジで背面側が開くようなイメージで、背面側を手前にして本を開くように左右に開くと言えばいいか。結構固いので不安になるかも知れないが、思い切って開ける。勢いがつきすぎるとスピーカーのケーブルが抜けるが、挿し直せばいい。

閉める時はまず前面側を深めに入れて、背面側を押し込んでいく。
こうしないと側面パネルの前面側が浮く。
実際に私が購入したものは、2台とも側面パネルの前面側が浮いた状態で到着した。


(2020/07/08 追記)

別の出品者からもう2台落札してしまった。2台あわせて送料込1000円足らず。
状態は先の2台と同様で、メモリ、ストレージ、AC アダプターがない。
こんな値段で落札できてしまうのは、用意しなくてはならないものが多いからだろうか。
トータル3000円弱で4台手に入ったことになる。

側面パネルの全面側は、やはり浮いていた。


(2020/07/22 追記)

Debian を入れて idle 状態で 3~4W。CPU 1コア 100% 使用状態で 5~6W。

iCop EBOX-3310MX-AP

日付:

EBOX-3310A-JSK に続いての Vortex86 シリーズ搭載機。

  • iCop EBOX-3310MX-AP
  • CPU : DM&P Vortex86MX+ 933MHz
  • メモリ : DDR2 1GB オンボード
  • ストレージ : なし

EBOX-3310MX シリーズはバリエーション豊富だが、リセットボタンがないものを「『Auto Power On』機能があるもの」と位置づけているようだ。
リセットボタンがあるものは、電源スイッチを ON にしてもリセットボタンを押すまでは起動しない。


Vortex86MX+ は Vortex86DX 同様 586 互換の CPU で、686 互換ではない。
そのため Debian は jessie までの対応となる。

Vortex86DX3 は 686 互換のデュアルコアらしいので、いつか入手してみたいものだ。


ストレージは含まれないが、SD カードスロットがあるのと、2.5インチ SATA HDD/SSD を内蔵できる (どちらも IDE HDD/SSD として認識される)。
9.5mm 厚の SSD だと内部の配線がかなり圧迫されるが、なんとか収まった。実際には 7mm 厚の方が良いだろう。

また、USB ポートは外部の3個 (前面2個、背面1個) だけでなく、内部にも1個あるので、内部のポートに USB メモリを挿してもいい。


Debian jessie でベンチマークをとってみた。VPS でよく使っている nench.sh

CPU: SHA256-hashing 500 MB
    41.209 seconds
CPU: bzip2-compressing 500 MB
    130.406 seconds
CPU: AES-encrypting 500 MB
    92.153 seconds

やはり遅いが…… Vortex86DX 1GHz と比べると動作クロックがやや低い 933MHz であるにもかかわらず、所要時間は下がっている。
Vortex86 シリーズも進化しているようだ。


Linux ではカーネル fb と相性が良くないようで、vga=normal をつけないと画面が右にずれる。

Vortex86DX はグラフィック機能がなく、EBOX-3310A シリーズは Volari Z9s を搭載していた。
Vortex86MX+ はグラフィック機能を内蔵しているため、違いが出ているものと思われる。

FreeBSD では問題なく表示できるし、X も動作する。
しかしウィンドウの上でマウスカーソルをぐりぐり動かすだけで Xorg が CPU を 80% も食うので、GUI 利用は現実的ではなさそうだ。

Nexterm RT-500 シンクライアント

日付:

Debian stretch から、686 クラス以上の CPU が要求されるようになっている
DM&P Vortex86DX などはまさにこれに引っかかって Debian jessie までしか動かないのだが、サポート外れリストには MediaGX が載っているものの、Geode の名前はない。

ならば Geode では stretch どころか buster だって動くのではないか?
というわけで検証すべく Nexterm RT-500 なるシンクライアントを入手してみた。
(2016年あたりに秋葉原で500円で投げ売りされていたらしい)

  • Nexterm RT-500
  • CPU : AMD Geode LX 800 (500 MHz)
  • メモリ : 512MB
  • ストレージ : CompactFlash スロット

さて Debian buster の動作だが、ぶっちゃけ USB ブートの癖 (後述) さえなんとかできればすんなりインストーラーが動くので、全く問題ない。
AMD Geode は stretch の CPU サポート外れリストにない。実際にその通り、buster も動作することが確認できた。

要するに CMOV 命令の実装こそが問題で、物理アドレス拡張 (PAE) の問題ではないようだ。Geode LX 800 には CMOV があって PAE はない。
実際 stretch 以降ではカーネルのメタパッケージ linux-image-686 があって、これは linux-image-686-pae と違って non-PAE で動く。

Vortex86DX には CMOV がない (そもそも i586 互換で、i686 互換をうたっていない) ので、stretch 以降は動作しない。


USB ブートには癖があって、USB メモリを挿入したまま電源投入では USB メモリを認識しない (複数の USB メモリ、複数の USB CD-ROM で同様だった)。
電源が入っている状態で BIOS あたりに行き、USB メモリを挿入して Ctrl-Alt-Del という手順でいけた。

(2020/03/20 訂正)
USB 機器との相性があるようだ。認識するものは挿入のまま電源投入でも認識するし、不安定なものは不安定。


消費電力が小さい。ワットチェッカーの表示で、アイドル 6W、CPU 負荷状態 8W。
(ただしシャットダウンしても待機電力が 3W なのはいただけない)


VPS でよく使っているベンチマーク nench によると、CPU ベンチマークはこんな感じ。

CPU: SHA256-hashing 500 MB
    77.901 seconds
CPU: bzip2-compressing 500 MB
    143.812 seconds
CPU: AES-encrypting 500 MB
    136.239 seconds

かなりの低性能。しかし消費電力と発売時期を考えると、かなり善戦していると言えるのではないか。なんといっても 500MHz だし、CPU に負荷をかけていても 8W 止まりだ。


「Nexterm RT-500」でググると色々間違った情報が書かれているので、実際に確認したことを書く。

  • BIOS に入れない。
    → 電源投入して F1 叩けば入れる。なお F1 が押されたままという認識になる場合があり、その際は USB キーボードを抜いて同じポートに挿し直す。
  • 起動順序が選べない。
    → BIOS で設定できる。
  • CompactFlash が入っていると USB ブートできない。
    → BIOS で起動順序を設定できる。
  • カバーを開けても CompactFlash の挿抜以外、内部にアクセスできない。
    → 背面の VGA とシリアルポートの左右にある六角が内蓋を挟むように固定しているので、六角をゆるめる。

PDNS Manager の API でダイナミック DNS

日付:

前回の記事で PowerDNS のレコードを編集するのに PDNS Manager を導入した。 PDNS Manager は API も備えており API を叩くことでレコードの変更が可能だ。
つまり、ダイナミック DNS を運用可能だ。


詳細はドキュメントの通りだが、要するに

  • パスワードを使った HTTP GET メソッド
  • 公開鍵認証を使った HTTP POST メソッド

と、2種類のやり方がある。

以下、次の想定で書いていく。

  • PowerDNS はマスター master.example.com、スレーブ slave.example.com で動作している。
  • PDNS Manager は https://pdns.example.com/ で動作している。
  • home.example.com をダイナミック DNS として使う。
  • home.exmaple.com のレコード ID は11。

共通部分

  1. PDNS Manager にログイン。
  2. example.com ドメインを選択。
  3. 下部 Add で home.example.com を作る。TTL は標準で86400秒 (24時間) になっているので、600秒程度に短くしておく。
  4. home.example.com のレコード ID を記憶しつつ (本記事中では前述通り11と想定)、右側に3個並んだアイコンの右側、鍵アイコンをクリック。

GET メソッド

  1. Add credential | Key | Password の Password をクリック、右側に入力欄が出るので入力して Save。
  2. https://pdns.example.com/api/v1/remote/ip にアクセスすると自分の IP アドレスが (JSON で) 表示される。
  3. https://pdns.example.com/api/v1/remote/updatepw?record=11&password=(パスワード)&content=(IP アドレス) にアクセスすると home.example.com のレコードが更新される。

cron に登録するシェルスクリプトはこんなところかな。

wget を使う場合:

#!/bin/sh
ARECORD=`dig @master.example.com home.example.com a +short`
CURRENT=`wget -q -O - https://pdns.example.com/api/v1/remote/ip | jq -r .ip`
if [ $ARECORD = $CURRENT ]; then
	echo "The A record does not need to be updated."
else
	echo "Updating the A record..."
	wget -q -O - "https://pdns.example.com/api/v1/remote/updatepw?record=11&password=パスワード&content=${CURRENT}"
fi

curl を使う場合:

#!/bin/sh
ARECORD=`dig @master.example.com home.example.com a +short`
CURRENT=`curl -s https://pdns.example.com/api/v1/remote/ip | jq -r .ip`
if [ $ARECORD = $CURRENT ]; then
	echo "The A record does not need to be updated."
else
	echo "Updating the A record..."
	curl -s "https://pdns.example.com/api/v1/remote/updatepw?record=11&password=パスワード&content=${CURRENT}"
fi

jq 入れたくない人は CURRENT= の行を以下のように変更。
API は {“ip”:“203.0.113.9”} といった形式でデータを返すので、awk でセパレーターをダブルクォーテーションにすれば4番目のフィールドが IP アドレス。

CURRENT=`wget -q -O - https://pdns.example.com/api/v1/remote/ip | awk -F \" '{print $4}'`
CURRENT=`curl -s https://pdns.example.com/api/v1/remote/ip | awk -F \" '{print $4}'`

あるいは以下のような、単純に IP アドレスのみを返してくれるところを wget なり curl なりする。

ただ、せっかく API で更新するんだから、同じ API で IP アドレスを取得した方が正しいとは思う。


POST メソッド

PDNS Manager 作者の GitHub にある PDNS Manager Client を使うことになる。
作者の説明では git clone しろとあるが、pdns-client と pdns-keygen という2個の bash スクリプトを配置するだけなので手動でやってもいいと思う。
鍵ファイルなどは内蔵しないので、/usr/local/bin/ に入れてパーミッション 755 で問題ない。

  1. pdns-keygen を実行。pdns.private.pem、pdns.public.pem が生成される。
  2. Add credential | Key | Password の Key をクリック、右側に入力欄が出るので pdns.public.pem の内容を貼り付けて Save。
  3. pdns-client -s https://pdns.example.com/ -i 11 -c (IPアドレス) を実行。

cron に登録するシェルスクリプトはこんなところ。
pdns-client 内で curl、jq を使っているので、その流儀に合わせた。

#!/bin/sh
ARECORD=`dig @master.example.com home.example.com a +short`
CURRENT=`curl -s https://pdns.example.com/api/v1/remote/ip | jq -r .ip`
if [ $ARECORD = $CURRENT ]; then
	echo "The A record does not need to be update."
else
	echo "Updating the A record..."
	pdns-client -s https://pdns.example.com/ -i 11 -c ${CURRENT}
fi

Basic 認証を使っている場合

私がまさに該当する。
Basic 認証と PDNS Manager で二重の認証を必要とすることで、より侵入しにくくする、という考え方。

GET メソッドの場合、さほど悩む必要はない。

  • wget なら –user=ユーザー –password=パスワード をつければいいだけ。
  • curl なら –basic –user ユーザー:パスワード をつければいいだけ。

問題は POST メソッドで、pdns-client が実行する curl にパラメーターを渡す必要があるわけだが、pdns-client 内に認証情報をハードコードしたくない。
というわけで pdns-client を改造した。
GitHub で fork して改造したのを公開しているので、そちらをどうぞ。

使い方はこんな感じ。
「-b ID:パスワード」で認証情報を渡す。

pdns-client -s https://pdns.example.com/ -i 11 -c 203.0.113.9 -b ID:パスワード