Plan9の9Protocolをdiodで試す

3 min read

こんにちは、無能です。

今回はUNIXが生まれたベル研究所、Plan9が分散オペレーティング・システムのために開発したPlan9プロトコルを試してみます。

はじめに

分散型OSとしてPlan9は全てのリソースはファイルであるとしてよりかんたんに構成しておりました。
このため、リソースを使うためにはそれぞれのファイルシステム上でリモートで行うことでCPUリソースの分散も行っていたようです。例えば、/binディレクトリを連結させたり、/devであればコードを追加せずにもデバイスの共有ができます。
例えば、今であればcupsCommon Unix Printing Systemとして、キューディレクトリを指す/var/spool/cupsを共有してしまえばプリントサーバーからかんたんにプリントを行うことも可能です。
ポートで管理するよりも、ファイルシステム上にマウントすることによってよりかんたんに動作出来るはずです。

その中で使われていたPlan9 Protocolを試してみます。
実際には、現状ではWikipediaを確認するとBSD・GNU/Linuxで使えるものであればqemudiodがあり、すでにqemuは使用しているのでそのファイルサーバーとして本来のUNIX的なdiodを今回は使ってみます。

diodのインストール

diodのGithubはここですが、パッケージ管理からかんたんにインストールできます。
apt

sudo apt isntall diod

yay

yay -S diod

これでインストールができます。

サーバーの起動、マウント

Github上のREADME.mdでやり方が書いてあるのでそのとおりに行います。
今回はサーバーの/media/ncp/files ディレクトリをクライアント側の/mnt/9pにマウントします。

また564/TCPで動作するため、サーバーからはufwallowします。 Server

sudo ufw allow 564/tcp
sudo ufw reload
sudo diod -f -d 1 -n -e /media/ncp/files/

これで起動ができました。

Client

sudo diodmount -n 192.168.10.113:/media/ncp/files /mnt/9p

これでマウントができました。
lsで確認してみましょう。

$ ls -la /mnt/9p/
合計 6115604
drwxr-xr-x 2 haturatu haturatu       4096  9月  2 21:58 .
drwxr-xr-x 3 root     root           4096  9月  5 22:32 ..
-rw-r--r-- 1 haturatu haturatu 6262358016  9月  2 13:58 devuan.qcow2
-rwxr-xr-x 1 root     root           1845  9月  2 21:58 index.php
-rw-r--r-- 1 root     root            937  9月  2 21:53 style.css

完璧です。あとでここはユーザをwww-dataにしなければ。。。

アンマウントは普段どおりで大丈夫です。

sudo umount /mnt/9p

よりシンプルに

複雑性を無くし、シンプルであるのでとても心地がよいです。
元々は分散OSとしてのシステムですが、残念ながら今であればBSD・GNU/Linuxがある種で身近なものとなり異なるファイルシステムを持ちます。
その分岐によって異なるOS間での分散型OSとするのはあまり現実的ではなさそうです。
例えば、FreeBSDであればpkgやユーザが自由に入れるソフトウェア群は/usr/loacl/etcの設定ファイルとしますがGNU/Linuxは/etcです。
そして、FreeBSDには/proc/sysは存在しませんがGNU/Linuxには存在します。
もちろん相互的である部分はあるので一部では可能であるとは言えます。

今回であれば、ストレージが小さなVPS上からWireguardも組み合わせて使えば容易にストレージの拡張ができますしそれなりに実用性はあります。
また、他のファイルサーバーと言えばSamba等いくつか使ったことはありますがおそらく最もシンプルで高速だと感じています。

少し話題はそれますが、改めてOpenBSDのテオ・デ・ラートのインタビュー記事を読み返して、OpenBSDのWikipediaを再度読んでいると

オープンソースおよびドキュメンテーションの重視

とあり、実際にこんな仕組み上古いものでもこんなかんたんに私がテストできたのも過去にドキュメントを作ってくれた人がいたからこそです。
複雑であることよりシンプルに、再度ドキュメントの重要性を感じた一日でした。

それでは。またよろしくお願いします。