はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

メモ 2024-04

2024-04-16

ZFSとのバージョン不整合で動作しなくなったLXDのバージョンを戻した

Ubuntuサーバをアップデート後に再起動したところ、LXDが動作しなくなった。 原因はZFSとのバージョン不整合。 LXDを旧バージョンに戻したところ動作するようになった。

環境:

  • Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-176-generic x86_64)
  • LXD 5.21.1-43998c6 (snapでインストール)
  • ZFS 0.8.3
エラーが発生

lxcコマンドを実行するとエラーが発生する。

$ lxc list
Error: LXD unix socket not accessible: Get "http://unix.socket/1.0": EOF

journalctl -u snap.lxd.daemon でログを確認。

Apr 13 02:06:04 kiliman lxd.daemon[2137448]: => Preparing the system (28155)
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Loading snap configuration
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Setting up mntns symlink (mnt:[4026532608])
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Setting up kmod wrapper
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Preparing /boot
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Preparing a clean copy of /run
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Preparing /run/bin
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Preparing a clean copy of /etc
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Preparing a clean copy of /usr/share/misc
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Setting up ceph configuration
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Setting up LVM configuration
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Setting up OVN configuration
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Rotating logs
Apr 13 02:06:04 kiliman lxd.daemon[2137448]: ==> Unsupported ZFS version (0.8)
(中略)
Apr 13 02:06:04 server1 lxd.daemon[2137448]: => Re-using existing LXCFS
Apr 13 02:06:04 server1 lxd.daemon[2137448]: ==> Reloading LXCFS
Apr 13 02:06:04 server1 lxd.daemon[2137448]: => Starting LXD
Apr 13 02:06:04 server1 lxd.daemon[2137608]: time="2024-04-13T02:06:04+09:00" level=warning msg=" - Couldn't find the CGroup blkio.weight, disk priority will be ignored"
Apr 13 02:06:04 server1 lxd.daemon[2137608]: time="2024-04-13T02:06:04+09:00" level=warning msg=" - Couldn't find the CGroup memory swap limits will be ignored"
Apr 13 02:06:06 server1 lxd.daemon[2137608]: time="2024-04-13T02:06:06+09:00" level=error msg="Failed loading storage pool" err="Required tool 'zpool' is missing" pool=default
Apr 13 02:06:06 server1 lxd.daemon[2137608]: time="2024-04-13T02:06:06+09:00" level=error msg="Failed to start the daemon" err="Failed applying patch \"storage_move_custom_iso_block_volumes_v2\": Failed loading pool \"default\": Required tool 'zpool' is missing"
Apr 13 02:06:06 server1 lxd.daemon[2137608]: Error: Failed applying patch "storage_move_custom_iso_block_volumes_v2": Failed loading pool "default": Required tool 'zpool' is missing
Apr 13 02:06:06 server1 lxd.daemon[2137448]: Killed
Apr 13 02:06:06 server1 lxd.daemon[2137448]: => LXD failed to start

"Unsupported ZFS version (0.8)" と表示されている。 LXD 5.21.1 LTS has been released - LXD / News - Ubuntu Community Hub のコメントに同様のメッセージ報告があるため、LXDとZFSバージョンのミスマッチだと判断。 Notes on upgrading when on Ubuntu 18.04 and 20.04 にいくつかの選択肢が書かれているが、現在の環境ではZFSのバージョンは上がらなそうなのでLXDのバージョンを戻すことにした。

LXDのバージョンを戻した

LXDはsnapでインストールしていたので、前バージョンを確認。

$ snap list lxd --all
Name  Version         Rev    Tracking       Publisher   Notes
lxd   5.20-f3dd836    27049  latest/stable  canonical✓  disabled
lxd   5.21.1-43998c6  28155  latest/stable  canonical✓  -

現在は28155を使っているが27049が残っていたため、hanhan's blog - snap で古いバージョンをインストールする を参考に27049に戻した。

$ sudo snap revert lxd --revision 27049
2024-04-16T13:17:18+09:00 INFO Waiting for "snap.lxd.daemon.service" to stop.
lxd reverted to 5.20-f3dd836
まだ動かない

再起動したところ以下のエラーが出てLXDが起動していなかった。

Apr 16 13:36:45 server1 lxd.daemon[42415]: time="2024-04-16T13:36:45+09:00" level=error msg="Failed to start the daemon" err="Failed to initialize global database: failed to ensure schema: schema version '73' is more recent than expected '69'"
Apr 16 13:36:45 server1 lxd.daemon[42415]: Error: Failed to initialize global database: failed to ensure schema: schema version '73' is more recent than expected '69'

原因はデータベースのスキーマバージョンが上がってしまっていること。

データベースを元に戻した

LXDデータベースについて - LXD ドキュメント によるとsnapで入れたLXDの場合、データベースの場所は /var/snap/lxd/common/lxd/database/ とのこと。

データベースを確認した。

/var/snap/lxd/common/lxd/database# ls
global  global.bak  local.db  local.db.bak

global.bakをglobalに変更した。 local.db.bakは数年前のものだったので戻さなかった。

# cp -a global global_new
# cp -a global.bak global
動作するようになった

再起動したところ動作するようになった。

Apr 16 13:48:41 server1 lxd.daemon[7916]: => Starting LXD
Apr 16 13:48:41 server1 lxd.daemon[8077]: time="2024-04-16T13:48:41+09:00" level=warning msg=" - Couldn't find the CGroup blkio.weight, disk priority will be ignored"
Apr 16 13:48:41 server1 lxd.daemon[8077]: time="2024-04-16T13:48:41+09:00" level=warning msg=" - Couldn't find the CGroup memory swap accounting, swap limits will be ignored"
Apr 16 13:48:48 server1 lxd.daemon[8077]: time="2024-04-16T13:48:48+09:00" level=warning msg="Failed to initialize fanotify, falling back on inotify" err="Failed to initialize fanotify: invalid argument"
Apr 16 13:48:51 server1 lxd.daemon[8077]: time="2024-04-16T13:48:51+09:00" level=error msg="Failed to update the image" err="Failed getting remote image info: Failed getting image: The requested image couldn't be found for fingerprint \"debian/10\"" fingerprint=156bab33e052ede274a16cf936be345cdf61c537073b90c83c4c3e869e1244d0
Apr 16 13:48:52 server1 lxd.daemon[7916]: => LXD is ready

ゲストイメージのfingerprintが違うというエラーが出ている。 ゲストを構築する際に使用したイメージのfingerprintが変わってしまっているらしい。

$ lxc image list
+-------+--------------+--------+--------------------------------------+--------------+-----------+----------+-------------------------------+
| ALIAS | FINGERPRINT  | PUBLIC |             DESCRIPTION              | ARCHITECTURE |   TYPE    |   SIZE   |          UPLOAD DATE          |
+-------+--------------+--------+--------------------------------------+--------------+-----------+----------+-------------------------------+
|       | 156bab33e052 | no     | Debian buster amd64 (20240131_05:24) | x86_64       | CONTAINER | 75.74MiB | Jan 31, 2024 at 10:24am (UTC) |
+-------+--------------+--------+--------------------------------------+--------------+-----------+----------+-------------------------------+

実害はなさそうなのでこちらは無視することにした。

LXDが勝手にバージョンアップしないようにした

snapで現在のバージョンを保持するように指定した。

$ sudo snap refresh --hold=forever lxd
General refreshes of "lxd" held indefinitely

DEC PDPシリーズについてのメモ

PDP (Programmed Data Processor) はデジタル・イクイップメント社 (DEC) が開発したミニコンピュータのシリーズ。

PDPシリーズ - Wikipedia

ビット数と機種

ビット数 機種
12 PDP-5, PDP-8, PDP-12, PDP-14, PDP-16
16 PDP-11
18 PDP-1, PDP-4, PDP-7, PDP-9, PDP-15
36 PDP-3, PDP-6, PDP-10

1行まとめ

カッコ内はビット数。

  • PDP-1 (18) - 初期のハッカー文化の源
  • PDP-2 (24) - 設計されなかった
  • PDP-3 (36) - 発売されなかった
  • PDP-4 (18) - PDP-1の低価格版でPDP-7/9/15の命令セットのベースになった
  • PDP-5 (12) - コスト削減のためメモリの0番地をプログラムカウンタとして使用
  • PDP-6 (36) - DEC初の大型機でありすっきりしたアーキテクチャのタイムシェアリング機
  • PDP-7 (18) - DEC初のワイヤーラップ機で初期のUNIXが開発された
  • PDP-8 (12) - DECとして商業的に成功した初めてのコンピュータで小さな命令セットを持つ
  • PDP-9 (18) - DEC初のマイクロプログラムマシン
  • PDP-10 (36) - PDP-6とほぼ同じ命令セットを持つ後継機でタイムシェアリングシステムを一般に浸透させ多くの大学や研究機関で使われハッカー文化に影響を与えた
  • PDP-11 (16) - 豊富なアドレッシングモードを持つ直交性の高い汎用レジスタ指向で16ビットの命令セットとしては史上最も優れていると考えられている
  • PDP-12 (12) - PDP-8とLINCを結合したコンピュータであるLINC-8の後継機
  • PDP-14 (12) - プロセス制御用で後期バージョンはPDP-8の製造技術を流用している
  • PDP-15 (18) - 18ビット機としては唯一TTL集積回路を使って作られた
  • PDP-16 (12) - レジスタ・トランスファ・モジュールを使った半組立式でPDP-14より高機能な工業機械制御向けマシン

Djangoについてのメモ

(2024-04-19更新)

メモを集めています。 未整理です。

関連記事: Pythonについてのメモ

  • Djangoのインストール: requirements.txtDjango~=3.2.10 (バージョンは新しくする) を書き込んで pip install -r requirements.txt
  • プロジェクトの作成: django-admin startproject mysite .
  • アプリケーションの作成: python manage.py startapp myapp
  • 内蔵サーバの起動: python manage.py runserver, python manage.py runserver 0.0.0.0:8080
  • マイグレーション手順: モデルの変更 → python manage.py makemigrations myapp → 内容の確認 → python manage.py migrate myapp
  • マイグレート時に実行されるSQLの表示: python manage.py sqlmigrate myapp 0001
  • admin画面にモデルを表示する: myapp.admin.pyfrom .models import ModelName を入れる
  • スーパーユーザーの作成: python manage.py createsuperuser
  • 実行パスを取得する: django.conf.settings.BASE_DIR
  • メディアパスを取得する: django.conf.settings.MEDIA_ROOT (BASE_DIRからの相対パス)