SSDドライブを最適化する

SSD(ソリッドステートドライブ)は、ハードディスクよりも高速にアクセスできるが、書き込み、消去頻度が高いとアクセス速度が落ちてしまう。
Linuxでは、fstrimコマンドを使用することでWindowsでいうところのデフラグを実行することが出来、アクセス速度向上が見込める。
コマンド例)
fstrim /dev/sda

ban4ipインストールしてみました

オープンソースアンカンファレンス金沢2016でT.Kabuさんからのご紹介のあった
fail2banをやめてBan4ipにしませんか?
を早速試してみました。
ApacheやSSH、postfix、dovecot等のログを解析して失敗を検知した接続元のIPアドレスをiptablesに書き込みしてフィルタリングするデーモンになります。
IPv6にも対応しているところが優れています。
CentOS7の環境でしたが、問題なく導入でき1日間で17回BANできています。
インターネット環境にサーバを公開するということは常に攻撃にさらされていると感じました。
自動BANツールを導入していない方はぜひ導入してみるとよいと思います。
なお、サーバを再起動する際には、banした設定が消えてしまうので /sbin/service iptables save を忘れずに!

runasコマンド

Linux のsudoコマンドに該当するWindowsコマンド
runas /user:hogehoge “cmd /K”
と実行するとパスワードが要求される。
認証が成功するとコマンドプロンプトが開いて、hogehogeユーザとしてコマンドを実行できる
サイレントに実行する場合には、
runas /user:hogehoge “cmd /C (スクリプト名)”
になる。
ドメインユーザもできるので、ADにログインしている状態で別ユーザで実行が可能な点は便利。

logrotateを使う

ログファイルによってディスクフルにしないようにするためには、logrotateを利用するわけだが、一部ハマったことがあったので、記録しておく。
1.logrotateを実行すると怒られる
$ sudo /usr/sbin/logrotate /etc/logrotate.conf
error: skipping “(ログファイルのパス)/logs/debug.log” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”) Set “su” directive in config file to tell logrotate which user/group should be used for rotation.
どうやらログが記録されているフォルダの権限が、rootユーザではないことが原因のようだ。(腑に落ちない点はあるが。。。。)
設定ファイルにsu設定を行っておき、ログの書き込みを行うことが可能なユーザー、グループを指定する。
$ cat /etc/logrotate.d/hogehoge
(ログファイルのパス)/logs/debug.log {
daily
rotate 7
missingok
notifempty
create 0664 apache apache
su apache apache
nodateext
}
2.ローテートされたファイルに日付が付加される。
昔は、ローテートされたファイルに数字が付加されていたような気がしたが、Cent OS 7では、ファイル名-YYYYMMDDになっている。
見やすいのだが、プログラムでログファイルを自動解析しようとするといささか不便である。
/etc/logrotate.conf
に dateext が設定されていることが原因。これをコメントアウトするか、個別のログで解除したい場合には、上記例のように nodateext を設定すればよい。
参考サイト:
ログローテートしない – 揮発性のメモ
logrotate パーミッション エラー (r271-635)

Windowsで”.”から始まるファイル、フォルダを作成する

「第2回 Bluemix × SoftLayer ユーザーグループ合同勉強会@北陸~IBMクラウドサービスを使って遊ぼう~」に昨日参加してきました。
ハンズオンは2回目の参加ですが、なかなか勉強になります。
.htaccess とかWidowsで作成しようとすると
「ファイル名を入力してください」
と怒られる。
入力してるよー!と突っ込みながら、泣く泣く拡張子をつけてそれからリネームしていた。
ところが、最後に”.”を付けるとリネームせずに作成できることが判明。
“.htaccess”を作りたければ、”.htaccess.”と入力してファイルを作ると作成できる。
フォルダも同じ。
もしや、Ctrl+Escなみの隠し技?それとも当たり前?

mbox形式のデータをMaildir形式に変換する

サーバ移行作業中に誤ってメールをmbox形式で/var/spool/mail/(username) で受信してしまっており、Maildir形式に移行する必要が発生した。
優れたツールがあったので、紹介しておく。
wget http://perfectmaildir.home-dn.net/perfect_maildir/perfect_maildir.pl -O /usr/local/bin/perfect_maildir.pl
cd /usr/local/bin/
chmod u+x perfect_maildir.pl
./perfect_maildir.pl /home/(username)/Maildir < /var/spool/mail/(username) >> /tmp/migrate-maildir.log 2>&1
root権限での実行を想定しています。
上記を実行すると、/tmp/migrate-maildir.log には、
Inserted NNN messages into maildir /home/(username)/Maildir/ in N seconds
というログが表示され、実際にNNN件のメールデータが移行されています。

Windows 標準コマンドでミリ秒スリープする方法

LinuxにあるsleepコマンドはWindowsでいうところのtimeoutコマンドになるが、ミリ秒には対応していない。
ミリ秒待たせたい場合には、下記で対応できる。
ping 1.1.1.1 -n 1 -w [wait time] > NUL
例)300msec待たせる
ping 1.1.1.1 -n 1 -w 300 > NUL
タイムアウトすることを前提にウエイト時間を使って待たせる方法になる。
リソースキットのsleepコマンドがミリ秒対応しているという情報源もあったが、肝心のリソースキットが見つからず断念。。。。
※画面に表示させないようにするためには、NULLではなくNULなので注意。Linuxでは/dev/null 紛らわしい。。

xfsファイルフォーマット

BUFFALOのNASのディスクフォーマットによく採用されており、最近ではRed Hat Enterprise Linux 7(Cent OSも7)よりデフォルトのファイルフォーマットになったxfsについて。
昔からあるファイルフォーマットらしいが、その割にはCent OS 6以下ではパッケージを読み込まないとマウントできないという変わったファイルフォーマットである。
ちなみにCent OS 6では、xfsprogsパッケージをインストールすればよいのだが、64bit版にしかパッケージにないため、32bitではどうやってもマウントできない。
ということで、32bitマシンでは、KNOPPIX 7のLive DVDのイメージをDVDに書き込みして、そこからマウントすることがxfsフォーマットしたディスクを読み出すための最短ルートという話でした。
32bitマシンもう捨てろよって話なんだけども、、、、

Windows 8.1が壊れる

Winodwsを起動したらなぜか30分ほど待たされるので、電源ボタンを長押しして再起動したら
Recovery(Error code:0xc0000034)の画面(リンク先はPanasonicのサポートサイト)が表示されて起動できなくなった。
どうやらBCDという領域がクラッシュしてしまったようだ。
Dellのノートパソコンだったので、リカバリーメディアもなくUSB回復ドライブを作ってあったのでなんとか復旧できたが、ないと途方に暮れるところだった。
Windows 8.1を購入される場合には、インストール後にUSB回復ドライブを作成しておくことを強くお勧めします。

CentOS 6.4にVirtualBoxをインストールする

WindowsXPがサポート切れになるための対策として、最新のパッチが当たった状態の仮想マシンを作っておいて残しておこう作戦。
最近の仮想化ソフトの市場がだいぶ変わっていて、VMWareは有償みたい。というわけで、VirtualBoxにすることにした。
インストールはできるが、起動させようとすると怒られる。
http://www.ivoryworks.com/blog/tag/kern_dir
を参考にKERN_DIRを環境変数に設定して起動したらできた。
ちょっと不親切。