• 115 Posts
  • 73 Comments
Joined 4M ago
cake
Cake day: Dec 15, 2020

help-circle
rss

512GBのカードも見てみた。

Warning: Only 482375 of 482379 MByte tested.
Test finished without errors.
You can now delete the test files *.h2w or verify them again.
Writing speed: 79.1 MByte/s
Reading speed: 90.2 MByte/s
H2testw v1.4


IRCのsafe channelについて

IRCでは!で始まるチャネルはsafe channelだ(RFC2811)。 …


USB-NVMeケースを試す

Elecife製ケース(型番不明)…


SDXCカードの速度テスト

microSDXCカードを調達した。 …


 speed |             canonical_alias
-------+------------------------------------------
  4953 | #news:smith.gdgd.jp.net
  1108 | #neta:matrix.juggler.jp
   698 | #element-web:matrix.org
   669 | #srad:matrix.juggler.jp
   267 | #synapse:matrix.org
   118 |
   113 | #omokan:matrix.juggler.jp
   100 | #soccer:matrix.juggler.jp
    86 | #lobby:matrix.juggler.jp
    81 | #iyh:matrix.juggler.jp
    55 | #nowplaying:matrix.juggler.jp
    50 | #miko:matrix.juggler.jp
    45 | #fediverse:nibbana.jp
    40 | #welcome:matrix.fedibird.com
    38 | #baseball-watch:matrix.juggler.jp
    30 |
    28 | #programming:matrix.juggler.jp
    22 | #talk:matrix.fedibird.com
    12 | #matrix-research:matrix-jp.net
    10 | #yamako-experimental:matrix.fedibird.com
     9 | #pc:matrix.juggler.jp
     8 | #anime-watch:matrix.juggler.jp
     6 | #freetalk:matrix.mstddntfdn.online
     3 | #retro-game:matrix.juggler.jp
     2 | #beginner:matrix.juggler.jp
     1 | #mjj:matrix.juggler.jp
     1 | #camera:matrix.juggler.jp
(27 rows)

部屋別のメッセージ流速を調べるクエリ
# 部屋別メッセージ数の集計のためのインデクス...


現金収入でターンアラウンド短めの飲食業界だと、この遅れはキツいだろうなあ…







mjjのSynapseを1.30.1に更新しました

mjjのSynapseを1.30.1に更新しました…


cron+perlで現在再生中の曲をSpotifyから取ってきて適当にフィルタしてMatrixに送るbotを書いてみた。導入とか色々はリンク先に。 …



サーバ側設定としてはSynapseのhomeserver.yml に以下の変更を両方行います。

  • listeners[?].resources.names[] に webclientを追加する
  • web_client_locationに 「WebUIのURL」 または 「Synapseから見えるElementのフォルダパス」 を書く。前者はリダイレクト、後者はSynapseが直接サーブする。

ホームサーバのホスト名からWebUIを開く方法

https://matrix-room-list-jp.netlify.app/ から部屋を開くリンク。今は matrix.juggler.jp に固定してるんですが、たとえば部屋のあるホームサーバのWebUIに飛ばしたいとか、ユーザがクッキーに覚えさせたホームサーバのWebUIに飛ばしたいとかありますよね。 …


Unbound

  • sudo apt-get install unbound でインストール。
  • https://gist.github.com/MatthewVance/5051bf45cfed6e4a2a2ed9bb014bcd72 をほぼ全部コピーして /etc/unbound/unbound.conf.d/forwarder.conf を書く。 内容は長すぎるのでgistに貼る。
  • sudo /usr/sbin/unbound-checkconf でエラーが出ないことを確認。コピー元のをそのままとはいかなかった。
  • sudo service unbound restart でサービス再起動。
  • 自マシンのリゾルバからUnboundのDNSを利用するのは 結局 /etc/network/interfaces を編集して dns-nameservers 127.0.0.1 と書き換えて service networking restart してしまった。なんか自動で/etc/resolvconf/update.d/unbound が置かれるみたいだけどresolveconfよく分からん。
  • 自マシンでDNSが引けることを確認したあとは /etc/dhcp/dhcpd.conf を編集してoption domain-name-servers XXX.XXX.XXX.XXX; と書き換えて sudo service isc-dhcp-server restart でスマホ等からLAN内部のDNSが使われるようにした。
  • 他、DHCPを使ってないサーバマシン等のリゾルバのDNS指定も書き換えた。

Raspberry Pi OSをstretchからbusterにアップグレードする

自宅サーバでMatrixしたらなぜか自宅のDNSリゾルバが不調ぎみ。 ロングポーリングで自宅ルータのNATテーブルに負荷がかかるとかそんな理由かもしれない。…


WinSshFSでリモートマシンのフォルダをWindowsにマウントする

今回は Dokany と WinSshFS Foreveryone を使って、 LinuxマシンのフォルダをWindowsのドライブとしてマウントしてみる。…


PostgreSQLのオンラインバックアップ

…を行うスクリプトの例。 …



PostgreSQLのデータを別PCに移行する

メモ。普通にpg_dumpしてpsqlでリストアするやつ。 …



pg_stat_statements のインストール

pg_stat_statements.so の存在確認。

$ ls -ld /usr/lib/postgresql/13/lib/pg_stat_statements.so
-rw-r--r-- 1 root root 47336 Feb 11 01:33 /usr/lib/postgresql/13/lib/pg_stat_statements.so

postgresql.confに追記。

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = top
pg_stat_statements.save = on

他の行でshared_preload_libraries を設定していないか確認すること。



ストレステスト

$ stress --cpu 6 --io 6 --vm 6 --vm-bytes 128M --timeout 10h
stress: info: [42132] dispatching hogs: 6 cpu, 6 io, 6 vm, 0 hdd
stress: info: [42132] successful run completed in 36000s
  • CPU温度は84.5度前後で安定
  • CPUクロックは全コア4030-4040MHz前後で安定
  • 10時間テストして正常終了

ディスクのベンチマーク

fioで測定して出力を整形してみた。整形に使ったスクリプト

  nvme0n1: ios=808052/913421, merge=0/3, ticks=282937/243359, in_queue=299720, util=91.70%
|              | Read(MB/s)|Write(MB/s)|
|--------------|-----------|-----------|
|   Seq-1M-Q1T1|   2456.000|   4116.000|
|Rand-512k-Q8T8|   3692.000|   3290.000|
| Rand-4k-Q32T1|    996.000|    912.000|
|  Rand-4k-Q1T1|     66.800|    303.000|

    md0: ios=3202/1572, merge=0/0, ticks=0/0, in_queue=0, util=0.00%, aggrios=1600/2004, aggrmerge=0/8, aggrticks=153276/15857, aggrin_queue=163388, aggrutil=89.38%
  sdb: ios=904/2004, merge=0/8, ticks=92812/15558, in_queue=103608, util=69.42%
  sda: ios=2297/2004, merge=1/8, ticks=213741/16156, in_queue=223168, util=89.38%
|              | Read(MB/s)|Write(MB/s)|
|--------------|-----------|-----------|
|   Seq-1M-Q1T1|    171.000|    165.000|
|Rand-512k-Q8T8|    128.000|     22.700|
| Rand-4k-Q32T1|      1.457|      0.289|
|  Rand-4k-Q1T1|      0.394|      0.337|

SSDのSeq-ReadがWindowsと比べて妙に遅い気もするが、ファイルシステムも測定ソフトも異なるのが主な理由ではないだろうか。


RAMのベンチマーク

mbw https://github.com/raas/mbw/blob/master/mbw.c を使ってテスト。 単純な配列要素コピーが一番速いとかいう結果が出てるのがとても意外。

$ mbw 8000 |grep AVG
AVG     Method: MEMCPY  Elapsed: 0.85167        MiB: 8000.00000 Copy: 9393.310 MiB/s
AVG     Method: DUMB    Elapsed: 0.43527        MiB: 8000.00000 Copy: 18379.561 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.60364        MiB: 8000.00000 Copy: 13252.928 MiB/s

蛇足だが、定期的なチェックはいつ発生するのかというとUbuntu 20 では以下のサービスが管理してるらしい。

$ systemctl status mdcheck_start.timer
● mdcheck_start.timer - MD array scrubbing
     Loaded: loaded (/lib/systemd/system/mdcheck_start.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Thu 2021-03-18 15:20:24 JST; 23min ago
    Trigger: Sun 2021-04-04 17:58:21 JST; 2 weeks 3 days left
   Triggers: ● mdcheck_start.service

Mar 18 15:20:24 sirius systemd[1]: Started MD array scrubbing.

$ systemctl status mdcheck_start.service
● mdcheck_start.service - MD array scrubbing
     Loaded: loaded (/lib/systemd/system/mdcheck_start.service; static; vendor preset: enabled)
     Active: inactive (dead)
TriggeredBy: ● mdcheck_start.timer


ECCが有効か確認

大丈夫そう。

$ free
              total        used        free      shared  buff/cache   available
Mem:       65793280      313700    64740856        1560      738724    64836272
Swap:      75497464           0    75497464
$ dmesg | grep -i edac
[    0.466464] EDAC MC: Ver: 3.0.0
[    9.199660] EDAC amd64: Node 0: DRAM ECC enabled.
[    9.199661] EDAC amd64: F17h_M70h detected (node 0).
[    9.199703] EDAC MC: UMC0 chip selects:
[    9.199704] EDAC amd64: MC: 0: 16384MB 1:     0MB
[    9.199705] EDAC amd64: MC: 2: 16384MB 3:     0MB
[    9.199707] EDAC MC: UMC1 chip selects:
[    9.199707] EDAC amd64: MC: 0: 16384MB 1:     0MB
[    9.199708] EDAC amd64: MC: 2: 16384MB 3:     0MB
[    9.199708] EDAC amd64: using x16 syndromes.
[    9.199709] EDAC amd64: MCT channel count: 2
[    9.199751] EDAC MC0: Giving out device to module amd64_edac controller F17h_M70h: DEV 0000:00:18.3 (INTERRUPT)
[    9.199757] EDAC PCI0: Giving out device to module amd64_edac controller EDAC PCI controller: DEV 0000:00:18.0 (POLLED)
[    9.199757] AMD64 EDAC driver v3.5.0
$ edac-util  -v
mc0: 0 Uncorrected Errors with no DIMM info
mc0: 0 Corrected Errors with no DIMM info
edac-util: No errors to report.
$ sudo dmidecode --type memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.2.1 present.
# SMBIOS implementations newer than version 3.2.0 are not
# fully supported by this version of dmidecode.

Handle 0x0010, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 128 GB
        Error Information Handle: 0x000F
        Number Of Devices: 4

Handle 0x0018, DMI type 17, 40 bytes
Memory Device
   (snip...)
        Total Width: 128 bits
        Data Width: 64 bits
        Size: 16384 MB
   (snip...)

Handle 0x001B, DMI type 17, 40 bytes
Memory Device
   (snip...)
        Total Width: 128 bits
        Data Width: 64 bits
   (snip...)

Handle 0x001E, DMI type 17, 40 bytes
Memory Device
   (snip...)
        Total Width: 128 bits
        Data Width: 64 bits
   (snip...)

Handle 0x0021, DMI type 17, 40 bytes
Memory Device
   (snip...)
        Total Width: 128 bits
        Data Width: 64 bits
   (snip...)

ソフトウェアRAID

6TBのHDDを2つ使ってRAID1を組む。

/dev/sdaと/dev/sdb にpartedでGPTパーティションテーブルとパーティションを作る。

# parted /dev/sda
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) unit GB
(parted) print
Model: ATA WDC WD60EZAZ-00S (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart
Partition name?  []?
File system type?  [ext2]? ext4
Start? 0
End? 6001GB
(parted) quit
Information: You may need to update /etc/fstab.

/dev/sdbも同様に上記を行う。

mdadmコマンドでRAIDボリュームを作る。

# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

作成されたボリュームをext4ファイルシステムで初期化する。

# mke2fs -t ext4 -c /dev/md0
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done
Creating filesystem with 1465097216 4k blocks and 183140352 inodes
Filesystem UUID: XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Checking for bad blocks (read-only test):   0.00% done, 0:00 elapsed. (0  0.44% done, 1:57 elapsed. (0/0/0 errors)

温度監視

apt install lm-sensors nvme-cli hddtemp

CPUとGPUは初回だけsensors-detectしてからsensorsで見れた。

nouveau-pci-0d00
Adapter: PCI adapter
GPU core:    912.00 mV (min =  +0.80 V, max =  +1.19 V)
temp1:        +47.0°C  (high = +95.0°C, hyst =  +3.0°C)
                       (crit = +105.0°C, hyst =  +5.0°C)
                       (emerg = +135.0°C, hyst =  +5.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
Tdie:         +34.0°C  (high = +70.0°C)
Tctl:         +34.0°C

SSDはnvme smart-log /dev/nvme0 | grep ^temperatureで見れた。

temperature                         : 41 C

hddはlsblk -aでブロックデバイス一覧を調べてから hddtemp /dev/sda /dev/sdbで見れる。

/dev/sda: WDC WD60EZAZ-00SF3B0: 38°C
/dev/sdb: WDC WD60EZAZ-00SF3B0: 36°C

SSH

クライアントPCで以下を実行してキーを作る。

cd ~/.ssh
ssh-keygen -t ed25519 -f {KEY_FILE_NAME}
cat {KEY_FILE_NAME}.pub

波括弧で囲った部分は適切に変更すること。 公開鍵を行ごとメモしておく。

素の状態でパスワード認証でサーバ側にSSHログイン。

mkdir ~/.ssh
cd ~/.ssh
chmod 700 .
emacs authorized_keys
(公開鍵を貼り付け、保存して終了)
chmod 600 authorized_keys

クライアントPC で ~/.ssh/config に以下のエントリを追加。

Host {Name}
	HostName {IP_ADDR}
	Port 22
	User tateisu
	IdentityFile ~/.ssh/{KEY_FILE_NAME}
	TCPKeepAlive yes
	ServerAliveInterval=30

波括弧で囲った部分は適切に変更すること。 動作確認。ssh {Name} を実行するとエントリ中のユーザ名や鍵ファイルが使われる。

sshd_configの編集

  • Listenポート番号の変更
  • パスワード認証の禁止
  • 再起動 service ssh restart

動作確認。

  • ~/.ssh/config のエントリのポート番号を設定したポート番号に変更してssh {Name} を実行すると普通に接続できること。
  • ssh username@{IP_ADDR} (デフォルトのポート番号)でssh: connect to host XXX.XXX.XXX.XXX port 22: Connection refused のようなエラーが出ること。
  • ssh username@{IP_ADDR} -p (設定したポート番号) でパスワードを尋ねずにPermission denied (publickey). のようなエラーが出ること。

IPアドレスの固定。

サーバ用途なのでとりあえずIPアドレスを固定にしないといけない。

インストール直後の状態:
/etc/netplan/
    00-insaller-config.yaml

Netplanはこのフォルダにある*.yamlファイルを文字コード順に全て読み、上書きしていく。 /etc/netplan/99-config.yaml を作成してそこに設定を書けば、他の何かによって上書きされることはないらしい。

$ cat /etc/netplan/99-config.yaml
# This is the network config for my LAN.
network:
  version: 2
  renderer: networkd
  ethernets:
    <<NETWORK_INTERFACE_NAME>>:
      dhcp4: false
      dhcp6: false
      addresses:
        - <<HOST_ADDR>>/24
      gateway4: <<GATEWAY_ADDR>>
      nameservers:
        addresses: [ <<DNS_ADDR>> ]

<<>>で囲った部分は全て環境に合わせて書き換える。

ファイルの編集が終わったら sudo netplan apply で反映される。


Ubuntu Server 20.04.2 LTS のインストール

  • http://releases.ubuntu.com/20.04.2.0/ の「64-bit PC (AMD64) server install image」のISOイメージを別のPCでダウンロードしてRufusでUSBメモリに書き込む。
  • USBメモリでブートしてインストーラの手順に従う。
  • この時点ではパスワードは簡易なもので済ませる。
  • インストーラがsudoもsshも入れてくれるが、DHCP前提だな…。

t.coからTwitterの画像つき投稿に飛ぶURLのプレビューを取ろうとするとJavaScriptがないのでエラー表示をプレビューしてしまう。設定でt.coのURLはプレビューしないようにした。 ワイルドカードと正規表現の切り替えはキーワード先頭が^かどうからしい


  • データの更新時刻や取得対象サーバのリストを表示するようにした。
  • faviconを設定した