LVMをマウントしてデータを抜き出すメモ

LVMを用いてファイルシステムを構築していて、そのHDDが壊れた時など、データ損傷し過ぎでどうにもこうにもいかなくなることがある。
そこで、別OSを起動してその壊れたHDDをマウントし、必要なデータを抜き出すにはどうしたらいいか。

ちょっと苦戦したので、そのメモ。

1,OS起動中にSATAを認識させる(HDDをSATAケーブルで接続後)

# echo "scsi add-single-device 01 00 01 00" > /proc/scsi/scsi

※数字は「scsi番号 Channel Id Lun」、今回は「01 00 01 00」だった。

2,SATAが認識されたか確認

# cat /proc/scsi/scsi
Host: scsi1 Channel: 00 Id: 01 Lun: 00
  Vendor: ATA      Model: Maxtor 6Y080M0   Rev: YAR5
  Type:   Direct-Access                    ANSI SCSI revision: 05

3,LVMがデバイス内にあるか、物理ボリューム→ボリュームグループ→論理ボリュームの順にスキャン

# pvscan
  PV /dev/sdb2   VG VolGroup00   lvm2 [76.22 GB / 32.00 MB free]
  Total: 1 [76.22 GB] / in use: 1 [76.22 GB] / in no VG: 0 [0   ]

# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2

# lvscan
  ACTIVE            '/dev/VolGroup00/LogVol00' [74.25 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [1.94 GB] inheri

4,マウントしたいLVMボリュームグループを有効化

# vgchange -ay VolGroup00

5, /dev内にLVMのボリュームが見えるようになったので、マウント

# mount /dev/VolGroup00/LogVol00 /mnt
# ls /mnt/
bin/  boot/  dev/  etc/  home/  lib/  lost+found/  media/  misc/  mnt/  net/  opt/  proc/  root/  sbin/  selinux/  srv/  sys/  tmp/  usr/  var/

6,データ吸出しちゃってください。

Linux起動スクリプトのfunctionsメモ

#!/bin/sh

. /etc/init.d/functions

# 色々書いて・・・
for chek in 1 2 3
do
    # 重要なコマンドを3回実行して・・・
    RETVAL=$?
    [ $RETVAL = 0 ] && success && echo
    [ $RETVAL != 0 ] && failure && echo
done
exit 0

でこれを実行すると、

# ./boot_script.sh
check 1 :                           [失敗]
check 2 :                           [失敗]
check 3 :                           [  OK  ]

てな感じで、起動スクリプトのような出力が可能。

apacheモジュールのメモリ管理

物欲日記ばっかり書かずに、たまにはお勉強の話でも。

fp = ap_pfopen(p, hoge.txt, "r");

if (fp == NULL) {
    fprintf(stderr, "%sは無いよ!\n", hoge.txt);
    return 1;
}

/* hoge.txt を色々弄って・・・*/

ap_pfclose(p, fp);

apacheのモジュールについて最近勉強しているので、やったことをメモしていこうと思ってます。色々調べてて、メモリとかファイルハンドル回りでほーほーと思ったことをいくつか。

  • apacheモジュールはC言語にも関わらず、メモリのリソース管理はapacheがよしなにしてくれる。
  • apacheはリソース管理のためにプール構造をとっている。
  • 新たに確保するメモリ等はプールに結び付けて管理されるので、プール破棄時にメモリも破棄されるわけですな。
  • というか、むしろメモリ開放のインターフェイスすら用意されてない。
  • リソースプールからアロケートされたメモリの開放はapache自身がすることになってる。
  • かってにプログラマがfree()とかしたらダメ。
  • リクエスト時などに、一時的にメモリ確保とかファイルハンドルを割り当てたい場合は、Request poolを生成して、そこから割り当てれば、レスポンス終了時にRequest poolが自動的に破棄されて、メモリとかも開放される。
  • 動的にメモリ確保する場合も、poolにから割り当てるので、NULLチェックの必要が無い。

ほーほー、ようするにCなのにメモリ管理は、用途によって用意された各種poolからpool生成して、そっからアロケートするから、プログラマが適当にメモリを弄るなってことなのね。

ブルックス・ブラザーズの福袋

たまたま昨日、ブルックス・ブラザーズに行って、ジャケット等をみていたのだが、梅田店によると福袋が5個ほど残っていた。

「あれ、ブルックス・ブラザーズの福袋って行列できてすぐ売れきれるんじゃ・・・」

と思いつつ、昨日は購入しなかった。

そして、色々ネットで調べていると、みんなめっちゃならんで買っていたようで、1月2日の時点で1時間くらいで完売が普通だったようだ。

さらには、オークションでも高値で売り落とされている。

「なんだ、これは買う運命にあるのか」

と思い、今日開店と同時に購入してきた。

ポイントを使ったため、15kで購入。

続きを読む

エドワード・グリーンのベルト

グリーンは、グリーンの靴専用のベルトを作っている。

基本的に、靴とベルトを同じ革(色も)に合わせたい人には本当にオススメだ。

というのは、全く同じ革を使っているため、本当の意味で「同じ」だと言える。

写真上の革がダークオークで、下がチェスナットアンティークである。

続きを読む