Tags

Recent Entries

Recent Comments

Recent Trackback

Feeds

More Links


rsyncでコピーしたHDDから起動する

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
rsyncでパーティションまるごとコピーする」のシェルスクリプトでcron走らせて日次バックアップをしている状況で、プライマリのHDDが故障した場合rsyncでまるごとミラーリングコピーしたセカンダリのHDDをプライマリに差し替えて起動すればうまくいくかといえばそううまくはいきません。

ハードウエアでRAIDできる環境であればこんな事心配する必要はないんですが、何しろSunのNetraT1+Debian(SPARC)な環境だったりすると簡単にはRAIDボードなんて挿せないワケですからこういう事も考えておかなければなりません。
もちろんソフトウエアRAIDとかへの移行が可能な場合や、既に運用している場合はそれで良いと思います。
この場合はハードウエア追加・ソフトウエアRAID構成への変更が困難な環境で、とりあえずrsyncでバックアップするしかない淋しい状況下での話。

とりあえず、ブートローダが何なのかによりますが、当環境(NetraT1+Debian)では問答無用で「SILO」です。

試しに何も小細工なしにHDDを入れ替えてブートしてみます。
Boot device: /pci@1f,0/pci@1,1/scsi@2/disk@0,0:a File and args.
:217: The file just loaded does not appear to be excutable.

はい無理。まぁ当たり前ですけど。
ブートローダ(SILO)が無いとどうしようもないのでインストールCDからブートしてみます。
ok boot cdrom
Boot device: /pci@1f,0/pci@1/pci@1/ide@e/cdrom@2:a File and args.
SILO Version 1.4.9
\
boot:

とSILOが上がってくるのでブートパラメータを
boot: /pci@1f,0/pci@1,1/scsi@2/disk@0,0:a;1/boot/vmlinuz root=/dev/sda4
initrd=/pci@1f,0/pci@1,1/scsi@2/disk@0,0:a;1/boot/initrd.img
※実際は改行無し。

な感じで入力してブートすると無事起動することができました。
また、次回からこの操作をしなくても良いようにブートローダを設定しておきます。
# silo -f -C /boot/silo.conf
Posted by: simpraight at 2006/12/01 15:20:49 | Tags: [server] [tips] | Comments:0 | Trackbacks:0

rsyncでパーティションまるごとコピーする

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
再利用の為にメモ。
#!/bin/sh

echo "`date +%Y-%m-%d\ %k:%M:%S`: start syncing" >> /var/log/backup.log

if [ ! -d "/mnt/sdb" ]; then
mkdir /mnt/sdb
fi
/bin/mount -t xfs /dev/sdb3 /mnt/sdb 2>> /var/log/backup.log

if [ ! -d "/mnt/sdb/boot" ]; then
mkdir /mnt/sdb/boot
fi
/bin/mount -t ext3 /dev/sdb1 /mnt/sdb/boot 2>> /var/log/backup.log


/usr/bin/rsync -aH --delete \
--exclude=/proc \
--exclude=/sys \
--exclude=/mnt \
/* /mnt/sdb

if [ ! -d "/mnt/sdb/proc" ]; then
mkdir /mnt/sdb/proc
fi
if [ ! -d "/mnt/sdb/sys" ]; then
mkdir /mnt/sdb/sys
fi
if [ ! -d "/mnt/sdb/mnt" ]; then
mkdir /mnt/sdb/mnt
mkdir /mnt/sdb/mnt/boot
fi

/bin/umount /mnt/sdb/boot 2>> /var/log/backup.log
/bin/umount /mnt/sdb 2>> /var/log/backup.log

echo "`date +%Y-%m-%d\ %k:%M:%S`: end syncing" >> /var/log/backup.log

rsyncの「-H」って付ける方が良いのか付けない方が良いのか。。

参考:rsyncで自動バックアップ
Posted by: simpraight at 2006/11/30 17:44:33 | Tags: [server] [tips] | Comments:0 | Trackbacks:0

USBメモリでTrueCryptを使う

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
暗号化・セキュリティのソフトウエアは以前色々探したことがあるのですが、非常に融通が利き、且つセキュリティ的にも強固なTrueCryptというオープンソースのソフトウエアに辿り着きました。
特徴としては

 ・対応メディアを選ばない
 ・外出先PCへのインストールが必要ない
 ・操作性が良い
 ・ニセ隠しボリューム(外殻)の中に本当の隠しボリュームが作成できる

特に3番目がオシャレ。
とりあえずUSBメモリ等のリムーバブルメディアで使うにあたって、2番目の「外出先PCへのインストールが必要ない」っていうのは結構重要です。いちいち出先のPCにインストールするわけにはいけませんからね。

「初期設定が少し面倒」ということが難点といえば難点ですが、一度覚えてしまえば大したことはありません。
以下にUSBメモリ等で使用する為の手順を残しておきます。

TrueCryptのセットアップ

1.ダウンロード


とりあえずTrueCryptのダウンロードページから本体(truecrypt-4.x.zip)をダウンロードします。
また、「Language Packsのページ|http://www.truecrypt.org/localizations.php」へ進み日本語langpack(langpack-ja-x.x.x-for-truecrypt-4.x.zip)をダウンロードしておきます。

2.インストール


ダウンロードしたファイルを解凍し、「TrueCrypt Setup.exe」を実行してウィザードに従いインストールを行います。
ダウンロードlangpackは解凍後、中にある「Language.ja.xml」をインストール先フォルダ(C:\ProgramFiles\TrueCrypt)内にコピーします。

3.初期設定


インストールが完了したらとりあえず起動します。UIが英語になっていますので、メニューバーの[Settings]->[Language]を開き、設定を日本語に変更します。

暗号化用ボリュームを作成する


対象となるUSBメモリを接続しコンピュータに認識させます。初期化をする場合はこの段階でしておいてください。
TrueCryptのメニューバーから[ツール]->[ボリューム作成ウィザード]を実行します。

1.ボリュームの種類


ウィザードが表示されて、
 標準 TrueCrypt ボリュームの作成 または
 隠しボリュームの作成
が選択できますのでどちらか好きな方を選択します。今回は「隠しボリュームの作成」を選択することにします。

※隠しボリュームを選択すると、暗号化された標準ボリュームの中にさらに隠しボリュームを作成することが出来ます。
例えば、本当に隠したいファイルは複雑なパスワードを設定した「隠しボリューム」の中に保存し、ダミーファイルを簡易なパスワード(123やpassword等)を設定した「標準ボリューム」に保存しておくことで、盗難/紛失時に「隠しボリューム」が発見されるリスクを下げる効果が期待できます。

2.ボリュームの位置


ボリュームの選択を行い、ウィザードを続けるとボリュームの位置(作成先)を聞いてきます。
特定のファイルをコンテナとして作成しそれを暗号化ボリュームとして使用する場合は「ファイルの選択」を、USBメモリやHDD等のデバイスをまるごと暗号化ボリュームとして使用する場合は「デバイスの選択」を行います。

今回はUSBメモリ内に暗号化コンテナファイルを作成しますので「ファイルの選択」をクリックし、USBメモリ内を参照し「Crypt」という名前でファイルを指定します。

3.外殻ボリュームの作成


コンテナファイル指定後ウィザードを続けると「外殻ボリューム」の作成画面になります。
ここで言う「外殻ボリューム」とは1つ目の暗号化ボリュームです。一旦外殻ボリュームを作成した後、その中に「隠しボリューム」を作成することになります。
暗号化方式については、特にこだわりがない場合は標準の方式(AES)で問題ないと思います。


4.外殻ボリュームのサイズ


次へ進むと、ボリュームサイズを聞かれますので必要な容量を指定します。
ただし、後で説明する「TrueCrypt自身」を保存する領域を空けておく必要がありますので「2MB」程度は領域を残しておいてください。


5.外殻ボリュームのパスワード


次へ進むと外殻ボリュームに設定するパスワードを聞かれますので、この領域を「ダミー」として使用する場合は、わかりやすい・いかにも設定しそうなパスワードを設定します。(※この領域をメインの暗号化領域として使用する場合は推測困難で複雑なパスワードを設定するようにしましょう。)

●安易なパスワードはこの辺が参考になるかも知れません。
よく使われるパスワードトップ10(from GIGAZINE)

6.外殻ボリュームのフォーマット


パスワードの設定まで終わったら「フォーマット」をクリックしてボリュームのフォーマットを行います。
容量によっては数分かかることがあります。

7.隠しボリュームの作成


外殻ボリュームを作成した後は上記3~6と同じ手順で隠しボリュームを作成します。ただし、パスワードについては推測困難で複雑なパスワードを設定するようにします。

以上でボリュームの作成は完了です。


外出先でも使用可能な環境を設定する

1.トラベラーディスクの作成


ここまでの手順で暗号化ボリュームの作成は出来ましたが、この状態で出先のパソコンで暗号化ボリュームを利用しようとするとパソコンにTrueCryptをインストールしなくてはなりません。
そうしなくても良いように、「トラベラーディスク」というものが用意されています。トラベラーディスクという名前は付いていますが、要はTrueCryptのインストールフォルダから最低限実行に必要なファイルだけを抽出しただけのものです。
必要なファイルをコピー&ペーストでも問題ありませんが、一応セットアップツールが本体に付属していますのでソチラを利用することにします。

TrueCryptのメニューバーより[ツール]->[トラベラーディスクのセットアップ]を実行します。
「トラベラーディスクを作成する場所」はUSBメモリ内に設定します。(暗号化ボリュームの中ではありません。)
「TrueCryptボリューム作成ウィザードを含める」については、出先でボリューム作成を行う必要はまずありませんのでチェックを外しておきます。
設定後「作成」をクリックすると、USBメモリ内に「TrueCrypt」フォルダが作成され、その中に必要なファイルがコピーされているのが確認できます。

2.マウント&アンマウント用のバッチファイルを作成する


このままでとりあえず出先でも暗号化ボリュームを利用できるようになりましたが、もう少し便利に使うために、暗号化ボリュームのマウント&アンマウント用のバッチファイルをUSBメモリ内に作成します。

mount.bat

@echo off

net user %USERNAME% | findstr "\*Administrators" >NUL
if %ERRORLEVEL% == 0 GOTO IS_ADMIN

RUNAS /env /user:administrator "TrueCrypt/TrueCrypt.exe /h n /v Crypt /lx /a /m rm /q"
GOTO END

:IS_ADMIN
start "Open crypt volume" "TrueCrypt/TrueCrypt.exe" /h n /v Crypt /lx /a /m rm /q

:END

unmount.bat

@echo off

net user %USERNAME% | findstr "\*Administrators" >NUL
if %ERRORLEVEL% == 0 GOTO IS_ADMIN

RUNAS /env /user:administrator "TrueCrypt/TrueCrypt.exe /h n /dx /q"
GOTO END

:IS_ADMIN
start "Close crypt volume" "TrueCrypt/TrueCrypt.exe" /h n /dx /q

:END

以上2ファイルをUSBメモリ内に作成しました。
トラベラーモードは管理者権限でないと動かないらしいので、Administratorsでない場合はRUNASで実行するようにしています。これで、mount.batを実行するとパスワード入力画面が表示され暗号化ボリュームをマウントし、unmount.batを実行するとアンマウント出来ます。


以上でUSBメモリでTrueCryptを使う事ができるようになりました。ファイル単位でボリュームを作成しておけば、まるごとバックアップも1つのファイルコピーするだけで出来ますので運用も非常に楽になりますね。
Posted by: simpraight at 2006/11/29 19:54:31 | Tags: [windows] [security] | Comments:22 | Trackbacks:0

DBスレーブが定期的に落ちてた原因

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
最近、会社のDBスレーブサーバが定期的に通信不能になってるのをNagiosで確認。
まぁスレーブでクリティカルじゃないし、何故か5分くらいほっといたら治ってたりしてたので、しばらく様子見してたんですがここ3日程連発したので原因を究明することにしました。

 ・会社の営業時間内に発生。(夜中とかには発生しない)
 ・サーバには怪しいログは残されていない。
 ・同IPへのPINGは通る。
 ・しばらくすると何事もなかったかのように復旧する。

ということで、明らかに人為的な気がする状況でした。聞き込み調査をしたところ、他部署でサーバと同じIPに設定して使っている端末を発見
( ゚д゚)・・・。
いや、セグメント分けずに運用してた自分も悪いんですけどね、一回設定してダメなら諦めてくださいよ。。。なんで何日にも渡って何度もIP被らせるかな。。。
Posted by: simpraight at 2006/11/28 22:32:10 | Tags: [日記] | Comments:0 | Trackbacks:0

片道320kmで

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
タイ料理食べてきました。往復640km。
うまかった。
Posted by: simpraight at 2006/11/26 00:27:07 | Tags: [日記] | Comments:27 | Trackbacks:0

Content-typeで嵌る。

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
× Content-type: text/javascript; charset=utf8

○ Content-type: text/javascript; charset=utf-8

IEに対してJSON返す場合に上のようなスペルミスではresponseText出来なくなる。1時間嵌った。

参考:JSONとContent-Type
Posted by: simpraight at 2006/11/22 14:38:59 | Tags: [javascript] [嵌る] | Comments:3 | Trackbacks:0

スクロールバーを左に。

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
デザインをLDRっぽくフレーム風にしました。一応ブラウザサイズによって可変するような感じです。
で左のツリー部分のスクロールバーが左側に表示されてたのを見て、「見やすいよなぁコレ」とか思っていたんですが、やり方とかは特に気にしてませんでした。
てっきりJavascriptで裏技的にやってるのかと思いきや、CSSで簡単にできるんですね。
<div id="side"><div class="container">
~リスト~
</div></div>

最近の流行りだと、こんな感じでサイド部分を作ると思うんですが、普通に「overflow:scroll」させると当然右側にスクロールバーが表示されます。そこで、
#side {
width: 200px;
height: 800px;
overflow: auto;
overflow-y: scroll;
direction: rtl;
}
#side .container {
padding: 5px;
direction: ltr;
}

とすると、スクロールバーは左側になります。実におしゃれ。
「#side」には文章の方向を「RightToLeft(右から左)」にしスクロールバーの表示を逆転させて、コンテナ部分は通常通り「LeftToRight(左から右)」に戻す。頭良いコレ。
Posted by: simpraight at 2006/11/20 18:58:52 | Tags: [css] [tips] | Comments:1 | Trackbacks:0

WindowsUpdateでコケる

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
「毎月恒例のWindowsUpdateやMicrosoftUpdateを行っていたら、いきなりエラーになってしまった。もう一回実行しようとしても同じ内容のエラーが出てしまう。」

...という場合。状況によってはとりあえず以下の方法で立ち直れるらしいです。
※コマンドプロンプトから
C:\> net stop wuauserv
C:\> cd /d %windir%
C:\> rd /s softwaredistribution
C:\> net start wuauserv
Posted by: simpraight at 2006/11/20 16:36:48 | Tags: [windows] [tips] | Comments:29 | Trackbacks:0

Javascriptで入力規制

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
何となく入力規制が出来るように作ってみました。
フォームに入力される内容をある程度規制する為に何となく使えます(要prototype.js)
<script type="text/javascript">
var InputControl = Class.create();
InputControl.prototype = {
initialize: function(){
this._els = []; this._rls = {}; this._stk = {};
Event.observe(window, 'load', this.setEvent.bind(this));
},
setEvent: function(){
var e = this._els;
var l = e.length;
for(var i=0;l>i;i++) {
this._stk[e[i]] = $(e[i]).value;
Event.observe(e[i], 'keyup', this.checkValue.bindAsEventListener(this));
}
},
addRule: function(el, rule){
el = (typeof(el)=='string') ? el : el.id;
if(el){
this._els.push(el);
this._rls[el] = rule;
}
},
checkValue: function(e){
var e = e || window.event;
var el = e.target || e.srcElement;
if(!el.value.match(this._rls[el.id])) el.value = this._stk[el.id];
else this._stk[el.id] = el.value;
}
}
</script>

使い方は簡単で、例えば以下みたいなフォームを用意して
月:<input type="text" id="month" name="month" /><br />
日:<input type="text" id="date" name="date" /><br />
ユーザID:<input type="text" id="userid" name="userid" /><br />
パスワード:<input type="password" id="userpass" name="userpass" />(8文字以内)

<script...>~</script>内に以下みたいな感じで記述すると、
var con = new InputControl();
con.addRule('month', /^([1-9]|1[0-2])?$/);
con.addRule('date', /^([1-9]|[1-2][0-9]|3[01])?$/);
con.addRule('userid', /^[0-9a-zA-Z]*$/);
con.addRule('userpass', /^[0-9a-zA-Z]{0,8}$/);

addRuleの正規表現で指定した内容以外の入力が無効になります。

 →sample

ある程度汎用性を持たせた感じで正規表現を記述する必要があるので細かい判定には向いておらず、結局最終的なチェックはサーバサイド行う必要はありますが、入力ミスなどによるエラーはある程度防止出来るような気がします。
Posted by: simpraight at 2006/11/20 11:53:13 | Tags: [javascript] [tips] | Comments:291 | Trackbacks:0

Amazonインスタントストア(TM)

[Permalink] [Post to del.icio.us] [Post to hatena] [Post to livedoorClip]
Amazonのインスタントストア(TM) が始まったらしいので作ってみました。

 SIMPRAIGHT:STORE

Amazon商売上手。
Posted by: simpraight at 2006/11/17 22:15:28 | Tags: [日記] | Comments:1 | Trackbacks:0