UBUNTUサーバーで opensimサーバーとして使っていたPCのHDDがお亡くなりになりました。突然死でした。寿命だったのか、あまりに酷暑のせいか。
もう1台のHDDもあるけど、これはさらに旧いものだから怪しい。
それでUSBフラッシュメモリで運用することにしました。
ファンレスPCです。過去にパピーリナックスをUSBメモリに入れてHDDなしで運用していたことがありましたが、USBメモリが死んでしまい、HDDを装着。最近UBUNTUサーバーに替えたものです。
過去に USBメモリを壊した失敗の理由は、パピーのシステム自身はUSBメモリへのアクセスは最小にしてるのに、opensimサーバーをパピースペースの外に置いていたので、USBメモリへのアクセスが頻繁だったことが原因だったと思います。
今回USBメモリで運用することにしたのは、過去の失敗のリベンジをしたいとの思いもあってのこと。
パピーなら opensimサーバーをパピースペースの内に置くことでUSBメモリの寿命の問題は解決します。
具体的には opensimサーバーをたとえば /var/opensim などというディレクトリを作って全部をその中に収めて動かす。
(/mnt/home/oppemsim はパピースペース外。/root , /var, /opt 以下などはパピースペース内。)
pmedia=usbflash で起動すれば PUPMODE=13 となり、更新分はRAM上となって、それをたとえば 30分おきにフラッシュする(同期を取る)ことで可能でしょう。 opensimサーバーは500MB〜2GB程度。このPCの実装メモリは 8GBなので、なんとかいけそうです。
しかしパピーならともかく、UBUNTUサーバーをUSBフラッシュメモリで運用できるのか?
(……続く)
UBUNTUサーバーをUSBメモリ上で運用
UBUNTUサーバーをUSBメモリ上で運用
最後に編集したユーザー シノバー [ 24/08/04(日) 01:02 ], 累計 3 回
Re: UBUNTUサーバーをUSBメモリ上で運用(RAMディスク)
UBUNTUデスクトップをUSBメモリに入れての運用だと、立ち上がりの時間も掛かるし、各々のアプリの立ち上げも時間が掛かるので、イライラさせられること請け合いです。しかしサーバーなら点けっぱなしだし、アプリも opensimだけなので、そこのところは問題ありません。
UBUNTUはRAMディスクが使いやすくなっています。実装RAMの約半分をRAMディスクとして使えます。/dev/shm がそれで、たとえば ~/tmp にシンボリックリンクを張るだけ。(張らなくてもいい?)
opensimサーバーの可変データーはというと、大量に吐き出されるログ、キャッシュ、それに地形や置かれているオブジェクトを記録するデーターベース OpeSim.dbです。キャッシュからデーターベースへの更新は opensimサーバーのシャットダウン時に行うみたいなので、頻繁なアクセスがあるキャッシュをRAMディスク上に取れば良いようです。ログも大量ですので、RAMディスク上とし、週に数度のopensimサーバーのリスタート時(いまのところ手動)に旧いログは消すようにします。
↓はキャッシュをRAMディスク上に置くあたりのスクリプト。
RAMディスク上のデーターは次の起動時には全部捨てます。
opensim内のスクリプトのステータスは維持しておきたいので、またデーターベースもRAMディスク上でなく、USBメモリ上とします。
UBUNTUはRAMディスクが使いやすくなっています。実装RAMの約半分をRAMディスクとして使えます。/dev/shm がそれで、たとえば ~/tmp にシンボリックリンクを張るだけ。(張らなくてもいい?)
opensimサーバーの可変データーはというと、大量に吐き出されるログ、キャッシュ、それに地形や置かれているオブジェクトを記録するデーターベース OpeSim.dbです。キャッシュからデーターベースへの更新は opensimサーバーのシャットダウン時に行うみたいなので、頻繁なアクセスがあるキャッシュをRAMディスク上に取れば良いようです。ログも大量ですので、RAMディスク上とし、週に数度のopensimサーバーのリスタート時(いまのところ手動)に旧いログは消すようにします。
↓はキャッシュをRAMディスク上に置くあたりのスクリプト。
コード: 全て選択
# copy to tmpfs
MYTMP=~/tmp
[ -e $MYTMP ] || ln -s /dev/shm "$MYTMP"
MYTMPSUB="$MYTMP/opensim"
[ -d "$MYTMPSUB" ]|| mkdir "$MYTMPSUB"
# clear old stuff
rm -f "$GUEST_BINDIR"/mono_crash.mem.*
rm -f "$GUEST_BINDIR"/OpenSim.log*
#make links to tmpfs
rm -f "$MYTMPSUB"/OpenSim.log
touch "$MYTMPSUB"/OpenSim.log
ln -s "$MYTMPSUB"/OpenSim.log "$GUEST_BINDIR"/OpenSim.log
rm -fr "$GUEST_BINDIR"/assetcache && echo "Assetcache cleared."
rm -fr "$MYTMPSUB"/assetcache
mkdir "$MYTMPSUB"/assetcache
ln -s "$MYTMPSUB"/assetcache "$GUEST_BINDIR"/assetcache
opensim内のスクリプトのステータスは維持しておきたいので、またデーターベースもRAMディスク上でなく、USBメモリ上とします。
最後に編集したユーザー シノバー [ 24/08/04(日) 01:11 ], 累計 2 回
Re: UBUNTUサーバーをUSBメモリ上で運用(スワップ)
Ubuntuサーバーはインストーラーおまかせで入れた、というか、おまかせでないとなかなか許してくれない。
32GBのUSBメモリに第1パーティション1GBをfat32、残りを全部 ext4でフォーマットされている。スワップパーティションは設定されていない。よしよし。と、思って油断した。
swapon -s コマンドで見ると、/swap.img なるファイルがスワップに使われていた、なんと4GB。
このPCの実装RAMは 8GB なので、じっさいにはスワップは起こらない。でもいちおう停止しておく。
swapoff /swap.img
でも Ubuntuを再起動するとまた設定されてしまうので、 swap.img を削除しておく。これで 4GB削減。
USBメモリの中は、Ubuntuシステムと mono で 3GBくらい。opensim関係が 約500MBで、合計3.5GBくらいになった。
ネットで検索といっても「Ubuntu USB」だとインストールメディアの話しか出てこない。
「Ubuntu SSD 寿命」で検索すると、いろいろ出てくる。でもまあ、そこまでしなくてもと思って、以上の対策だけで現在運用中。
32GBのUSBメモリに第1パーティション1GBをfat32、残りを全部 ext4でフォーマットされている。スワップパーティションは設定されていない。よしよし。と、思って油断した。
swapon -s コマンドで見ると、/swap.img なるファイルがスワップに使われていた、なんと4GB。
このPCの実装RAMは 8GB なので、じっさいにはスワップは起こらない。でもいちおう停止しておく。
swapoff /swap.img
でも Ubuntuを再起動するとまた設定されてしまうので、 swap.img を削除しておく。これで 4GB削減。
USBメモリの中は、Ubuntuシステムと mono で 3GBくらい。opensim関係が 約500MBで、合計3.5GBくらいになった。
ネットで検索といっても「Ubuntu USB」だとインストールメディアの話しか出てこない。
「Ubuntu SSD 寿命」で検索すると、いろいろ出てくる。でもまあ、そこまでしなくてもと思って、以上の対策だけで現在運用中。
Re: UBUNTUサーバーをUSBメモリ上で運用(キャッシュの書き込み頻度)
ネットにあった記事:Ubuntu LinuxでSSDの寿命を延ばすための設定 によると
キャッシュの書き込みの頻度を調整できるらしい。
/etc/sysctl.conf に以下の行を追加。
vm.dirty_writeback_centisecs = 180000
centsecは 1/100秒。180000 で30分。
Ubuntuの標準は 5秒だそうです。これを(私の)パピーのUSBメモリへの書き込み頻度と同じにした。
USBは差しっぱなしだからこれで困らない。急ぐ場合は sync コマンド。またPCシャットダウン時には書き込みされる。
/etc/sysctl.conf を書き換えた上で
sudo sysctl -p
で受け付けられたみたい。
キャッシュの書き込みの頻度を調整できるらしい。
/etc/sysctl.conf に以下の行を追加。
vm.dirty_writeback_centisecs = 180000
centsecは 1/100秒。180000 で30分。
Ubuntuの標準は 5秒だそうです。これを(私の)パピーのUSBメモリへの書き込み頻度と同じにした。
USBは差しっぱなしだからこれで困らない。急ぐ場合は sync コマンド。またPCシャットダウン時には書き込みされる。
/etc/sysctl.conf を書き換えた上で
sudo sysctl -p
で受け付けられたみたい。
UBUNTUサーバーを更新しました
メインPCの更新にともない、そのお古を opensimサーバーおよびWebサーバーとしました。
Ubuntu server をUSBメモリにインストールしてるので、それを新しいハードに差せば良いと思っていたら、そうではありませんでした。ネットワークアダプタの固有値を記憶しているようです。
そこだけ書き換えれば良いのですが、途中で操作を誤ったらしく、USBメモリの内容を壊してしまい、再インストールするはめになりました。
Ubuntu serverのインストール、なかなかたいへんです。おいおい書いていきたいと思います。
Ubuntu server をUSBメモリにインストールしてるので、それを新しいハードに差せば良いと思っていたら、そうではありませんでした。ネットワークアダプタの固有値を記憶しているようです。
そこだけ書き換えれば良いのですが、途中で操作を誤ったらしく、USBメモリの内容を壊してしまい、再インストールするはめになりました。
Ubuntu serverのインストール、なかなかたいへんです。おいおい書いていきたいと思います。
Ubuntu serverのインストールはなたいへんだった
たいへんでした。つまづいたところをメモ。
1. インストールメディアの作成
Ubuntu ダウンロードのページから Ubuntu Server 24.04.1 LTS をダウンロード。
ターゲットマシンは UEFIブートなので、 .isoファイルの中身をUSBメディアにそっくりコピー。これで起動はするが、でも途中で止まる。
USBメモリへの書き込みツールが必要だった。Windowsならば Rufus。Linuxからなら UNetbootin。
ダウンロードした unetbootin-linux64-702.bin に実行属性をつけるが、クリックしても動かない。端末を起動して ./unetbootin-*.bin で動く。
2.ターゲットメディアの準備
今回は USBメモリへのインストールだが、内蔵メディアでも同じ。ボリューム全体をそっくり使ってのインストールなので、パーティションやフォーマットはインストーラーにお任せなのだが、あらかじめパーティションを少なくとも1つ作っておかないとボリュームをインストーラーが認識しない。
GPartedでパーティションテーブルを作成。パーティションを作成し fat32でフォーマットしておく。
3.インストーラーの操作
この後、インストールメディアとターゲットメディアの両方を実機に接続。ネットにも接続された状態でインストールを進める。
別のPCでインストール作業を行うとネットワーク・インターフェースが異なる。後で実機に合わせて書き直しになるので面倒。
インストールメディアで起動してからの操作は概ね こちらのページ と同じだが、やはりつまづいたところを以下に。
4.固定IPの設定
さきのページの要領でよい。入力が終わるとインストーラーがネットワークをテストするのだが、これに時間がかかる。 [Done] が表示されるまでじっくり待たなければならない。
5.LVM group
さきのページの例では LVM group にチェックが入っているが、これは外したほうが良い。パピーは LVM group が読めないからだ。
パピーで読み書きできると、パピーで設定ファイルをいじるとかできる。Ubuntuではいちいち sudo なのがパピーだとGUIで楽ちん。
6. Minimum インストール
さきのページは Ubuntu 20 なのでこの選択肢は無いが、 22 以降では Minimum インストールができるので、これにした。ただしこれだとインストール語にいろいろ追加インストールが必要。
7. OpenSSHのインストール指定
これをしておかないと後々たいへん。
8.インストールの完了
インストールの全体は、環境によるけど1時間くらいかかる。それでインストールの完了が分かりにくい。
画面一番下の [View full log] の下に [Reboot Now] が出たら完了の合図。
9.インストール後の追加パーケージ。
今回 Minimumでインストールしたので、いろいろ追加が必要。
vi すら入ってない。代わりに nano をインストールした。
pingも打てない。 iputils-ping
1. インストールメディアの作成
Ubuntu ダウンロードのページから Ubuntu Server 24.04.1 LTS をダウンロード。
ターゲットマシンは UEFIブートなので、 .isoファイルの中身をUSBメディアにそっくりコピー。これで起動はするが、でも途中で止まる。
USBメモリへの書き込みツールが必要だった。Windowsならば Rufus。Linuxからなら UNetbootin。
ダウンロードした unetbootin-linux64-702.bin に実行属性をつけるが、クリックしても動かない。端末を起動して ./unetbootin-*.bin で動く。
2.ターゲットメディアの準備
今回は USBメモリへのインストールだが、内蔵メディアでも同じ。ボリューム全体をそっくり使ってのインストールなので、パーティションやフォーマットはインストーラーにお任せなのだが、あらかじめパーティションを少なくとも1つ作っておかないとボリュームをインストーラーが認識しない。
GPartedでパーティションテーブルを作成。パーティションを作成し fat32でフォーマットしておく。
3.インストーラーの操作
この後、インストールメディアとターゲットメディアの両方を実機に接続。ネットにも接続された状態でインストールを進める。
別のPCでインストール作業を行うとネットワーク・インターフェースが異なる。後で実機に合わせて書き直しになるので面倒。
インストールメディアで起動してからの操作は概ね こちらのページ と同じだが、やはりつまづいたところを以下に。
4.固定IPの設定
さきのページの要領でよい。入力が終わるとインストーラーがネットワークをテストするのだが、これに時間がかかる。 [Done] が表示されるまでじっくり待たなければならない。
5.LVM group
さきのページの例では LVM group にチェックが入っているが、これは外したほうが良い。パピーは LVM group が読めないからだ。
パピーで読み書きできると、パピーで設定ファイルをいじるとかできる。Ubuntuではいちいち sudo なのがパピーだとGUIで楽ちん。
6. Minimum インストール
さきのページは Ubuntu 20 なのでこの選択肢は無いが、 22 以降では Minimum インストールができるので、これにした。ただしこれだとインストール語にいろいろ追加インストールが必要。
7. OpenSSHのインストール指定
これをしておかないと後々たいへん。
8.インストールの完了
インストールの全体は、環境によるけど1時間くらいかかる。それでインストールの完了が分かりにくい。
画面一番下の [View full log] の下に [Reboot Now] が出たら完了の合図。
9.インストール後の追加パーケージ。
今回 Minimumでインストールしたので、いろいろ追加が必要。
vi すら入ってない。代わりに nano をインストールした。
pingも打てない。 iputils-ping