ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2016年7月20日水曜日

Sakura VPS + CentOS 6.8でkernel panicになったので対処

普段から使っているSakura VPSの管理用サーバーに突然接続できなくなり、Webの管理メニューから強制再起動、その後の一部始終メモです。

結果としては、カーネル関連の再インストールをしただけで復旧することができました。
サーバー管理者ながら、Kernel回りには触れたことがなかったので、備忘録として残しておきます。

まず結果だけ

yum clean all
yum reinstall kernel
reboot
3つのkernel関連パッケージが再インストールされ、その後の再起動で問題なく起動したため終了です

発覚までの経緯

いつも使っているWebアプリにつながらない。
Web管理画面から管理コンソールを開き、起動ログを確認していたところ、謎のメッセージがでて処理が止まってしまっていることが発覚。
ログを読む限り、ハードディスクが見つからない。
ハードディスクの故障!?なんてことも疑いましたが、まずはブートローダー(GRUB)を開いてみることに。(ハード起動後F2で選択画面)

過去のKernelが選択できたので選ぶと無事起動。
どうやらハードディスクの問題ではなさそうです。
なお、ハードディスクを疑ったのは、並列で稼働しているSakura VPSが普通に起動していたため。

kernelが更新された?

yumの更新ログを確認
cat /var/log/yum.log

Jul 14 03:29:03 Updated: kernel-firmware-2.6.32-642.3.1.el6.noarch
Jul 14 03:29:12 Installed: kernel-2.6.32-642.3.1.el6.x86_64
Jul 14 03:29:14 Updated: kernel-headers-2.6.32-642.3.1.el6.x86_64
Jul 14 03:29:21 Installed: kernel-devel-2.6.32-642.3.1.el6.x86_64
いました。 これが原因である可能性が高いです。
原因となりうるケースをネットで検索していく中で、initrdが書かれないという事象があった事に遭遇。

grub.confの内容調査

cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/vda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
hiddenmenu
title CentOS (2.6.32-642.3.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.3.1.el6.x86_64 ro root=UUID=12d557fa-b0a0-4011-bcb0-fa93c7b06543 rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
title CentOS (2.6.32-642.1.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.1.1.el6.x86_64 ro root=UUID=12d557fa-b0a0-4011-bcb0-fa93c7b06543 rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
        initrd /initramfs-2.6.32-642.1.1.el6.x86_64.img
title CentOS (2.6.32-642.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=12d557fa-b0a0-4011-bcb0-fa93c7b06543 rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
        initrd /initramfs-2.6.32-642.el6.x86_64.img
title CentOS (2.6.32-573.26.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.26.1.el6.x86_64 ro root=UUID=12d557fa-b0a0-4011-bcb0-fa93c7b06543 rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
        initrd /initramfs-2.6.32-573.26.1.el6.x86_64.img
title CentOS (2.6.32-573.22.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.22.1.el6.x86_64 ro root=UUID=12d557fa-b0a0-4011-bcb0-fa93c7b06543 rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
        initrd /initramfs-2.6.32-573.22.1.el6.x86_64.img


確かに、先頭の部分にinitrdの記載がありません。

修復を試みる

initrdを書けば直る可能性を意識しつつ、何かしらの不整合も疑うこととし、再インストールと判断。
yum自体の動作不良も疑うため、キャッシュはクリアしたのちに再インストール
yum clean all
yum reinstall kernel
/etc/grub.confの内容を確認 (抜粋)
terminal --timeout=10 serial console
hiddenmenu
title CentOS (2.6.32-642.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=12d557fa-b0a0-4011-bcb0-fa93c7b06543 rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
        initrd /initramfs-2.6.32-642.el6.x86_64.img
title CentOS (2.6.32-642.3.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.3.1.el6.x86_64 ro root=UUID=12d557fa-b0a0-4011-bcb0-fa93c7b06543 rd_NO_LUKS rd_NO_MD SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=C rd_NO_LVM rd_NO_DM nomodeset clocksource=kvm-clock console=tty0 console=ttyS0,115200n8r crashkernel=auto
        initrd /initramfs-2.6.32-642.3.1.el6.x86_64.img
すべての行にinitrdが書かれたので、復旧されたと判断、再起動

起動したので、終了となりました。

2014年12月22日月曜日

Linuxでディスク容量の確認・ディレクトリサイズの確認

いつもやっていることながら、忘れてしまうので備忘録です。

ディスク容量の確認

dfコマンドを使います。


[root@localhost ~]# df
Filesystem   1K-blocks   Used Available Use% Mounted on
/dev/vda3    410530084 96247604 293428672  25% /
tmpfs       1961240     4  1961236  1% /dev/shm
/dev/vda1     247919  130526   104593  56% /boot

ディレクトリサイズの確認

duコマンドを使います。

[root@localhost/]# du --max-depth=1 -h ./
4.0K   /logs
4.0K   /media
8.0K   /selinux
3.4G   /var

4.5G   /usr
4.0K   /mnt
176K   /dev
30M   /etc
0    /sys
21M   /root
581M   /lib
7.6M   /bin
24M   /lib64
8.0K   /.pki
4.0K   /srv
14M   /sbin
443M   /opt
6.8M   /tmp
83G   /home
あとはサイズが大きいところへ移動して再度検索していくと、順次追っていけると思います。

2014年3月13日木曜日

TeraTermでの複数ホスト接続をバッチ一発で実行

Linux機の運用を行っていると、複数端末に対してまとめて作業を
実施したいケースが出てきます。

仕組みを予め作り込んでおくことにより、使う時にはバッチ一発起動で
複数のホスト接続ができるようになります。

今回は接続までですが、改良する事によりそれ以降の処理も可能です。

構成イメージ

 


概略

  1. URLリストを作る
  2. バッチでURLリストを読み込み、TTPMacroを繰り返しで呼び出し
  3. TTPMacroで、URLを受け取り、ユーザとパスワード等を使って組み立てて、接続

実行するバッチの記載例

#TTPMacro.exeが存在するパスを指定
SET MACROEXEPATH=c:\Program Files (x86)\teraterm

#TTPMacro.exeを指定(固定
SET MACROEXE=ttpmacro.exe

#マクロが存在するパスを指定します。(フルパス必須)
SET MACROPATH=%~dp0\loginall.ttl

#ディレクトリを移動
cd /d %MACROEXEPATH% 

#urllist.txtを読み込んで、引数としてTTPMacro.exeを起動
for /F %%i in ( %~dp0\urllist.txt ) do start %MACROEXE% %MACROPATH% %%i

#元の位置に戻る
cd %dp~0

pause

実行するマクロの記載例

;パラメータ受け取り
HOSTADDR = param2
;ユーザー名とパスワードの定義(パラメータで受け取っても良いかも)
USERNAME = 'remoteuser'
PASSWORD = 'remotepassword'
;接続文字列の組み立て
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
;接続
connect COMMAND
;応答を待機
wait 'remoteuser@'
;マクロ終了
end

2014年2月25日火曜日

findとlocate (linux)

ふと気になったのでまとめ。(というか、あまり知らずに使っていました)

locate 【ファイル名(ファイル名の一部)】

ファイルリストをインデックス化し、インデックスを検索します。
インデックスファイル(slocate.db)が更新されていないと、古い検索結果がヒットします。


find / -name 【ファイル名】

ディスクを検索します。全件検索のためlocateよりは時間がかかります。


locateで使用しているインデックスファイルを更新するためには以下のコマンド

updatedb


インデックスは、ディストリビューションによってはcron.dailyで自動更新するように
設定されているようで、CentOS 6.4の場合、[makewhatis.cron]というものが
動いて、自動更新されるようです。


2014年2月21日金曜日

sedでファイルの特定行の文字を置き換える

同じような環境をいくつも作ると、手順化、sh化することが出てきます。

そんななか、各種インストールの後に行うconfの設定作業は
手作業の中でも間違うと危険な分類のため、できるだけ自動化したいところです。


今回、zabbixのAgent構築で使った使用例を纏めておきます。

※confの形はバージョン依存でもあるので、頻繁にconfが変わるアプリを使う場合にはご注意ください。

実施例

#ディレクトリ移動
cd /etc/zabbix/

#念のためバックアップ
cp zabbix_agentd.conf zabbix_agentd.conf.default

#ServerNameを、指定したサーバーへ置き換える
sed -i -e 's/Server=127.0.0.1/Server=zabbix-server.domainname.com/' zabbix-agentd.conf

#ServerActiveを置き換える
sed -i -e 's/# ServerActive=/# ServerActive=\nServerActive=zabbix-server.domainname.com/' zabbix-agentd.conf



#自分を宣言する #$HOSTNAMEはサブドメインが入っている変数

sed -i -e 's/Hostname=Zabbix server/Hostname='$HOSTNAME'.domainname.com/' zabbix-agentd.conf




変更点を目視で確認

diff zabbix_agentd.conf zabbix_agentd.conf.default


2013年11月13日水曜日

Raspberry Piを使ってできそうなこと

ネットで漁っているといろんな使い方がありそうですが、
自分がイメージしやすいかたちを幾つか。

アプローチ1:普通にLinuxの機能を乗っけて使う

  • Webサーバ
  • メディアサーバ
  • ファイルサーバ(容量と静音が課題か)

アプローチ2:ソフトウェアを作って、便利に使う

  • 各種サーバから自動的にログを収集して管理
  • NASと接続して統合ファイル管理のフロントエンドとして
  • 無線LANの通信速度を監視して遅くなったら勝手に再起動してくれる
  • DDNSクライアント
  • 不正アクセス監視

アプローチ3:多種多様なハードウェアとの組み合わせで、市販品と同等機能を構築

  • USB接続な案)
  • 電子工作込な案)
    • カメラモジュールつけて
      • ストリーミング配信
      • セキュリティ監視
    • GPSモジュールをつけて
      • 簡易GIS
      • 車載器
    • 温度湿度計をつけて
      • 定期監視かつアラーム

ここの領域は、費用対効果はともあれ市場にある製品と同じことができる気がしてます。

USB給電が可能なため、用途が相当広がりますね。

2013年11月11日月曜日

名刺サイズのLinux搭載可能パソコン(Raspberry Pi)

格安
http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi

色々と用途が広がるかもしれないのでしばらくウォッチ

Raspberry Piを使うための準備


  • 本体

これがないと始まらない。

  • SDカード

個人的には16GBくらい欲しい。Class10で。

  • 電源

MicroUSBに給電できるタイプのアダプタ
既存のものがあればそれでもいいかと思います。

  • キーボード

ネットワークでつながってしまえばターミナルでもなんとかなりそうですが
初期セットアップなど諸々の想定をすれば必要。

1)USBキーボード
2)USB BluetoothドングルでBluetoothキーボード

  • マウス

CUI前提なので考慮外。
GUI動かすならキーボードと同じ要領で。

  • LAN環境

私の使いたい用途だとローカルOnlyってのは考えづらいので
USBの無線LANドングルを用意

  • USBハブ

キーボードと無線LANでUSBポートが埋まってしまうのは悲しいので
余裕があればセルフパワーのUSBハブなどあると用途が広がります。
手持ちがあればバスパワーでもいいかもしれません。
一時の辛抱であれば、なくても良いですね。

  • HDMIケーブル

インストールの時にはあったほうがよいですね。RCAでもいいですが。
RCAで利用するのであれば音声出力用のミニジャックも。


これくらいあれば、ひとまずは物理的には足りそうです。

2013年11月1日金曜日

TeraTermで複数ウインドウに一括でコマンドを実行

自分用のTipsです。管理しているサーバーの台数が増えてくると
同じ手順を複数台のサーバーへ適用する事も出てくるので、そういった時に重宝しそうです。
  • TeraTermでホストへログイン
  • メニューバーから「コントロール」→「ブロードキャストコマンド」

  • 接続しているホストの一覧から、送信したいホストを選択
  • 入力欄で入力を開始すると、選択したホストに対してリアルタイムでテキストが送信される
複数端末への同時ログインと組み合わせて使用しています。

【備忘録】Kanon(Trac統合パッケージ)をインストールしたときのLinuxのパス

困った時の備忘録

Kanon(Trac統合パッケージ)をインストールしたときに、色々と迷子になったので備忘録
※Kanonはデフォルトインストールしている状態です


サイトのLogoを変更するとき

【ファイル】 /var/opt/kanon/trac/[プロジェクト名]/conf/trac.ini
【変更箇所】 [header_logo]のsrc
【実態の置場】 /var/opt/kanon/trac/[プロジェクト名]/htdocs/your_project_logo.png
【その他】 高さと幅を変えたい時には同じセクションの以下を変更(ない場合には追加)すればOK
height = (数値の値)
width = (数値の値)


ログイン前のトップ画面から[Register]を消したい時

trac.iniに以下を記載(ある場合には変更)
[components]
acct_mgr.web_ui.registrationmodule = disable


svnリポジトリが既にあって、変更したい場合

trac.iniを変更後、以下を実行
# trac-admin /var/opt/kanon/trac/[プロジェクト名] repository resync [svnリポジトリのフルパス]


添付ファイルの最大値を変更する

[attachment]
max_size = 1048576




2013年10月31日木曜日

Tracのプラグインカスタマイズ

Trac上でSVNのアクセス権を制御

http://trac-hacks.org/wiki/SvnAuthzAdminPlugin



[components]
svnauthz.* = enabled

[svnauthzadmin]
show_all_repos = true
read_only_display = false