ProxmoxでNFSがマウントできなくなった

コミュニティ版Proxmox 4.1Link
+---------+
|         +--------------------->Internet
| Proxmox +
|         +--(192.168.0.0/24)--[ NFS Server (FreeNAS 9.3) ]
+---------+
という形体で運用していたのですが、マシン移動・インターネット側IPアドレス変更となったところ、storage 'NFS Server' is not onlineと出てNFSがProxmox上でマウントできなくなりました。NFS Server側のサブネットには変更が無い上、mount -t nfs (NFS Server address):/foo/bar /mnt/pve/NFS_Serverとやると難なくマウントできる。はて?

Proxmox掲示板Link を読んで

  • IP v6とNFS v4を切る → 変化なし
  • もう一度Proxmox上でNFSサーバを登録する → 変化なし
  • rpcinfo -p ipofnfsserverコマンド → 即座に応答が来て、問題無し (つまりProxmoxでis not onlineと出るのは他の原因)
  • /usr/share/perl5/PVE/Storage/NFSPlugin.pmを読むと、NFSサーバの状態を見るのに使っているコマンドはrpcinfoじゃなく、showmountだった(掲示板の記事はProxmoxのバージョンが古い)。で、shoumount --no-headers --exports (NFS Server address)と打つと、タイムアウトエラー。原因はここか…

なぜタイムアウトが起きるのだろうと調べていると、NFSサーバ上でクライアントのIPアドレスが逆引きできないと、接続拒否するLink とのこと。FreeNASの/etc/hostsにクライアントのIPアドレス(192.168.0.x)を登録すると、showmountコマンドもエラーなし、Proxmoxも無事NFSフォルダをマウントできました。

さて、残る問題はなぜ今までこの設定なしでマウントできていたのか…

[参考]

— posted by mu at 01:38 pm   commentComment [0]  pingTrackBack [0]

foltiaのDBをSqlite→PostgreSQLに変更

私が使いだしたときの(無償版)foltiaLink は、データベースエンジンとしてSQLiteLink を使うようになってました。昔のバージョンやfoltia ANIME LOCKERLinkPostgreSQLLink を使っているようですが、個人で使う用途にはSQLiteで十分だろうと思ってました。

が、実際に使いだすと、時々現れる「Database is locked」なるエラー。背後で動いているコマンド(新しい番組データの取得など)がデータベースへのアクセス権限を独占し、こちらが予約を入れようとしても失敗、背後のコマンドがいつ終わるか分からないのでいつになったら予約ができるのか分からず、イライラすることも。これはトランザクションや排他ロックをデータベースファイル全体へのロックで実装しているSQLiteでは避けられない現象なのかなと。

ということで、下記の手順でPostgreSQLに引っ越しました。Database is lockedはいつ発生するか分からないので改善したか確認できていませんが、放送予定や番組表などが見違えるほど早く表示されるようになりました。予想してなかった副作用ですが、こっちの方がメリット大きい。

さて、今後長期間運用で変な誤動作しなければいいのですが…

[手順]
データベース作成。ここでのスーパーユーザーはPostgreSQLのそれで、rootではない。
  1. PostgreSQLおよびPHPとPerlモジュールをインストール(FreeBSDの場合postgresql93-server, p5-DBD-Pg, php55-pgsql, php55-pdo_pgsql)
  2. PostgreSQLを外部から接続する必要がないなら、postgresql.confにlisten_addresses = 'localhost'を指定
  3. スーパーユーザーで以下のコマンド実行(パスワードを'foltia'以外にする場合には後述のperl/foltia_conf1.pl, php/foltia_config2.phpも適切に設定を)
    $ createuser --no-adduser --no-createdb --password foltia
    $ echo "alter role foltia with password 'foltia'" | psql
    $ createdb --owner foltia -E UTF8 foltia
    

データのコピー

  1. SQLiteのデータをダンプ
    $ sqlite3 ~foltia/foltia.sqlite .dump > foltia.sqlite.dump
    
  2. ダンプしたファイルの編集
    • PRAGMA foreign_keys=OFF;を削除
    • CREATE TABLE foltia_programの部分
      • integer PRIMARY KEY AUTOINCREMENT → serial PRIMARY KEY
    • CREATE TABLE foltia_subtitleの部分
      • startdatetime, enddatetimeの型をinteger → bigint
    • CREATE TABLE foltia_epgの部分
      • startdatetime, enddatetimeの型をinteger → bigint
      • integer PRIMARY KEY AUTOINCREMENT→serial PRIMARY KEY
    • 最後の部分
      • DELETE FROM sqlite_sequenceを削除
      • INSERT INTO "sqlite_sequence" VALUES('foltia_epg',XXXXX) → select setval('foltia_epg_epgid_seq',XXXXX) (XXXXXは数字)
  3. foltiaもしくはスーパーユーザーで以下のコマンドを実行
  4. $ psql foltia < foltia.sqlite.dump

foltiaの設定変更

  1. perl/foltia_conf1.plのコメントアウトされているPostgreSQL設定の行を有効にし、SQLite向けの設定をコメントアウトする
  2. ## for postgresql
    $main::DSN="dbi:Pg:dbname=foltia;host=localhost;port=5432";
    require 'db/Pg.pl';
    
    ## for sqlite
    #$main::DSN="dbi:SQLite:dbname=/home/foltia/foltia.sqlite";
    #require 'db/SQLite.pl';
    
    $main::DBUser="foltia";
    $main::DBPass="foltia";
    
  3. php/foltia_config2.phpのコメントアウトされているPostgreSQL設定の行を有効にし、SQLite向けの設定をコメントアウトする
  4. define("DSN", "pgsql:host=localhost dbname=foltia user=foltia password=foltia");
    // define("DSN", "sqlite:/home/foltia/foltia.sqlite");
    

[2016/3/14 追記] Perlのフラグ付きUTF8による文字化けLink を避けるため、以下のファイルを変更。

  • perl/getxml2db.pl
  • perl/xmltv2foltia.pl
変更内容
  • use Encode;を追加(use Jcode;はたぶん抜いてもいい)
  • [2016/3/23 追記] use utf8;を追加
  • foreach(@line)ループ内の最初に$_ = Encode::decode('utf8', $_);を追加、ファイルから読み込んだ文字列を即刻フラグ付きにする。
  • jcode()->tr(str1, str2)の代わりに、標準のtr/str1/str2/を用いる。変換文字内に/(スラッシュ)が入っているので、エスケープを付ける。

— posted by mu at 11:45 pm   commentComment [0]  pingTrackBack [0]

できない…?

ディスクレスKVMホストを立ち上げるべく、iSCSIドライブにDebianをインストール・ブート可能にするLink 場合、ブートの初期段階に/etc/default/grubの内容でIPアドレスが設定されます。これは/etc/network/interfacesが読み込まれるより前。

このiSCSI接続に使用しているNICにKVM用のブリッジインターフェースも兼ねさせたいということは…考えるよね? ネットワークのコネクタ減るし。

調べた限りブリッジ設定にする場合、物理I/F(eth0とか)にはIPアドレスを設定せず、ブリッジI/Fで設定するらしい。が、今回は既に物理NICにIPアドレスが存在する。試しに物理I/F eth0→192.168.0.2、ブリッジI/F br0→192.168.0.3と設定したところ、OSは起動するもののサブネット192.168.0.0/24へはゲートウェイとしか通信できない(pingがunreachable)。

他にやってみたこと

  • /etc/default/grubに設定するI/Fをeth0からbr0に変更→ブート途中で/が見つからず停止(当然か…)
  • /etc/network/interfacesに"iface eth0:1 inet manual"と追加、これにブリッジを張る→改善せず
  • eth0とbr0のIPアドレスを同一にする→改善せず
  • br0を設定しない→KVMホストからは通信できるがVMが通信できないよね、多分

「(ブート時にブリッジが使えるよう)initramfsとか細工すればできそうだけどNIC追加した方が楽」Link ということらしいですが、なんか悔しい今日この頃。

[参考]

[2016/2/26 追記] 以下のようにサブネットを被らないようにすれば1つのポートで兼任できますが、別のサブネットが必要で常に使える方法じゃないかなぁ。

  • eth0 - 192.168.0.2/24を/etc/default/grubにて指定
  • eth0:1 - /etc/network/interfacesでiface eth0:1 inet manualと指定
  • br0 - /etc/network/interfacesでeth0:1を使ってブリッジ指定、アドレス192.168.1.2/24を割り当て

— posted by mu at 06:42 pm   commentComment [0]  pingTrackBack [0]

実サーバCentOS4をKVMにお引越し

備忘録。

実サーバー(HP ProLiant ML350 G4)のCentOS4.9をProxmox VEへお引越し。HDDイメージをddでコピーして起動。

ブート時にaacraid.koがNo such deviceとエラー
Proxmox VE 4.1で指定できるSCSI HBAはLSI Logic系でAdaptecは無しなので、当然といえば当然。
  1. CentOS 4.8 DVDをレスキューモードで起動。以下/mnt/sysimageに無事マウントされたと仮定するが、失敗したら手動でマウント。
  2. 念のためinitrd(initrd-2.6.9-101.ELsmp.img)のバックアップを作成
  3. /mnt/sysimage/etc/modprobe.confからAdaptec系ドライバを削除
  4. mkinitrd -v -f /mnt/sysimage/boot/initrd-2.6.9-101.ELsmp.img 2.6.9-101.ELsmp
  5. リブート
ブート時にルートが見つからない(mkrootdev: label / not found)となりKernel panic
  1. grub.confのroot=LABEL=/をroot=/dev/sda3としても同じ
  2. KVM指定でOSドライブをSCSIからSATAに変えても同じ
  3. OSドライブをIDEと指定することで起動するようになる。grub.confはroot=LABEL=/でいいが、/etc/fstabと/boot/grub/devices.mapはsda→hdaに書き換える
Virtio化
IDEで起動に成功していればVM上のCentOS上で変更可能。上のIDE化を飛ばして直接SCSI→Virtio化もできそうだけど、まずはIDE化してVM上で動く設定を手に入れた方が安心できる。
  1. 念のためinitrd(initrd-2.6.9-101.ELsmp.img)のバックアップを作成
  2. mkinitrdをVirtioオプションを付けて実行 mkinitrd --with virtio --with virtio_ring --with virtio_blk --with virtio_net --with virtio_pci -v -f /boot/initrd-2.6.9-101.ELsmp.img 2.6.9-101.ELsmp
  3. /boot/grub/devices.mapのhdaをvdaに変更
  4. /etc/fstabで/dev/hda?形式で指定しているならhda→vdaに変更。UUID=形式なら変更不要。
  5. リブート

[参考]

— posted by mu at 05:16 pm   commentComment [0]  pingTrackBack [0]

そんな理由で

先日の知人との会話。

知人:ノートPCを(Windows7から)Macに買い替えようと思う。
私 :ふむ、今のマシンにご不満でも?
知人:毎日シャットダウンするの面倒なんだもん。Macなら蓋閉じるだけでいいって聞いたよ。

…世の中の認識ってこんなもんらしい。多分このアドバイスした人はMacしか使ったことないのでしょうけど。こんな理由で買い替え需要があるなんて、すごいわMac(嫌味じゃなくて)。

— posted by mu at 02:50 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0803 sec.
prev
2017.5
next
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31