0

/proc情報をjson 形式で出してくれるツール(Chefの構成要素の1つらしいです)を入れてムフフとなろうとした時の、、、まさかのビルド半ばにしてフリーズし、RPMデータベースを再構築し復旧させ、ツールインストール成功した時の記録と記憶

ohai

kernelのバージョン,

cpu,

memorylanguages(ruby,perl,python等) のバージョン

device,

ip,

mac address,

/etc/passwd,

group,

などなど

/proc情報をjson 形式で出してくれるツール、ohai(Chefを構成する中の1つらしいです)
– – –
http://d.hatena.ne.jp/hogem/touch/20120613/1339595543
– – –
この記事を参考にやってみました。
記事主様ありがとうございました m(_ _ )m

が・・・

libyajlのビルド中でハングアップ

30分ほど様子見と平行し調査開始。
結論はrpmdbにて異常検出(deadlock)
詳細は下記に譲るとして、、、

◆概要

/var/lib/rpm 配下で管理されているrpmデータベースの排他制御管理している下記ファイル
__db.00[1-4]
正常非ず → ハング

◆復旧方法
rpm –rebuilddb← 注:-(ハイフン)2つです。環境により一つに見えるかもしれません。ご迷惑おかけいたします。
(rpmdbの再構築)

$ gem install ohai
Fetching: ffi-1.9.6.gem (100%)
Building native extensions. This could take a while...
Successfully installed ffi-1.9.6
Fetching: wmi-lite-1.0.0.gem (100%)
Successfully installed wmi-lite-1.0.0
Fetching: ipaddress-0.8.0.gem (100%)
Successfully installed ipaddress-0.8.0
Fetching: net-dhcp-1.3.2.gem (100%)
Successfully installed net-dhcp-1.3.2
Fetching: mixlib-shellout-2.0.1.gem (100%)
Successfully installed mixlib-shellout-2.0.1
Fetching: mixlib-log-1.6.0.gem (100%)
Successfully installed mixlib-log-1.6.0
Fetching: mixlib-config-2.1.0.gem (100%)
Successfully installed mixlib-config-2.1.0
Fetching: mixlib-cli-1.5.0.gem (100%)
Successfully installed mixlib-cli-1.5.0
Fetching: libyajl2-1.2.0.gem (100%)
Building native extensions. This could take a while...
Successfully installed libyajl2-1.2.0
Fetching: ffi-yajl-1.3.1.gem (100%)
Building native extensions. This could take a while...
Successfully installed ffi-yajl-1.3.1
Fetching: systemu-2.6.4.gem (100%)
Successfully installed systemu-2.6.4
Fetching: mime-types-1.25.1.gem (100%)
Successfully installed mime-types-1.25.1
Fetching: ohai-8.0.1.gem (100%)
Successfully installed ohai-8.0.1
Parsing documentation for ffi-1.9.6
Installing ri documentation for ffi-1.9.6
Parsing documentation for wmi-lite-1.0.0
Installing ri documentation for wmi-lite-1.0.0
Parsing documentation for ipaddress-0.8.0
Installing ri documentation for ipaddress-0.8.0
Parsing documentation for net-dhcp-1.3.2
unable to convert "\xDF" from ASCII-8BIT to UTF-8 for lib/net/dhcp/oui.txt, skipping
Installing ri documentation for net-dhcp-1.3.2
Parsing documentation for mixlib-shellout-2.0.1
Installing ri documentation for mixlib-shellout-2.0.1
Parsing documentation for mixlib-log-1.6.0
Installing ri documentation for mixlib-log-1.6.0
Parsing documentation for mixlib-config-2.1.0
Installing ri documentation for mixlib-config-2.1.0
Parsing documentation for mixlib-cli-1.5.0
Installing ri documentation for mixlib-cli-1.5.0
Parsing documentation for libyajl2-1.2.0←★

!?

$ ps -ef | grep [o]hai
vagrant 29375 9771 93 03:18 pts/2 00:16:03 /home/vagrant/.rbenv/versions/2.2.0/bin/ruby /home/vagrant/.rbenv/versions/2.2.0/bin/gem install ohai

プロセスがまだある・・・

こりゃ、ハングしたな。。。
ってことで調査開始

■ /var/lib/rpm配下にロックファイルがあるか確認

ls -l /var/lib/rpm/
合計 33992
drwxr-xr-x.  3 root root 4.0K  2月  8 16:56 2015 .
drwxr-xr-x. 20 root root 4.0K  2月  7 19:45 2015 ..
-rw-r--r--.  1 root root    0  3月  7 11:51 2014 .rpm.lock
        ・・・中略・・・
-rw-r--r--   1 root root  48K  2月  8 15:25 2015 Sha1header
-rw-r--r--   1 root root  24K  2月  8 15:25 2015 Sigmd5
-rw-r--r--   1 root root  12K  2月  8 15:25 2015 Triggername
-rw-r--r-- 1 root root 24576 2月 7 21:55 2015 __db.001 ←☆
-rw-r--r-- 1 root root 229376 2月 7 21:55 2015 __db.002 ←☆
-rw-r--r-- 1 root root 753664 2月 7 21:55 2015 __db.004 ←☆
-rw-r--r-- 1 root root 1318912 2月 7 21:55 2015 __db.003 ←☆

あったか・・・
■ 一旦インストールを強制終了

$ kill -kill 29375
$ ps -ef | grep [o]hai 
なにも表示されない ←強制終了成功
◆COFFEE BREAK
何らかの原因でハングアップしてしまったり、
終了させる手段のないプログラムを強制的に終了するには、
「-kill」または「-9」オプションを付けてkillコマンドを実行する。

$ ps ←プロセスを表示
PID TTY TIME CMD
885 pts/1 00:00:00 bash
1455 pts/1 00:00:00 vi ←ハングしたプログラム(PIDは1455)
1456 pts/1 00:00:00 ps

$ kill -9 1455 ←viのプロセス番号(PID)を指定
$ ←[Enter]キーを押す
[1]+ Killed vi ←強制終了した旨のメッセージ
$ ps ←念のため再度プロセスを表示して確認

PID TTY TIME CMD
885 pts/1 00:00:00 bash
1460 pts/1 00:00:00 ps

◆後処理
■ rpm DB 再構築(インストールされたパッケージヘッダーから、データベースのインデックスを再構築します)

$ ls -lrt | grep '__db.0*'
-rw-r--r-- 1 root root 24576 2月 7 21:55 2015 __db.001
-rw-r--r-- 1 root root 229376 2月 7 21:55 2015 __db.002
-rw-r--r-- 1 root root 753664 2月 7 21:55 2015 __db.004
-rw-r--r-- 1 root root 1318912 2月 7 21:55 2015 __db.003

■ ロックファイル退避

*注* この工程をカットすると、再構築できず途方に暮れることとなります。

$ mkdir __db.0*.`date +%F`
$ mv __db.0* __db.0\*.2015-02-08/ ; ls __db.0\*.2015-02-08/
__db.001 __db.002 __db.003 __db.004

rpm のデータベースの状態を確認してみます。
/var/lib/rpm 配下に存在する __db.* 以外のファイル群が rpm のデータベースです。
データベースは Berkeley DB を用いており、それぞれのデータベースの排他制御を行うために
__db.001, __db.002, __db.003, __db.004 のようなファイル名でロック管理を行っています。

■ rpm DB再構築

$ rpm --rebuilddb

■ 念の為、rpm -listでパッケージがでるか確認 → 問題なくコマンドは正常にとおる。

■ 再度、ohaiをgemる。

$ gem install ohai
Successfully installed ohai-8.0.1
Parsing documentation for ohai-8.0.1
Installing ri documentation for ohai-8.0.1
Done installing documentation for ohai after 3 seconds
1 gem installed

あっさり終わった!

やはり、
原因はなんかの契機でロックが発生し、フリーズした模様。

(該当時間のログからは根本原因はわかりませんでした・・)

早速、ohai実行!

$ ohai
{
"languages": {
"php": {
"version": "5.4.36",
"builddate": "Dec 19 2014 06:28:27"
},
"lua": {
"version": "5.1.4"
},
"ruby": {
},
"python": {
"version": "2.6.6",
"builddate": "Jan 22 2014, 09:42:36"
},
"c": {
"gcc": {
"version": "4.4.7",
"description": "gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) "
},
"glibc": {
"version": "2.12",
"description": "GNU C Library stable release version 2.12, by Roland McGrath et al."
}
},
"perl": {
"version": "5.10.1",
"archname": "x86_64-linux-thread-multi"
}
},
"root_group": "root",
"kernel": {
"name": "Linux",
"release": "2.6.32-504.3.3.el6.x86_64",
"version": "#1 SMP Wed Dec 17 01:55:02 UTC 2014",
"machine": "x86_64",
"os": "GNU/Linux",
"modules": {
"nfnetlink_queue": {
"size": "8111",
"refcount": "0"
},
・
・
・

"mysql": { "gid": 27, "members": [ ] }, "ntp": { "gid": 38, "members": [ ] }, "tcpdump": { "gid": 72, "members": [ ] } } }, "current_user": "vagrant", "uptime_seconds": 152873, "uptime": "1 day 18 hours 27 minutes 53 seconds", "idletime_seconds": 145497, "idletime": "1 day 16 hours 24 minutes 57 seconds", "ohai_time": 1423338891.3913987, "hostname": "dev", "machinename": "dev.hachim.jp", "fqdn": "localhost", "domain": null, "cloud_v2": null, "init_package": "init" } 完了

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です