テクノロイド

コンピュータやゲーム他、色々日々思ったことをつづっていきます。

ポスグレのDBバックアップを取ろうとしたらエラー(→直った)

2019-04-22 21:43:34 | Ubuntu Linux
pg_dumpでエラーメッセージが出た
---
pg_dump: server version: 9.3.24; pg_dump version: 9.1.24
pg_dump: aborting because of server version mismatch
---

先日v9.1を削除してv9.3を再インストールしてうまく行ってるかと思ったのだが、何じゃこれは!
まずはバックアップが取れないと何もできないじゃんかあ。
psqlとバージョンが違うってどういうことだよ。

root@server# psql --version
psql (PostgreSQL) 9.3.24
root@server# pg_dump --version
pg_dump (PostgreSQL) 9.1.24
root@server# which psql
/usr/bin/psql
root@server# which pg_dump
/usr/bin/pg_dump
root@server# cd /usr/bin
root@server# file psql
psql: symbolic link to `../share/postgresql-common/pg_wrapper'
root@server# file pg_dump
pg_dump: symbolic link to `../share/postgresql-common/pg_wrapper'

psqlもpg_dumpも同じファイルへのシンボリックリンクなのに何でバージョンが違うんだよ。
勘弁してくれよお。どうすりゃいいんだよお!!!


→何とか出来て良かった。

/usr/share/postgresql-common/pg_wrapperがperlスクリプトだった。
スクリプトの内容をちゃんと追っかける能力も時間もないのだが、同じフォルダにsupported-versionsというスクリプトもあった。
$ /usr/share/postgresql-common/supported-versions
9.3
と、v9.3の取得はできているのに何故9.1を拾ってくるんだろう?と考えて、もしかして/etc/postgresql/の下に9.1/と9.3/があるのがいけないのか?と思って消すのはアレなんで移動してみた。
root@server# cd /etc/postgresql
root@server# mv 9.1 ..
root@server# pg_dump --version
pg_dump (PostgreSQL) 9.3.24

できてホッとした(T_T)

LXDコンテナから印刷

2019-04-21 02:35:01 | LXC/LXD,コンテナ,snaps
LXDコンテナからプリンタへ印刷したいんだけど、通常はホストのLANとネットワークが違うせいでDNSSDとか使えなくてプリンタが登録できない。macvlan使ったり、プリンタに固定IPアドレス設定しとけばできるんだけど。
あ〜色々方法あるじゃん(笑)
まあ今回はプリンタドライバを入れたくないし、空きIPを消費したくないということにして、ホストに登録してあるプリンタ設定を使って印刷可能にする。

ここの「プリンターのリモート接続手順」「違うLAN上の場合」を参考にした。
いやバージョン等で随分挙動が違ってあれだけど。
(とりあえずホストUbuntu16.04、コンテナUbuntu14.04で試した。本番はバージョン逆だけど)

ホスト側で「このシステム(略)プリンターを公開する」と「インターネットからの印刷を許可する」にチェックを入れる。後者はIPPを使えるようにするオプションらしい。
コンテナ側をSSH接続できるようにして(←省略)、sudo system-config-printerでプリンタ設定を開く。
lpadminグループにubuntuユーザを登録しておく。(←必須?)
system-config-printerとかCUPSはapt-getしないと使えないかな。

プリンタ設定でホストと同様に設定画面を開くんだが、最近は参考ページの図のような「他のシステムで共有されているプリンタを表示する」オプションがないようだけど何で?これが設定できればそのまま使えるようになるんだけど、セキュリティ関係で無くしたのかな?
何とか設定できないかと必死にググってもわからず、/etc/cups/cupsd.confとかいじってみたけどわからず。
仕方ないので使うプリンタを登録することにした。
追加(Add)ボタンをクリック。DevicesのNetwork Printerをクリック。
Find Network PrinterをクリックするとHOSTの入力欄が表示されるので10.49.54.1(←ホストのlxdbr0のアドレス)を入れてエンター(or Find)。
するとホストに登録されているプリンタが表示されるのでどれか選んで参考先のように登録する。

そしてやっぱりGUIの設定だとコンテナの場合は使えるようにするまでが面倒くさいので、今後はCLIで登録できるか試す。
/etc/cups/printers.confとずっと前の自分の書き込みを参考にしてやってみた。
root@u14jp:~# lpadmin -p conPrinter -E -v ipp://10.49.54.1:631/printers/hostPrinter
※hostPrinterはホストに登録してあるプリンタ名

まだ実際に試してないけど、printers.conf見る限りは良さげ。→OKだった。

LXDコンテナにカスタムボリューム追加

2019-04-18 04:48:28 | LXC/LXD,コンテナ,snaps
u14というLXDコンテナの/optにカスタムボリューム(わかりやすく言うと別ディスクというか)を割り当てる。
こちらを参考にしたんだけど、ちょっとややこしいんでメモ。


host$ lxc storage list
+---------+-------------+--------+------------------------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+------------------------------------------------+---------+
| default | | dir | /var/snap/lxd/common/lxd/storage-pools/default | 1 |
+---------+-------------+--------+------------------------------------------------+---------+
host$ lxc storage volume list default
+-----------+-----------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-----------+-----------+-------------+---------+
| container | u14 | | 1 |
+-----------+-----------+-------------+---------+
host$ lxc storage volume create default optvolume
host$ lxc storage volume list default
+-----------+-----------+-------------+---------+
| TYPE | NAME | DESCRIPTION | USED BY |
+-----------+-----------+-------------+---------+
| container | u14 | | 1 |
+-----------+-----------+-------------+---------+
| custom | optvolume | | 1 |
+-----------+-----------+-------------+---------+
host$ lxc storage volume attach default optvolume u14 data /opt
host$ lxc exec u14 bash
root@u14:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 439G 104G 314G 25% /
none 492K 4.0K 488K 1% /dev
udev 3.8G 0 3.8G 0% /dev/tty
tmpfs 100K 0 100K 0% /dev/lxd
tmpfs 100K 0 100K 0% /dev/.lxd-mounts
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 780M 80K 780M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
none 100M 0 100M 0% /run/user

/optが見当たらないのでマウントされてるのかわからない!?なんて思ったらfindmntで確認するようだ。
root@u14:~# findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda2[/var/snap/lxd/common/lxd/storage-pools/default/containers/u14/rootfs]
ext4 rw,relat
├─/run tmpfs rw,nosui
│ ├─/run/lock tmpfs rw,nosui
│ ├─/run/shm tmpfs rw,nosui
│ └─/run/user tmpfs rw,nosui
├─/opt /dev/sda2[/var/snap/lxd/common/lxd/storage-pools/default/custom/optvolume]

ミスってたのかと思ったら、マウントされてるようで良かった。
別ディスクじゃなくて別ボリュームだからこうなるのかな。

P.S.
今んとこカスタムボリュームのバックアップ(export)はできないみたい。
転送やsnapshotは取れるようになってるのに。

LXDのディザスタリカバリ

2019-04-15 23:35:02 | LXC/LXD,コンテナ,snaps
LXDのコンテナを外付けメディアに置いて、他のPCでも使えればいちいちコピーもせずに済むんだけどと思ってた。
例えばPC本体ストレージが壊れても直ぐに予備PCで代替できるし、外出する時にノートPCに付け替えれば全く同じ環境が外で使える。
その辺が書かれたサイトが見つけられずによくわからなくて困ってたんだけど、ようやく時間を取ってトライ&エラー&グーグル翻訳でやり方がわかった。

以下btrfsやzfsじゃないdir形式のストレージプールを使用。

(hostAの作業)
とりあえず試しで8GBのUSBメモリを「ディスク」ツールでext4フォーマットして、ここ(LXDドキュメント翻訳プロジェクト)を参考にストレージプールを追加する。
(※ USB2.0だからか作成したコンテナの動作がめちゃ遅い。→diskじゃなくgpartedでやり直したら問題なし。)
hostA$ mkdir /media/user/EXT4USB/newpool ←念の為にフォルダを作成したが必要ないようだ
hostA$ lxc storage create dirpool dir source=/media/user/EXT4USB/newpool
hostA$ lxc launch ubuntu: u18 -s dirpool
hostA$ lxc copy u16 u16bk -s dirpool ←コンテナ名を変えないと同じだって怒られる
hostA$ lxc storage list
+---------+-------------+--------+------------------------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+------------------------------------------------+---------+
| default | | dir | /var/snap/lxd/common/lxd/storage-pools/default | 7 |
+---------+-------------+--------+------------------------------------------------+---------+
| dirpool | | dir | /media/user/EXT4USB/newpool | 2 |
+---------+-------------+--------+------------------------------------------------+---------+

(hostBの作業)
hostAで作ったUSBメモリのnewpool(dirpoolにあるコンテナ)を取り込む。
ここ(LXDドキュメント翻訳プロジェクト)を参考にディザスタリカバリすればいいかと思ったんだが、「通常は storage-pools/NAME-OF-POOL/containers/コンテナ名 にマウントしておく 必要があります。」ってのが実際どうやればいいのかわからなかった。いくらググっても「うまく行かん」ってQ&Aしか見つからない。回答が「マウントしろ」で具体的なやり方がわからなかったので試すしかなかった。
まあフォルダのマウントだからバインドマウントするのかなと思ったけど、バインドマウントを知らなかったらわからないままだったかな。
hostB# mkdir /var/snap/lxd/common/lxd/storage-pools/dirpool
hostB# mount --bind /media/user/EXT4USB/newpool /var/snap/lxd/common/lxd/storage-pools/dirpool
hostB# lxd import u18 ←「lxc import」じゃない。紛らわしいので注意
hostB# lxc storage list
+---------+-------------+--------+------------------------------------------------+---------+
| NAME | DESCRIPTION | DRIVER | SOURCE | USED BY |
+---------+-------------+--------+------------------------------------------------+---------+
| default | | dir | /var/snap/lxd/common/lxd/storage-pools/default | 7 |
+---------+-------------+--------+------------------------------------------------+---------+
| dirpool | | dir | /media/user/EXT4USB/newpool | 1 |
+---------+-------------+--------+------------------------------------------------+---------+
※とりあえずコンテナ1つやればストレージプールの設定は完了するそうだ。

以上でうまく行くけど、まず最初に試したコンテナでlxd importやった時に「volatile.idmap.currentなんて知らん」とエラーが出てうまく行かずに焦った。ググっても見つからないから勘弁してくれと思いつつ、コンテナのフォルダにあるbackup.yamlから該当行を削除して再実行したらうまく行って良かった。

多段sshとscp

2019-04-12 05:15:38 | LXC/LXD,コンテナ,snaps
多段sshしたいんだけど、ちょっとググるとProxyCommandを使った面倒くさい方法が出てくるのでメモ

例えば、リモートホストのLXDコンテナにssh接続したい時
ssh -t user@リモホaddr ssh user@コンテナaddr

リモートホストのLXDコンテナにscpしたい時はProxyCommand要るかな?
scp -oProxyCommand='ssh -W %h:%p user@リモホaddr' user@コンテナaddr:file .

--
ついでに、リバースプロクシでプロクシ先(?)と同一LANの別のホストからプロクシを使いたい場合
プロクシ先の/etc/ssh/sshd_configでGatewayPorts yesを設定する必要がある
※ -gオプションでいいのか?(未確認)

sparse file

2019-04-10 13:55:19 | Ubuntu Linux
UWR#564 Raspberry Pi 3 Model B+にUbuntu 18.04 LTSをインストールする
を見てたら、fallocateという見慣れないコマンドがあったのでググってみた。

1GBのダミーファイルを作成するコマンドは?というQ&Aがわかりやすかったけど、今度は「sparse file にはなりません」というのが気になってググった。

ArchWikiにあったスパースファイルが参考になった。
それにしてもArchWikiってすげえ。日本語になってるところが特に。

MEGAPi CASEとメガドライブミニ

2019-04-05 00:07:54 | ゲーム
SBC(Single Board Computer)ネタを見るためにツベのExplainingComputersをよく見ている。
そこでRaspberry Pi MegaPi Caseという動画がひな祭りに公開されてた。
メガドライブ型RaspberryPiケースの紹介だった。

本家メガドライブはプアマンズX68000にならないかなと、発売して間もなく購入。当時Beepという雑誌では、オプションでキーボードやフロッピードライブが発売されるような記事が写真付きであったが結局発売されなかった。なのでX68000は結局ExpertIIの中古を17万円出して買ったなあ。

それにしても動画を見るとしっかりと作られてて驚く。これが$25なんて。
先日ラズパイをプアマンズX68000にしようとX68000 for RaspberryPiケースを買ったんだけど、あまりの造りの違いにちょっと虚しさが。

なんて思っていたらメガドライブミニの発売日が決定
6980円からだなんてやっす〜〜。
今の所「大魔界村」と「ストライダー飛竜」がラインナップに入ってないのであんま興味が湧かないが。
とはいえ多分まだ動作するメガドラ本体もその2つのゲームも持ってるから、ラインナップに入っても買わんかもなあ。

とか思いつつ、ハック情報のあるプレイステーションクラシックが税込み送料込みで5千円切ったようなので物欲が・・・。
プレイステーション持ってなかったんでノスタルジーも無いんだが。

そういえばノスタルジーついでに書いとくと、先日テレビの特番ドラマ「名探偵・明智小五郎」の最後にMZ-80の勇姿が!(Gyaoで4/14 18:00まで視聴可能=1:38:00辺り)

追記)
「大魔界村」と「ストライダー飛竜」がラインナップに入ってないなんて言ってたら、海外だけどこんなのが出るとは思わなかった。アーケード版ならやりたいなあ。3万円くらいするらしいが・・・。

追記2)
メガドラミニのラインナップ第2段が発表された。40本中最初の10本は定番ものでこんなもんかなと思ってたが、今回の10本は渋いというか、セガのミニに対する取り組みが本気なんだと思わせるものだった。7千円程度でハードごと買えちゃうなんてビックリのラインナップ。更に次はもっと盛り上がるとハードルを上げる発言まで飛び出す始末。セガファンとしては買っちゃうだろうな。