Browse Tag: linux

Rescue モードで LVM なパーティションをマウントする方法

LVM な / パーティションがディスクあふれを起こした影響で、ファイルシステムがおかしくなったので、Rescue モードで起動しました。
しかし、LVM なパーティションは自動的に認識していなかったので、そのときのマウントする方法をメモしておきます。


# lvm vgscan -v
# lvm vgchange -a y
# lvm lvs –all
# mount /dev/mappger/ < マウントポイント>

な感じで マウントができます。

ただ、今回ファイルシステムがおかしくなってしまったので、マウントする前に fsck したところ、ちゃんとマウントできるようになりました。


# fsck -n /dev/mapper/

それでは、皆様良いお年を!!!

Ubuntu で KVM をアンインストールする方法

Ubuntu で KVM をアンインストールしないといけない場面があったので、その方法をメモしておきます。


$ sudo rmmod kvm-intel kvm
$ sudo vi /etc/modprobe.d/blacklist-kvm.conf
blacklist kvm
blacklist kvm-intel
$ sudo apt-get purge ubuntu-virt-server libvirt-bin qemu-kvm kvm-ipxe libvirt-bin virtinst python-koan
$ sudo rm -fr /var/lib/libvirt/qemu
$ sudo rm -fr /etc/libvirt/

こんな感じで大丈夫だと思います。
可能なら、BIOS で Intel VT-x を無効にしておいてもいいかもしれませんね。

mbox 形式のメールを再送信する方法

Postfix の設定漏れなどで、/var/spool/mail 以下にある mbox 形式のメールを再送信したい場合、次のコマンドで実行すれば mbox 形式のファイルをまとめてメールで再送信することができます。

# cd /var/spool/mail
# formail -s sendmail -v -t -oiee < ./naoya

再送信し終わったら、/var/spool/mail 以下にある mbox 形式のファイルを削除すれば完了です。

ちなみに formail コマンドは、Ubuntu の場合 procmail パッケージに含まれています。

LinuxでCPUの動的クロック変更を無効にする方法

最近のLinuxでは、自動的にCPUの動的クロック変更が有効になっています。トラフィックの激しいサービスを受けるサーバーの場合、無効にしたかったので、その方法を調べてみました。エコでなくてすいません・・・。

まず、Ubuntu 12.10 amd64 では、次のとおりです。

1. cpufrequtils パッケージをインストールします

$ sudo apt-get install cpufrequtils

2. 現在の状態を確認します

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
ondemand
...

ondemand という表示が CPU コア数分表示されている場合、CPU の動的クロック変更が有効になっています。

ついでに現在のクロック数を確認します

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1600000
...

1.6GHz で動作しているようですね。

3. governor を performance にして、CPU の動的クロック変更を無効にします

$ sudo vi /etc/init.d/cpufrqutils
GOVERNOR="performance" に変更します
$ sudo /etc/init.d/cpufrequtils restart

これだけで変更可能です!

4. 念のためちゃんと設定されているか確認します

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance

現在の動作クロック数を確認します

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
2134000

2.13GHz で動作しているようです。
その他、動的クロック数の最小・最大を確認するには、次のコマンドで確認できます。

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq
1600000
...
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
2134000
...

ちなみに CentOS5 だと、cpufreq-utils パッケージをインストールして、/etc/sysconfig/cpuspeed の GOVERNOR に performance を追加して、/etc/init.d/cpuspeed restart を実行するだけでできます。

自宅サーバなどあまり使っていないサーバなどは、CPU の動的クロック変更を有効にしてエコにして、激しいサーバは無効にするのがいいではないかと思います。
今晩のピーク時間帯の負荷で比較して、効果のほどを確認したいと思います。

参考記事
CPU frequency scaling in Linux with cpufreq

追記:
CPU 的には Intel Xeon L5630 @ 2.13GHz だとこの設定は可能でしたが、Intel Xeon L5520 では proc 以下の cpufreq がなかったので CPU 依存しますので注意してくださいね!
L5630/L5520 を比較してみると Max Turbo Frequency が空なので対応していないようですね!

KVM ではまったお話

先日、Intel Xeon CPU L5410 x 2 の 1U サーバに、CentOS 5.8 x86_64 ベースで二つの KVM ゲストをインストールしようとしました。

当然ながら、Intel VT が有効になっていました。

# cat /proc/cpuinfo | grep vmx
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm
...

NIC は、いつものとおり br0 というブリッジデバイスを作成しました。
ゲスト OS は、koan でさくっとインストールしました。Virtio は、Network / Disk ともに組み込んでインストールしました。

まず、1つめのゲスト OS をインストールして、ネットワークに接続できることを確認して、1つめのゲスト OS を起動した状態で、2つめのゲスト OS をインストールしました。
2つめのゲスト OS をインストールしたところで、さて2つめのゲストを起動させようと思って、virsh list コマンドでチェックしてみると・・・

# virsh list
Id Name State
----------------------------------

なんと1つめのゲスト OS が起動していません。1つめのゲスト OS は起動させた状態のままだったはずなのに、なぜか起動していません。おかしいと思いながら、まず2つめのゲスト OS を起動した状態で、次に1つめのゲスト OS を起動すると起動してネットワーク接続のあたりで何も言わずに落ちてしまいます。

/var/log/messages をチェックしたところ、次のようなログが残っていました。

Jun 15 13:30:36 host kernel: br0: port 3(vnet1) entering disabled state
Jun 15 13:31:18 host kernel: device vnet0 entered promiscuous mode
Jun 15 13:31:18 host kernel: type=1700 audit(1339734678.391:16): dev=vnet0 prom=256 old_prom=0 auid=4294967295 ses=4294967295
Jun 15 13:31:18 host kernel: New device vnet0 does not support netpoll
Jun 15 13:31:18 host kernel: Disabling netpoll for br0
Jun 15 13:31:18 host kernel: br0: port 2(vnet0) entering learning state
Jun 15 13:31:33 host kernel: br0: port 2(vnet0) entering forwarding state

br0 は、eth0 のブリッジデバイスで、ゲスト OS 二つとも br0 を設定してインストールしました。
他の Xeon 5600 番台のサーバでは何の問題もなかったのに不思議です・・・原因を調べてみたのですが、さっぱり原因が分からず、KVM から Xen 3.4 系に切り替えたところ問題なく2つ同時にゲスト OS を起動させることができました。ちなみに Xen 4 系だと起動してしばらくするとネットワークに接続できなく現象が遭遇してしまったので Xen 3.4 系にしました…(これもはまりました・・・)。

原因がさっぱり分からず相当気持ち悪いのですが、Nehalem 以前の CPU は Xen を使うのが安定なのかもしれませんね。

[CentOS/SL] セキュリティ・バグフィックスアップデートの追従速度の比較

CentOS 5 / Scientific Linux 5 のセキュリティ・バグフィックスアップデートの早さを比較してみました | Carpe Diem を前に書きましたが、6 系も調べてみました。

まず、RHEL 6 のセキュリテ・バグフィックスィアップデート情報はこちら

2012/05/21 執筆時現在で、最新 3 件のセキュリティ・バグフィックスアップデートは、次のとおりです。

上記のアップデートが、どの程度の速度で CentOS / SL 6 系で追従されているか確認しました。
結果は、次のとおりでした。

  • 2012-05-15 RHSA-2012:0571-1: CentOS: 2012-05-16, SL: 2012-05-18
  • 2012-05-14 RHBA-2012:0572-1: CentOS: 2012-05-14, SL: 該当なし(※)
  • 2012-05-10 RHBA-2012:0552-1: CentOS: 2012-05-10, SL: 該当なし(※)

※該当なしとなっているのは、SL のメールリングリストで確認できなかったもので、実際に SL 6.2 のアップデートパッケージでも確認できませんでした。

SL は、追従やアップデートの早さで最近使われることになったと思っていたのですが、今回の調査では CentOS の方はアップデートが早いということになりました。

ということで、個人的には CentOS 5 系なサーバを 6.3 をターゲットにしてアップグレードしようかなと検討中です。

今からはじめるさくらVPS – Part 1

今月 2012 年 4 月からさくら VPS がリニューアルされましたね!

さくら VPS 2G  ですが、海外の VPS と比べてもとても格安だったので、思い切って 1 年契約してみました。僕は、初めてさくら VPS を使ってみたので、OS の設定から、初期設定まで忘れないようにまとめておきたいと思います。最初のリリース後にかなりの人気があったみたいで、僕は申し込みが再開されてから無事に申し込むことができました。

まずは、さくら VPS 2G を公式ページから申し込みます。このとき、さくらのアカウントが必要なのでアカウントをもっていない人は登録します。

さくらの VPS を申し込むと、すぐに『申し込み完了』メールが届きます。そのあと、しばらくすると(僕の場合六時間後くらいでした)『仮登録完了のお知らせ』のメールが届きます。このメールに、サーバの IP アドレスと、ユーザ名、パスワードが書かれています。

これから、さくら VPS のスクリーンショットを掲載していますが、IP アドレスなど個別情報に関するものは塗りつぶしてあるのでご了承下さい。

さっそく、さくら VPS コンソールに接続して、IPアドレスとパスワードを入力します。

VPS ホームの画面が表示されます。初期状態だと、標準 OS の CentOS 6.2 x86_64 がインストールされた VM が停止状態になっています。このまま、CentOS を起動することができます。しかし、ここは試しに別の OS を再インストールしてみることにしました。なお、カスタム OS をインストールするには、JRE のインストールが必要です。OSX Lion の場合は、このあたりの情報を参考にして事前にインストールしておいて下さい。

左側のメニューから、「OS 再インストール」選択します。

次に「カスタム OS のインストールへ」を選択します。

今回は、OS として Fedora 16 x86_64  を選択しました。Fedora は、ほぼ最新のカーネルやパッケージを扱うことができるので、最新の Linux 技術を試すのにうってつけの環境です。「確認」ボタンをクリックします。

カスタム OS のインストール確認が表示されるので「実行」ボタンをクリックします。

Chrome の場合、Java プラグインの実行確認が表示されますので、許可します。インストール情報は、OS のインストールの際に必要なので、そのまま表示しておきましょう。

しばらくすると、Java アプレットが実行されて、インストール画面が表示されます。

キーボードの種類を選択します。ご自身で使われているキーボードの種類を選択して下さい。

いつも通りの Fedora の GUI インストール画面が表示されます。

今回は、VPS になるのでメインのパーティンションを暗号化してみます。暗号化パーティションでインストールすると、OS の起動のたびにマウントするためのパスワードの入力が必要なので注意しましょう。GPT パーティションになるので、「Use All Space」を選択した状態で、「Encrypt system」と「Review and modify partitioning layout」をチェックしています。この状態から「BIOS boot」パーティションだけを削除しないように、好みのパーティションレイアウトに変更してみました。

このとき、アンダースコアが入力できないのですが、Macbook Air 英語キーボード上から「Ctrl + Command + -」で入力できました。次のようなパーティションレイアウトにしてみました。

 

フォーマット確認後、暗号化パーティションのパスワードを入力する画面が表示されるのでパスワードを入力します。

次にネットワークの設定画面が表示されます。さくら VPS のインストール情報をもとにネットワーク IPv4 の設定をします。

以上の設定でインストールが始まりますので、ビールでも飲みながらしばらく待ちましょう。

インストールは、5分くらいで完了します。インストールが完了すると、Java アプレットの VNC の画面が閉じます。

ブラウザのさくら VPS のトップページに戻り、サーバを起動します。起動後、リモートコンソールをクリックします。

「VNC コンソールを開く」をクリックします。暗号化パーティションをマウントするため、パスワードの入力待ち状態になっているのでパスワードを入力します。

お馴染みのログイン画面が表示されました。この状態になれば、ターミナルから SSH 経由で接続できるので、Fedora の初期設定をはじめていきましょう。

初期設定は、次のエントリでまとめていきたいと思います。

cobbler ではまったメモ

cobbler 経由で、CentOS 5.7 x86_64 を kickstart 経由でインストールしたとき、次のようなログは cobbler サーバ上の syslog に出力されていました。


Feb 7 21:43:23 10.0.4.3 ERROR insufficient disk space: installing
package initscripts-8.45.38-2.el5.centos.x86_64 needs 791MB on the /
filesystem
Feb 7 21:43:23 10.0.4.3 ERROR error running transaction:
installing package m2crypto-0.16-8.el5.x86_64 needs 823MB on the /
filesystem
...

正しく、100GB で ext4 でフォーマットしているのにもかかわらず、ディスク用不足というメッセージでインストールに失敗していました。
しばらく原因を探ってみると、cobbler のベースの distro の CentOS がバージョン 5.3 で、ext4 に対応する前のバージョンだったことが原因でした。CentOS 5 系では、ext4 がサポートされたのは 5.5 からでした。

ということで、次のような感じで、cobbler ベースの distro の CentOS をバージョン 5.7 に差し替えて無事インストールすることができるようになりました。hoge というプロファイルがある場合は、次のように distro を入れ替えることができます。


# cobbler import --path=rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/5.7/os/x86_64/ --name=centos57-x86_64
# cobbler profile edit --name=hoge --distro=centos57-x86_64
# cobbler profile edit --name=hoge-xen --distro=centos57-xen-x86_64

すこしはまってしまったので、備忘録代わりにメモをしておきます。

sched_clock() overflow after 208.5 days in Linux Kernel

Linux kernel 2.6.28 以降に、約 208.5 日で再起動してしまうという問題が見つかったようです。
情報ソース:セキュリティメモ

RHEL5 系には該当しませんが、RHEL6 系に該当するので、注意が必要です。

問題があるカーネルのバージョンは、次のとおりです。

  • 2.6.28 〜 3.1.4

すでに Linux kernel 2.6.32.50 / 3.0.13 / 3.1.5 で修正されていますが、現時点で RHEL6 でセキュリティパッチが提供されていませんので、RHEL6 系のディストリビューションは注意が必要そうです。

なお、VMware や Xen などで仮想化マシン上の Linux は影響がない模様です。Xen Dom0 の場合は不明です。。。

Linux でとあるプロセスの実行ディレクトリを確認する方法

ふと、とある作業で Linux でとあるプロセスの実行ディレクトリを確認する方法を知りたかったので調べてみました。
プロセス ID を特定できれば、次のコマンドで一発で分かります。


$ /proc/$PID/cwd
lrwxrwxrwx 1 root wheel 0 Dec 27 17:52 /proc/$PID/cwd -> /usr/local/hoge

この他にも /proc/$PID には、プロセスに関する情報がありますが、exe には実行ファイルパスが分かったりと、何かと便利ですね。

# 追記
@ishikawa84g さんから、次のコマンドでも同じことができるとコメントをいただきました!ありがとうございます!

$ usr/sbin/lsof -p $PID | grep cwd
ruby $PID root cwd DIR 9,0 4096 24675239 /usr/local/hoge