Browse Month: December 2012

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

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


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

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

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


# fsck -n /dev/mapper/

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

mod_proxy_html

mod_substitue を使うと、手軽に Apache プロキシ経由で HTML コンテンツを書き換えることができて、とても便利です。

例えば、ActiveMq の管理画面なんかは、次のような設定にすると http://proxy/mq1/ 以下に手軽にまとめることができます。


<Location /mq1>
ProxyPass http://mq1:8161
ProxyPassReverse http://mq1:8161
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s| href=[\"']([^\"\?]*)[\"']| href=\"/mq1$1\"|"
Substitute "s| src=[\"']([^\"\?]*)[\"']| src=\"/mq1$1\"|"
Substitute "s|url\(([^(]*)\)|url(/mq1$1)|"
</Location>

Hadoop(CDH) の管理画面の場合は、次のような設定になります。同じく、/dfs でアクセスできるようにしています。

<Location /dfs>
ProxyPass http://namenode1:50070
ProxyPassReverse http://namenode1:50070
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s| href=[\"']([^\"\?]*)[\"']| href=\"/dfs$1\"|"
Substitute "s|;url=([^\"\?]*)\"|;url=/dfs/$1\"|"
</Location>

JobTracker の場合は、次のような感じですね。

<Location /jobtracker1>
ProxyPass http://jobtracker1:50030
ProxyPassReverse http://jobtracker1:50030
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s| href=[\"']([^\"\?]*)[\"']| href=\"/hj1$1\"|"
Substitute "s|;url=([^\"\?]*)\"|;url=/hj1/$1\"|"
Substitute "s| src=[\"']([^\"\?]*)[\"']| src=\"/hj1$1\"|"
</Location>

同じような Apache module に、mod_proxy_html があるんですが、思い通りに HTML コンテンツを書き換えることができなかったので、mod_substitute でやってみました。

 

Hadoop の古いログを削除するには

CDH3 系などで、Hadoop の古いログを削除するためには、cron を設定すると良さそうです。ただし、userlogs ディレクトリは、定期的に自動的に削除されるため、無視しています。

いろいろと試して結果、次の内容に落ち着きました。

次の例は、CDH2 の場合、hadoop ユーザの cron に設定します。

0 6 * * * nice -n 19 find /var/log/hadoop/ -maxdepth 1 -path "/var/log/hadoop/userlogs" -prune -o -name "hadoop-*" -user hadoop -type f -mtime +30 -delete

次の例は、CDH3u3 以降の場合、hdfs / mapred ユーザそれぞれの cron に設定します。

0 6 * * * nice -n 19 find /var/log/hadoop/ -maxdepth 1 -path "/var/log/hadoop/userlogs" -prune -o -name "hadoop-*" -user hdfs -type f -mtime +30 -delete


0 6 * * * nice -n 19 find /var/log/hadoop/ -maxdepth 1 -path "/var/log/hadoop/userlogs" -prune -o -name "hadoop-*" -user mapred -type f -mtime +30 -delete

本当は、-maxdepth オプションをつけなくはなかったのですが、userlogs ディレクトリを検索対象からはずしているのにもかかわらず、hdfs ユーザの cron から permission denied エラーメッセージが出力されてしまったので、仕方なく -maxdepath オプションをつけました。。

Apache Hadoop Log Files: Where to find them in CDH, and what info they contain | Apache Hadoop for the Enterprise | Cloudera

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 パッケージに含まれています。