dynamicsoar's log

主に研究関係のメモ

QNAP NAS (TS-453Be) での port trunking (link aggregation) は不安定?

前提

前提として、QNAP TS-453Be に Toshiba N300 を4つ入れて RAID 5 している。1ヶ月ほど前に導入して、すぐに port trunking を ON にして*1これまでは問題なく使ってきた。たまに接続が切れるな、と思うことはあったが、長くても数分で復帰していたので問題視してこなかった。

PC は Windows 10 & Windows 7 で、これまでに3台からアクセスしたことがある。

トラブルの経過

先程繋がらなくなった際には1時間以上経っても全く復帰せずに困った。Win のエクスプローラはもちろん、web ログインもできなくなり、ping も通らない。なぜか Qfinder からは一応存在が確認できる。ただし見えるだけでほぼ何もできない。再起動すら受け付けない。しょうがないので本体のボタンを押してシャットダウン→再度起動、としたが状況は変わらず。もしかして…?と思い Qfinder から port trunking を解除して個別の Ethernet 扱いに戻すと…(これはなぜかできた)Webログインを始めすべての機能が戻ったようだ。

「普段と違うことをしなかった?」

した。

今日、普段と違うことをしたのは何かと考えると、3つある。

  1. Qfinder の update
  2. SMTP の設定
  3. PC の移動

Qfinder を起動すると更新のお知らせが来たので行った。このとき同時に SMTP の設定をしましょうみたいなダイアログが出ていたので、更新後に設定した。Warning や Error(おそらく RAID の fail や空き容量不足などだろう)がメールで届くとありがたいなと思ったのだった。テストメールは問題なく送信・受信できた。いま思うとこの少しあと(少なくとも数時間以内)に接続が切れたように思う。もう一ついつもと違うこととしては、普段NASへとアクセスしていたPCのうち1台の場所を移動(建物を変えたが同じサブネット内)して、再度NASにアクセスしようとした、ということがある。このときにアクセスできなかったことで、問題の発生に気づいた。いずれかが本当に今回のトラブルに関係しているかは、正直わからないが、今後のためにも記録しておく。Qfinder が一番怪しいか…?

今後の予定

実際問題として、途中の経路に 1 GbE が入っているせいで port trunking の恩恵はほとんどないか、あるとしてもこの不安定性に見合うものではないと判断する。

数年経って 10 GbE が当たり前に普及してくれるだろうことを願う…*2

*1:これは Qfinder からではなく web の管理画面からやったと思う。

*2:10 GbE の PCIe カードと switch と Cat 7 cable は買っていて、高速度カメラからのデータのダウンロードには使っている。しかし離れた建物に置いた NAS へのアクセスとなると経路に必ず 1 GbE が入ってしまうため、そこがボトルネックになる。と思う。

Windows で VS Code の integrated terminal を cygwin64 の bash にする

概要

デフォルトでは Powershell になっている integrated terminal(エディタ下部にあるターミナル)を cygwinbash に変えたい。ググると少し古い情報が色々ヒットするが、2018-09-01現在は既に公式に記載がある:

code.visualstudio.com

概ねここにある通りにやればいい。ただし install path が微妙に違うこともあるだろうから、そこに注意。具体的には、64 bit の場合は C:\Cygwin ではなく C:\cygwin64 がデフォルトの install path のはず。

手順

  1. Cygwin Installation の setup-x86_46.exe で chere を検索し、追加でインストールする。これを忘れてエディタ側の設定だけやってもターミナルの起動に失敗する。
  2. VS Code を起動。Ctrl + , で settings.json を開き、右側のユーザ設定の記述場所に以下を追加(パスは自分に合わせること)*1

    "terminal.integrated.shell.windows": "C:\\cygwin64\\bin\\bash.exe", "terminal.integrated.shellArgs.windows": ["/bin/xhere", "/bin/bash"]

  3. VS Code を再起動する。

トラブルシュート

もし、64 bit なのに "C:\\cygwin64\\bin\\bash.exe" でなく "C:\\cygwin\\bin\\bash.exe" と書いてしまった場合、VS Code で Terminal を起動しようとすると次のような感じのエラーが表示されて、起動に失敗する:

The terminal process command 'C:\Cygwin\bin\bash.exe /bin/xhere /bin/bash' failed to launch (exit code: 2)

そうなったら、落ち着いてパスを Cygwin64 に変更すればよい。

*1:あるいは、new settings editor で Features > Terminal を開き、ずっと下に降りていって Integrated.Shell: Windows と Integrated.Shell Args: Windows を設定しても良い。しかし、2018-09-01現在、後者は結局 settings.json に飛ばされる。

Windows で VS Code が要求する Git を入れようとして詰まった → 一度 Back すればいけた

VS CodeGithub Desktop を無視する *1

VS Code only supports the official Git distribution for its Git integration. https://code.visualstudio.com/docs/editor/versioncontrol#_i-have-github-desktop-installed-on-my-computer-but-vs-code-ignores-it

ので、Git を入れようとした。しかしインストールの途中で、"use visual studio code as git's default editor" を選ぶと "Next" ボタンがグレイアウトして次に進めないというひどいバグに遭遇した。世界中で皆が困ってるはずだが…どうなってんだ?ググると…

github.com

まさかの、「一回 Back して、再度戻ると、Next が押せるようになる」とかいう謎挙動…やめてくれよ…。まじでこれに気づかなくて、ここ数日毎回 VS Code を立ち上げるたびに「Git入ってないけど??」って言われて軽くイラッとしていた。

*1:あれ? MS が買収したんじゃ…? そのうちサポートされるんだろうか

Preferences adjustments that I will forget but ought to do after each clean installation of the macOS

  • System Preferences > Trackpad > tick "Tap to click" and increase the Tracking speed at the bottom of the window
  • System Preferences > Accessibility > Mouse & Trackpad > Trackpad Options... > tick "Enable dragging" and choose "without drag lock" (or whichever you like)

シェルスクリプトで「カレントディレクトリ以下全てを検索してマッチするファイルを圧縮」「圧縮形式をgzipからxz(など)に変更」

まえがき

数値計算結果など、大量のファイルを自動的に逐次圧縮したい、ということが自分はよくある。しかもそれらが複数のディレクトリにまたがっていて、「エクスプローラから右クリック」なんていちいちやっていられない、自動化したい、ということもよくある。そういう場合にはシェルスクリプトが便利。

bash(たぶん sh ならなんでも)を使うので LinuxMac, Win の場合は Cygwin などの利用を想定している。

ファイルを検索して圧縮

「カレントディレクトリ以下を全て検索し、拡張子が xyz のファイルを見つけて、それらに対して逐次 gzip -9 -q を実行」は、

$ find . -type f -name "*.func" -exec gzip -9 -q {} \; &

で行ける。xargs を使った方が速いんだとかそういう議論はあるようだが、よくわからない(検証もしてない)。

圧縮形式の変更

「すでにある .gz ファイルを .xz に圧縮し直す」になるともっと複雑。一度ディスクに書き出すのはまだわかるが、パイプを使って直接(つまりメモリのみ経由して?)xz にするのは全然わからない…が、エキスパートが提供してくれている:

pipe - How to convert all files from gzip to xz on the fly (and recursively)? - Unix & Linux Stack Exchange

念の為引用しておくと、Stéphane Chazelas さんによる最初の回答:

find . -name '*.gz' -type f -exec bash -o pipefail -Cc '
  for file do
    gunzip < "$file" | xz > "${file%.gz}.xz" && rm -f "$file"
  done' bash {} +

これで行けた。具体的には、一行目に #!/bin/bash をつけて gz2xz.sh などの名前で保存し、chmod で x 可能にすることで実行し、うまく作動することを確認した。Windows でうまくいかない場合、改行の形式がおかしい可能性がある。Notepad++ の Edit > EOL Conversion で UNIX に変えるなどして、CR+LF を LF にするとうまくいくかもしれない。

圧縮に関するコメント

圧縮形式については、gzip/bzip2/xz/zstd あたりのどれを使うか、というところは、どうやらファイルの種類によって最適なものが変わるようなので、たまに自分でテストしてみることをおすすめする。

ベンチマークでよく言われているのは、「bzip2 は圧縮率は gzip と xz の間くらいだが、解凍(展開)が遅い」ということで、確かにそういうケースもあったが、逆にあるファイル形式では「bzip2 が gzip よりも高圧縮で速度は同程度・xz と圧縮率がほぼ変わらず圧倒的に速い、かつ解凍も別に遅くない」ということがあった。オプションは、基本的にはデフォルトから変えても圧縮率は10%も変わらないかな、という印象(流石に-0とか-9みたいに極端に振ると結構変わることはあるが)。それよりも速度が結構変わることがあるので、そちらに注意したい。zstd はデフォルトの -3 だと異常に高速で圧縮率は gzip 並(かそれ以下かも)、というかなり速度重視感がある。急いでいるときは良いと思うけどまだ本格利用はしたことがない。

なお 2018-08現在、Cygwin をデフォルトでインストールすると xz と zstd は(bzip2もだったかも?)確か入ってこないので、追加する必要がある。軽いのでインストール自体はすぐ終わる。おそらく MacLinux でも xz はあっても zstd はないことが多そうなので、必要なら自分で入れる必要がある。

Opening ports in Windows Firewall solved the ANSYS licensing problem

Key words

ANSYS, FlexNET Licensing error

Environment

  • Windows 7/10, Pro/Enterprise, 64 bit
  • ANSYS 19.0/19.1
  • Floating license

Problem

We have a PC which is set up as a server for ANSYS (19.0) and it wa confirmed that the ANSYS Workbench and everything (e.g. Fluent, Mechanical) are working fine in the server PC.

Then, I installed a client software (19.1) on a different PC. During the installation, I typed in the correct port numbers (both 2 of them) and the host name as the server PC *1.

However, I got an error dialogue saying something like:

License server machine is down or not responding. (-96,491)

Solution

I edited (with Run as admin Notepad++) the file at C:\Program Files\ANSYS Inc\Shared Files\Licensing\ansyslmd.ini where I changed the hostname to the actual IP address. No success. I ping-ed to the server PC and there was actually no problem (even hostname is resolved nicely).

Then, after some googling, I added the ANSYSLMD_LICENSE_FILE and ANSYSLI_SERVERS to the environmental variables (as PORTNUMBER@HOSTNAME ) but this did not help at all.

Then I googled a lot and came to think the port may be the problem. In fact, when I opened the Windows Firewall settings, it says "Inbound connections that do not match a rule are blocked." This is understandable since it's the university PC, and I guess we cannot (at least easily) change this policy. Therefore, I created a rule in the server PC that allows the inbound connection to the ports from the private network, and this worked like a charm.

Procedure

  1. Open the Control Panel (In Win10, Windows-X is easy).
  2. System security > Windows Firewall > Advanced settings (left column): new window should open
  3. If you see "Inbound connections that do not match a rule are blocked." in the Private Profile, this may be the cause.
    1. In the left column, left-click "Inbound Rules"
    2. Then right-click the "Inbound Rules" and choose "New rule..."
    3. Select "Port". Press "Next >"
    4. Type the ports of your choice in the "Specific local ports" (you can use comma for multiple ports) and press "Next >"
    5. Choose either "Allow the connection" or "Allow the connection if it is secure" (in my case, the second one didn't work, though if it works preferable, I think). Press "Next >"
    6. Untick the "Public" at least. Untick one of the others if you can (might require trial & error). Press "Next >"
    7. Type in the name (e.g. "Open ports for ANSYS") and press "Finish".

*1:By the way, if you have not, you can set them up using "Client ANSLIC_ADMIN Utility 19.1" or simply editing the text file at C:\Program Files\ANSYS Inc\Shared Files\Licensing\ansyslmd.ini

amazon で買った adobe cc 36ヶ月版のコード(1年分コード3つ)は1つずつ連続で引換えれば期間は3年間になる

買うと「3年分のコード」ではなく「1年分のコード」が3つ送られてきた。どうすればいいかの手順。自分は教職員版だったけど通常版でも同じだと思う。

  • Adobe ID でのログイン後のコードの引き換えでは、入力欄は1つしかない。ここに「1年目」のコードを入力する。
  • クレジットカードで自動更新にする?とか言われる。とりあえず「自動更新しない」を選択。
  • Adobe ID のホーム画面というのか、「プランおよび製品」タブへ行く*1
  • お支払の詳細 > コードを引き換える でダイアログを開き、ここに「2年目」のコードを入力する。この記述が(5秒位ググっただけだと)どこにも見当たらず、どうなるかは博打だったが、問題なく期間が2年間に延長された。
  • 同様に、「3年目」のコードも入力。無事、3年間に延長された。

振り返ってみると、「任意の時点で、引き換えコードを入力すると、現状の契約終了時点から1年間延長される」ってことだろう。「コードを入力した時点から1年間」ではない。実際、いま3月なのに契約切れるのは前回初めて引換えた(んだろう)5月になっている。つまり、いつでもいいからとにかく最安のときに買って即引き換え、でいいってことか…

*1:教職員版でなく通常版なら、そもそも最初からここで入力しているのかも?