2010年2月アーカイブ

Ubuntuのシステムディスクを交換

ってか、変更なんだけどね。

自鯖のAtom 330 のマザボ、D945GCLF2にPT2を入れるには、今刺さっているSATA×4のPCIカードを抜かなければならない。

それには、IDEのシステムディスク、SATAのデータディスク×4、IDEの光学ドライブの構成を変更する必要がある。

D945GCLF2には、SATA×2とIDE×1しかない。

っつーことで、光学ドライブは外付けにしちゃうとして、データディスクのまだ使っていないやつをシステムディスクに変更して、「SATAに2台、IDEにアダプタかまして2台」のディスク構成に変更するなり。

 

まずは、システムディスクのバックアップを作成する。

  1. UbuntuのCD-ROMから起動する。ここでは、日本語Remixのデスクトップ版を使う。
  2. dumpとrestoreをインストールする
    1. /etc/apt/source.list に 「dev http://jp.archive.ubuntu.com/ubuntu [OSのバージョン] universe」、 「dev-src http://jp.archive.ubuntu.com/ubuntu [OSのバージョン] universe」を追記
    2. sudo apt-get update
    3. sudo apt-get install dump
  3. バックアップ実行
    1. sudo dump -0 -u -j /dev/[ルートのパーティション] -f [バックアップファイルのパス]

次に新しいシステムディスクの準備

  1. GUIのディスク管理ツールで新しいディスクのパーティションを作成して、フォーマットする。
  2. ルートパーティションは起動ディスクに指定しておく。
  3. ルートを40GB、スワップを実メモリの2倍、残りはデータに使うことにした。

そして、リストア

  1. 新しいディスクのルートパーティションをマウントして、そこに移動。
  2. sudo restore -rf [バックアップファイルのパス]
  3. すると、カレントディレクトリにバックアップがリストアされる。

新しく作ったパーティションのUUIDを調べて、リストアしたファイルの内、起動、マウントに必要なファイルを編集する。

  1. sudo ls -l /dev/disk/by-uuid で新しく作ったパーティションのUUIDを調べる。
  2. /etc/fstab の古いUUIDを新しいUUIDに変更する。
  3. /boot/grub/menu.lst の古いUUIDの部分を新しいルートパーティションのUUIDに変更する。
  4. /etc/initramfs-tools/conf.d/resume のスワップパーティションの指定(あるいは古いUUID)を新しいものに変更する。

MBRの書き込み(GRUBのインストール)

  1. CD-ROMから再起動して、最初の起動メニューでF6を押して起動オプションを変更する。
  2. 「boot=casper」を「root=/dev/[ルートパーティション]」に変更して起動。
  3. 起動したら、sudo grub-install /dev/[新しいディスク] ←パーティションではない

これで新しいディスクから起動できればOK。

だめだったら、/etc/fstabや/boot/grub/menu.lstの記述、UUIDをチェックする。

 

追記:2011/02/11

Ubuntuを10.10にアップグレードしたら、UUIDが合ってるのに起動しなくなったorz

しゃーないので、/boot/grub/menu.lstのuuid=~の行を削除、root=uuid~のところをroot=/dev/sda1に変更して起動した。

本棚にはガンプラが飾ってある。
で、地震対策にアクリル板でフタをして、倒れて落ちてこないようにしようと思って一年以上w
ようやく、取り付けましたよ。

ganpla_20100214_1.JPG
本体は、アクリル板を切って、1×1材の取手を付けただけ。

取り付けは、障子方式。
ganpla_20100214_3.JPG
上側の溝に差し込んで、

ganpla_20100214_2.JPG
下側の溝で受ける。

実に簡単に済ませた。
書斎なので、誰に見せるワケでもないし。
・・・って、ここで皆様にご覧いただいてるかwww

実は、2歳になったばかりの息子対策でもある。
書斎にくると、「だんぐむ」と言って興味を示す。
抱っこして近づけてやると、触ろうとする。
本棚の下には丸椅子があって、これに乗れば下の方なら届きそうになってきたのだ。
先日、PS3にディスクを3枚突っ込まれたし、何されるか分からないのでw

TVボードのフロントパネル

先日、2歳になったばかりの息子に、電源の入っていないPS3にDVDディスクを3枚も突っ込まれた。
幸いPS3には被害がなかったものの、それ以前にもTVボードに入れていたラピュタのDVDディスクを無理やり取ろうとして割られてしまったことがある。
それ以外にもミニコンポやビデオデッキが入っていて、被害が広がらないうちに何とかしなくてはならない。

TVボードのフロントパネルは作る予定ではいたものの、装着時にはTVボードに搭載されている色々なものを全てどかして、ひっくり返さなければならないのが億劫で手を付けていなかったのがイカンかったw

っつーことで、ようやく作りましたよ。
tv_board_front_panel_20100207.JPG
3mmのアクリル板に1×2材でフレームを付けて、簡単なラッチと蝶番を装着、これを2×4材を加工したもので下から受ける。面倒なので、とりあえず無塗装。



・・・・



早速、息子はラッチを開けたとさorz
幸い左側のラッチにしか気付いていないが、・・・時間の問題だね。
開けられてしまうようなら、もう少し開けるのが面倒なラッチに変更すればいいや。
あるいは、片側のラッチを解錠しただけで無理やり開けようとしてフロントパネルを破壊されるか?

MySQLのバックアップスクリプト

Movable Typeを5にアップグレードしたので、そのデータベースもPostgreSQLからMySQLに移行するハメになった。
ので、MySQL用のバックアップスクリプトも書いたよ。もちろん、世代管理機能付き♪
ちなみに、PostgreSQL用のバックアップスクリプトはこちら

mysqldump_daily.sh
#/bin/sh

##################################################
# MySQL database backup script
#
# Dump to DB_NAME.YYMMDD.dump
# Delete expired dump file
# Output log file.
##################################################

##################################################
# Settings
USER="username"
PASS="password"

# space separated value: databases and backup directories (full path)
DB_NAMES="movabletype"
BAK_DIRS="/backup/mysql/daily"
WK_DIR="/etc/backup"

# log file path
LOG="/backup/mysql/mysqldump_daily.log"

BAK_NUM=15
##################################################

##################################################
# Main routine
TODAY=`date +%Y%m%d`

echo "@@@ Start Database Backup [ `date +%Y/%m/%d` ] @@@" | tee -a $LOG

# backup each "DB_NAMES"
for DB_NAME in $DB_NAMES
do
CNT_DIR=1
CP_SRC=""
CP_DST=""

# backup to each "BAK_DIRS"
for BAK_DIR in $BAK_DIRS
do
if [ $CNT_DIR -eq 1 ]; then

# create dump command
COM="mysqldump -u$USER -p$PASS $DB_NAME"
if [ $DB_NAME = "ALL" ]; then
COM="mysqldum -u$USER -p$PASS --all-databases"
fi

# execute dump command
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] $COM [start]" | tee -a $LOG
DUMP_FILE_PATH=$WK_DIR/$DB_NAME.$TODAY.dump
$COM > $DUMP_FILE_PATH | tee -a $LOG
mv $DUMP_FILE_PATH $BAK_DIR
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] $COM [done]" | tee -a $LOG
CP_SRC=$DUMP_FILE_PATH
else
# copy dump file to other BAK_DIRS
CP_DST=$BAK_DIR/$DB_NAME.$TODAY.dump
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] Copy dump file to $BAK_DIR [start]" | tee -a $LOG
cp $CP_SRC $CP_DST | tee -a $LOG
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] Copy dump file to $BAK_DIR [done]" | tee -a $LOG
fi

# delete old backup files
LS=`ls -r $BAK_DIR/$DB_NAME.*.dump`
CNT=1
for FILE in $LS
do
if [ $CNT -gt $BAK_NUM ]; then
rm -f $FILE | tee -a $LOG
echo "[" `date +%Y/%m/%d_%H:%M:%S` "] Delete expired dump file [$FILE]" | tee -a $LOG
fi
CNT=`expr $CNT + 1`
done

CNT_DIR=`expr $CNT_DIR + 1`
done

done
echo "@@@ Finish @@@" | tee -a $LOG
##################################################


Settings セクションにmysqldumpを実行するユーザとパスワードを設定して、火曜0時~日曜0時に取る分(上記スクリプトそのまんま。mysqldump_daily.sh。)と月曜0時に取る分(「daily」を「weekly」 に変更したもの。mysqldump_weekly.sh)を作ります。
これらの.shファイルを/etc/backupなどのフォルダに突っ込んで、そこをWK_DIRにします(まぁ、どこでもいいんですが)。
DB_NAMESパラメータにバックアップ対象のデータベース名をスペース区切りで入力します。
BAK_DIRSパラメータにDB_NAMESに指定したデータベースに対応するバックアップ先ディレクトリをスペース区切りで入力して、そのディレクトリを作成します。
BAK_NUMパラメータで指定した日数分が保持されます。
LOGはログファイルの保存先を指定します(cronに登録しちゃうのでメールが来るからいいや、という話もあるがw)。

ここまでのバックアップ処理を crontab -e で登録。
10  0 * * 1   /etc/backup/mysqldump_weekly.sh
10  0 * * 2-6 /etc/backup/mysqldump_daily.sh

以上。

このアーカイブについて

このページには、2010年2月に書かれた記事が新しい順に公開されています。

前のアーカイブは2010年1月です。

次のアーカイブは2010年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。