ある、特定のユーザーのメールが一切来なくなった。
早速 /var/log/maillog を調べると
Oct 13 08:40:43 web5 dovecot: imap(xxxxx@kinryokai.net):
Error: rename(/xxx/kinryokai.net/xxx/new/1443067247.Vfc40Ia01e2M488912.web5.kinryokai.net,
/xxx/kinryokai.net/xxx/cur/1443067247.Vfc40Ia01e2M488912.web5.kinryokai.net:2,)
failed: Input/output error
この Input/output error をgoogle先生に聞くと The maildir filename has wrong S=size value とあった。
この復旧方法が分からなかったので、そのユーザーのmaildirを作り直そうと、コピーしようとしたら、newディレクトリーでエラーが出ていた。
又サイズもゼロなので、newディレクトリーをdeleteし、
# cd そのユーザーのメールディレクトリー
# mkdir new
# chown vuser:vuser new
でオーナーを変更し(vuserは私がmailのvirtualDomainで使っているユーザー名)
# chmod 700 new
で他のユーザーからは見れないようにする。
これで一様 postfix と dovecot を再起動し、メールソフトの方も再起動してもらったらOKになった。
もちろんエラーがあった時のメールもある。
現象: 私の2台のスマホの内、1台はつながるが、i-phoneの方がつながらない。もちろん以前はつながっていたし、いくらパスワードを設定してもダメ。そしておかしいのはパスワードをチェックをした様子は無く、即座につながらないと表示が出ること。
やった事:つながっているスマホをワザと切断し、パスワードを入れてもつながらなくなってしまった。何だこれは!!
解決:ルーター(無線のアクセスポイントも兼ねている)を再起動したら、問題解消。教訓:困ったときの再起動
ふと気がつくと(気がつくのがかなり遅いですが。あまりサーバーをチェックしていないのがバレバレ)WEBサーバーからのAIDEのチェックメールが届いていない。
これはrootに転送し、aliasesでプロバイダーのメールに転送しているのだが。
# echo test | mail root
でテストメールをrootに送るがISPのメールに届かないぞー!
それではと /var/log/maillog をチェックすると
to=<root@kinryokai.net>, orig_to=<root>, relay=virtual, delay=0.16,
delays=0.08/0.03/0/0.04, dsn=5.1.1, status=bounced (unknown user: "root@kinryokai.net")
私はメアドを postfixadmin で管理しているので早速、ログイン後 アドレス一覧を表示し(バーチャルホストの時は該当するドメインを選んで)
”転送先の追加”をクリック後、root@kinryokai.net のメアドを作成し普段使っているメアドに転送設定をした。再度
# echo test | mail root
とテストメールを出すとちゃんと、転送先のメールに届いたので、ISPのメアドを使う意味も無いので、AIDEのメールの送信先を、このサーバーで管理し、普段使っているメアドに設定した。
現在のバージョンは38.0.1です。ある時いつもは前回の終了時のタブを表示するのに、ホームページのみが表示される。
編集の設定(windowsはツールのオプション)から一般の起動にある”firefoxを起動するとき(S)”で前回終了時のウィンドウとタブを選んでもグレーアウト(私の設定では薄いブルーだが)していて選べない。
なんで!!
設定の中を色々見ていくと”プライバシー”に履歴があるのを見つけ、”履歴を一切記憶させない”になっていた。
ここを”履歴を記録させる”にしてfirefoxを再起動し再度、設定の一般で”firefoxを起動するとき(S)”を”前回終了時のウィンドウとタブを表示する”にし、又、再起動すると以前に開いていたタブが復元された。やれやれ
ある時、WEBにアクセスできない。調べるとmysqlが動いていない。
スタートしようにも
# service mysqld start
chown: `/webdata/mysql' の所有権を変更中: 読み込み専用ファイルシステムです
chmod: changing permissions of `/webdata/mysql': 読み込み専用ファイルシステムです
MySQL Daemon failed to start. mysqld を起動中: [失敗]
調べてもオーナーは mysql になっているし、オーナーの書き込みが可能になっているのに??
google先生に聞くと、ここに回答があった
ここによると、selinuxが有効になっているか、ファイルシステムが壊れかけているか、ファイルシステム上で食い違いが起きているかだそうです。なので
# /bin/dmesg
で確認してみると
EXT4-fs error (device vdd): ext4_mb_generate_buddy: EXT4-fs: group 144: 14340 blocks in bitmap,
14339 in gd JBD: Spotted dirty metadata buffer (dev = vdd, blocknr = 0).
There's a risk of filesystem corruption in case of system crash.
EXT4-fs warning (device vdd): empty_dir: bad directory (dir #393217) - no `.' or `..'
EXT4-fs warning (device vdd): empty_dir: bad directory (dir #393219) - no `.' or `..'
JBD2 unexpected failure: jbd2_journal_revoke: !buffer_revoked(bh);
inconsistent data on disk
ext4_forget: aborting transaction: IO failure in __ext4_journal_revoke
EXT4-fs error (device vdd): ext4_forget: error -5 when attempting revoke
EXT4-fs (vdd): Remounting filesystem read-only
Aborting journal on device vdd-8.
EXT4-fs error (device vdd) in ext4_free_blocks: Journal has aborted
EXT4-fs error (device vdd) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device vdd) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device vdd) in ext4_ext_remove_space: IO failure
EXT4-fs error (device vdd) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device vdd) in ext4_ext_truncate: IO failure
EXT4-fs error (device vdd) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device vdd) in ext4_orphan_del: Journal has aborted
EXT4-fs error (device vdd) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device vdd) in ext4_delete_inode: IO failure
EXT4-fs error (device vdd): ext4_lookup: deleted inode referenced: 1191615
私はここにはSSDを使っているので、HDDほどには故障しないと思い、思い切ってフォーマットし直して、バックアップしていたデーターで、復旧する事にした。
まずはこのサーバーを止め(kvmのサブホストで動いている)。該当する領域をフォーマットしなおして、バックアップデーターからリストアし、無事復旧した。
追記:コピー後 mysql が走らなかった。調べると
# chkconfig --list mysqld
サービス mysqld は chkconfig をサポートしますが実行レベルで参照されていません (run 'chkconfig --add mysqld')
と出たので
# chkconfig --add mysqld
とやって、
# service mysqld start
やっとOKになり、無事WEBにもアクセス出来た。
CentOS6.6でyumから入れるとバージョンは1.8.7とかなり古いのでrubyを入れるためrbenvからインストールする。
まずはgitをインストールする
# yum install git
自分の環境だけに(ログインしているユーザーのみ)インストールしたいので、普段使っているユーザーでログイン後
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
rbenv のコマンドラインツールを利用できるように
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
ここで一度ログアウトする。私は仮想環境でホストを作りそこにインストールをしているため、VNCでホストに入っているので、VNCからログアウト後、再ログイン
rbenvを確かめる
$ rbenv
rbenv 0.4.0-129-g7e0e85b
Usage: rbenv <command> [<args>]
以下略
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rubyをインストールする前に今後使うものをインストール
$ sudo yum install openssl-devel mysql-devel readline-devel
rubyのインストール。まずはインストールできるバージョンを調べる
$ rbenv install -l
かなり長いリスが表示されるのでgrepをつけ他方が見やすい。バージョン2があるのが判っていれば rbenv install -l|grep 2
ruby 2.2.0をインストールすことにする
$ rbenv install 2.2.2
おーっと、ここでエラーになった。エラーの内容は
Last 10 log lines:
make[3]: ディレクトリ `/tmp/ruby-build.20150213115701.3537/ruby-2.2.0/ext/fiddle/libffi-3.2.1' から出ます
linking shared-object fiddle.so
/usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32 against `.text'
can not be used when making a shared object; recompile with -fPIC
./libffi-3.2.1/.libs/libffi.a: could not read symbols: Bad value
collect2: ld はステータス 1 で終了しました
make[2]: *** [../../.ext/x86_64-linux/fiddle.so] エラー 1
make[2]: ディレクトリ `/tmp/ruby-build.20150213115701.3537/ruby-2.2.0/ext/fiddle' から出ます
make[1]: *** [ext/fiddle/all] エラー 2
make[1]: ディレクトリ `/tmp/ruby-build.20150213115701.3537/ruby-2.2.0' から出ます
make: *** [build-ext] エラー 2
どうやら libffi-devel が必要らしい。yumでインストール
$ sudo yum install libffi-devel
再度挑戦
$ rbenv install 2.2.2
今度は無事インストール出来たが、コンパイルしているのでものすごく時間がかかるので、気長に待つこと。
sambaのバージョンが4.1.16なったら、service samba startで起動しなくなった!
アップデートされたのは下記のプログラム
samba41-4.1.16-2.el6_23.wing.x86_64
samba41-libs-4.1.16-2.el6_23.wing.x86_64
samba41-client-4.1.16-2.el6_23.wing.x86_64
samba41-python-4.1.16-2.el6_23.wing.x86_64
samba41-dc-libs-4.1.16-2.el6_23.wing.x86_64
samba41-dc-4.1.16-2.el6_23.wing.x86_64
samba41-common-4.1.16-2.el6_23.wing.x86_64
それで、samba-tool domain provision を走らす。
全ての問い合わせに答えた後、
Looking up IPv6 addresses
ldb: module version mismatch in ../source4/dsdb/samdb/ldb_modules/acl.c : ldb_version=1.1.17 module_version=1.1.19
ldb: failed to initialise module /usr/lib64/samba/ldb/acl.so : Unavailable
Setting up secrets.ldb
centosのBASEレポにはないので、wingレポから持ってくるが、このままではBASEレポが優先されてしまうので、
/etc/yum.repos.d/CentOS-Base.repoを
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
enabled=0 ← これを追加し、BASEを無効にする
GUIのアップデートをするため、システム→管理→ソフトウェアの更新をクリック
ここで、httpd関連の二つと、postfix(私はpostgreyを入れているのでソースからコンパイルする必要があるので、
アップデートを止めてある)、sssd-common(これはlibldb(x86-64) = 1.1.13 を要求するが、sambaのために
1.1.16が入っているのでエラーになるため)のチェックを外し、更新をインストールをクリック、
終了後再び、samba-tool domain provision をもう一度走らし、問い合わせに答えた後は無事終了。
service samba start でsambaが走った。やれやれ
自分のサーバーからのメールが届いて入るので気がつかなかったが、外部からのメールが届かない。
自分のドメイン内のメールは送受信とも問題ない
この時のメールーのログ(/var/log/maillog)
Jan 20 13:58:08 web4 postfix/smtpd[10859]: connect from mm.e-trend.co.jp[221.253.81.58]
Jan 20 13:58:09 web4 postfix/smtpd[10859]: NOQUEUE: reject: RCPT from mm.e-trend.co.jp[221.253.81.58]:
554 5.7.1 Service unavailable; Client host [mm.e-trend.co.jp] blocked using rhsbl.ahbl.org; List shut down.
See: http://www.ahbl.org/content/last-notice-wildcarding-services-jan-1st;
from=<ds-id0i54rctffrl.febd91f4@mm.e-trend.co.jp> to=<f-otake@kinryokai.net> proto=ESMTP helo=<mm.e-trend.co.jp>
Jan 20 13:58:09 web4 postfix/smtpd[10859]: lost connection after RCPT from mm.e-trend.co.jp[221.253.81.58]
Jan 20 13:58:09 web4 postfix/smtpd[10859]: disconnect from mm.e-trend.co.jp[221.253.81.58]
Jan 20 14:00:27 web4 postfix/smtpd[11019]: connect from m112.secure.ne.jp[150.60.13.240]
Jan 20 14:00:28 web4 postfix/smtpd[11019]: 32390807B6: client=m112.secure.ne.jp[150.60.13.240]
Jan 20 14:00:28 web4 postfix/smtpd[11019]: disconnect from m112.secure.ne.jp[150.60.13.240]
送信相手に帰ったエラーメッセージ
Hi. This is the qmail-send program at m112.secure.ne.jp.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<f-otake@kinryokai.net>:
218.219.246.130 does not like recipient.
Remote host said: 554 5.7.1 Service unavailable; Client host [m112.secure.ne.jp] blocked using rhsbl.ahbl.org; List shut down.
See: http://www.ahbl.org/content/last-notice-wildcarding-services-jan-1st
Giving up on 218.219.246.130.
# gedit /etc/postfix/main.cf
smtpd_client_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_client,
reject_rbl_client all.rbl.jp,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
# reject_rhsbl_client rhsbl.ahbl.org, → コメントアウトする
check_client_access hash:/etc/postfix/access,
permit
# service postfix restart
これで外部からメールが来るようになった
現行のサーバーのバックアップを作っている時の事、特定のホスト間でpingが出来ない。
それぞれのホストではルーターへのpingも通るし、だからインターネットも出来ている。
結論はMACアドレスの重複。
何でこうなったか。KVMのサブホストを作るのに一からやるのはしんどいので、現行のホストの設定ファイルをコピーしてきた。
(/etc/libvirt/qemuにあるサブホスト名.xml)
ホスト名とIPアドレスがかぶるのは分かって居たので変更をしたが、これ以外にも
サブホストのUUIDと仮想ネットワークカードのMACアドレスもかぶっている。
これらを適当に変更したらOKになった。でも数時間無駄にした。
教訓:KVMのサブホストをコピーしたら、
サブホストのUUID、ホスト名、NICのMACアドレス、IPアドレス
を変更する事
もう少し詳しく書くことにする(2016-5-29追記)
まずはサブホストのUUIDとMACアドレスの重複から、
仮想化で無ければMACアドレスがかぶることは無いが(ネットワークICのベンダーとシリアルでかぶることは無い)
サブホストの設定ファイルを /etc/libvirt/qemu/XXXXX.xml 等からコピーをしたら、この中にMACアドレスが書いてあるので、必ず重複する。
まずはその解決方法。コピーした時に定義が反映していないときがあるので(必ずサブホストは止めておく)
# virsh define /etc/libvirt/qemu/xxxx.xml
で定義をしておく。次に定義ファイルの編集
# virsh edit 定義ファイル名(xxxx.xmlの .xml を取ったもの)
これで vi と同じ方法で編集できますので、
a でインサートモードにし、カーソルで該当個所に行き、不要な部分を削除し、そこに新しい分を追記し、escキー, w, q と連続して入力すると編集後の分が定義され保存されます。
念のため、再度
# virsh define /etc/libvirt/qemu/xxxx.xml
で定義し直し(多分やらなくてもいいかも)サブホストを 仮想マシンマネージャーから起動すると新しいUUIDとMACアドレスになっています。
ここでMACアドレスは XX:XX:XX:ZZ:ZZ:ZZ になっていますが、最初の XX:XX:XX はベンダーID(KVMの仮想化の場合 52:54:00 です、次の ZZ:ZZ:ZZ がシリアルですので、他のホストとかぶらないように適当に決めます)
次にホスト名(仮想マシンマネージャー上の名前ではなく、サブホスト自身の名前)と IPアドレスを変更しますが、これはサブホストのファイルを変更する必要がありますが、KVMは領域の中にさらに領域を作っていますので、メインのホストにマウントするには(編集の為に)コツがいります(もちろんサブホストは止めておく)
これには losetup と kpartx を使っていきます。私はLVMを使っていますので
# losetup -f
で使えるloop番号を調べ
# losetup /dev/loop番号 /dev/ボリューム名/サブホストに割り当てたLV名
# kpartx -a /dev/loop番号
さらに
# ls /dev/mapper
でmapperにあるファイルが表示されますので、その中に loop番号p1 などがあります。
これをマウントしますが、私はtestようのマウント場所を作っています(/test1,/test2)
# mount /dev/mapper/loop番号p1 /test1
サブホストの名前は
# gedit /test1/etc/sysconfig/network
抜粋
HOSTNAME=設定したいサブホストの名前
で保存後、IPアドレスは(私は固定IPで、NetworkManager は使っていません)
# gedit /test1/etc/sysconfig/network-scripts/ifcfg-eth0
抜粋
IPADDR=192.168.XX.XX
で後始末
# umount /test1
# kpartx -d /dev/loop番号
# losetup -d /dev/loop番号
それから再起動すればいい筈だったが、ブートでエラー(画像3)
これは前にも経験がある、多分MACアドレスをいじったために出たと思うが、/etc/udev/rules.dにある 70-persistent-net.rulesを削除し、
再起動すれば、自動でこのファイルを作ってくれるので正常に起動する
ある時、バックアップ用に今動いているサーバーと同じ型番のマザーボード(ASRockのAM1H−ITX)で新規インストールをしていた時のエラー。
このエラーどうもブートするDISKを間違えているみたいなので、まずはBIOSの設定を確かめる(このマザーは”DEL”でBIOSに)
案の定二つあるHARD DISK のOSをインストールしていないDISKからの起動になっていたので、変更し再起動。
今度は GRUB で止まったまま、ウンでもスンでもない。
困ったときはレスキューモードの起動。早速インストールDVDから起動。
画面が出たら上から三番目の Resucure installed system を選び起動、
最初に言語の選択、これは英語のままの方がいい。次がキーボードの選択、自分に合わせるがだいたいは jp106。次はネットワークだが、
今回はブートの問題なのでネットワークは無。その次の画面で Continue を選び。
次の画面で既存の領域が /mnt/sysimage にマウントされると表示が出る(確か2回出た気がする)
そして選択画面が出るので Shell Start Shell を選ぶとシェルになる。(確かパスワードは聞かれなかった)
早速、インストールされた領域に移る
# chroot /mnt/sysimage
でもって、grubの再構築
# grub-install /dev/sda
sdaは自分の環境に合わせる。
ごちょごちょと表示が出て(覚えていない)/boot/grub/device.map が表示されるが、ここが
(hd1) /dev/sda
(hd0) /dev/sdb
になっている。hd1などの定義をしているのは、多分昔からの互換性の為だと思う。
ともかくhd0がsdaでなくてはいけないので、vi(エディター、使い方は色んなWEBを参考にして) を起動し
(hd0) /dev/sda
(hd1) /dev/sdb
に変更し,保存後再起動。
今度は Cannot mount selected partition と出た。
再度、レスキューモードで起動後、chroot してから vi で /boot/grub/grub.conf を編集
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd1,0) ここも本来は hd0,0だがコメントなので直していない
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-[generic-]version.img
#boot=/dev/sdb ここも本来は sdaだがコメントなので直していない
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz (hd1,0)から(hd0,0)に
hiddenmenu title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0) (hd1,0)から(hd0,0)に
kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=4c914c3c-7ad5-4056-982a-2b2f75fcef48 rd_NO_LUKS
rd_LVM_LV=Swap/kvm5 rd_NO_MD crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
initrd /boot/initramfs-2.6.32-431.el6.x86_64.img
教訓:インストール時は最低のシステムで行い、いろいろな物は付け無い方がいい
今回はHARD DISKは1台だけであればトラブルは起きなかった筈。
確かサーバー製作でOSのインストール時、CentOS 6.5 はドライバーのインストールを尋ねられ、仕方なく6.4のLIVE DVDからインストールした。
今回は理由は不明だが、インストール出来た。マザーボードのバージョンが変わったか?