2005/12末〜2006/1ごろ、raidreconfを誤ってCtrl+Cで止めたときのこと

HDD1: 距離をHDD1台分離してあったもの
HDD2: 距離を少しだけ離してあったもの
HDD3: となりとぴったりくっついていた

14:05 復帰

cfdisk /dev/sdd

hdd全体を1パーティションにして、typeをfd (linux raid autodetect)にする

[nickle@itefu ~]% sudo raidreconf -o /etc/raidtab -n /etc/raidtab.new -m /dev/md0
Working with device /dev/md0
Parsing /etc/raidtab
Parsing /etc/raidtab.new
Size of old array: 1465176006 blocks, Size of new array: 1953568008 blocks
Old raid-disk 0 has 3815561 chunks, 244195904 blocks
Old raid-disk 1 has 3815561 chunks, 244195904 blocks
Old raid-disk 2 has 3815561 chunks, 244195904 blocks
New raid-disk 0 has 3815561 chunks, 244195904 blocks
New raid-disk 1 has 3815561 chunks, 244195904 blocks
New raid-disk 2 has 3815561 chunks, 244195904 blocks
New raid-disk 3 has 3815561 chunks, 244195904 blocks
Using 64 Kbyte blocks to move from 64 Kbyte chunks to 64 Kbyte chunks.
Detected 776428 KB of physical memory in system
A maximum of 2588 outstanding requests is allowed


I will grow your old device /dev/md0 of 7631122 blocks
to a new device /dev/md0 of 11446683 blocks
using a block-size of 64 KB
Is this what you want? (yes/no): yes
Converting 7631122 block device to 11446683 block device
Allocated free block map for 3 disks
4 unique disks detected.
Working (\) [00231329/07631122]
[nickle@itefu ~]% sudo raidreconf -o /etc/raidtab -n /etc/raidtab.new -m /dev/md0
Password:
Working with device /dev/md0
Parsing /etc/raidtab
Parsing /etc/raidtab.new
Size of old array: 1465176006 blocks, Size of new array: 1953568008 blocks
Old raid-disk 0 has 3815561 chunks, 244195904 blocks
Old raid-disk 1 has 3815561 chunks, 244195904 blocks
Old raid-disk 2 has 3815561 chunks, 244195904 blocks
New raid-disk 0 has 3815561 chunks, 244195904 blocks
New raid-disk 1 has 3815561 chunks, 244195904 blocks
New raid-disk 2 has 3815561 chunks, 244195904 blocks
New raid-disk 3 has 3815561 chunks, 244195904 blocks
Using 64 Kbyte blocks to move from 64 Kbyte chunks to 64 Kbyte chunks.
Detected 776428 KB of physical memory in system
A maximum of 2588 outstanding requests is allowed

I will grow your old device /dev/md0 of 7631122 blocks
to a new device /dev/md0 of 11446683 blocks
using a block-size of 64 KB
Is this what you want? (yes/no): no
[nickle@itefu ~]% ps
 PID TTY          TIME CMD
8763 pts/0    00:00:00 zsh
9446 pts/0    00:00:00 ps
[nickle@itefu ~]% sudo mdadm -A --scan
mdadm: /dev/md0 has been started with 3 drives.
[nickle@itefu ~]% cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sda1[0] sdc1[2] sdb1[1]
     488391808 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
[nickle@itefu ~]% sudo mount -a
mount: sys already mounted or /sys busy
mount: according to mtab, sysfs is already mounted on /sys
[nickle@itefu ~]% cd /home/data
[nickle@itefu /home/data]% ls -l
ls: app: 未知のエラー 990
ls: incoming: 未知のエラー 990

  .......
ls: download: 未知のエラー 990
[nickle@itefu /home/data]% cd audio
cd: 未知のエラー 990: audio
[nickle@itefu /home/data]% cd priv
cd: 未知のエラー 990: priv
[nickle@itefu /home/data]% cd -
~
[nickle@itefu ~]% sudo umount /home/data

Old raid-disk 0 has 3815561 chunks, 244195904 blocks
Old raid-disk 1 has 3815561 chunks, 244195904 blocks
Old raid-disk 2 has 3815561 chunks, 244195904 blocks
64 Kbyte chunk
Working (\) [00231329/07631122] [#

3815561 * 2 = 7631122
3815561 * 64 * 1024 = 250056605696

244195904 blocks * 1024 byte = 250056605696

231329 / 2 * 64 * 1024 = 7,580,188,672 bytes 余裕を持って8Gバックアップしておけばとりあえず安心?

244195904 / 3815561 = 64
231329 * 64 = 14805056

1500*64 = 96000

7631122*64 * 64 * 1024 = 32007245529088

dd if=/dev/sda of=sda_head.bin count=15625000
(8000000000 / 512 = 15625000)

sddはどこまでバックアップ取ろう

231329 / 7631122 = 0.03031389093242121

500 * 0.03031389093242121 = 15.156945466210604

231329 * 64 * 1024 = 15,160,377,344
155236 * 64 * 1024 = 10,173,546,496

0 - 155235

testing: 14805056 to 14905055
invalid block: 14805056 to 14882673
correct block: 14882674 to 14905055

14777618 / 64 = 230900.28125
14882674 / 64 = 232541.78125

var/log/messages

Dec 30 18:05:26 localhost kernel: md: md0 stopped.
Dec 30 18:05:26 localhost kernel: md: bind<sdb1>
Dec 30 18:05:26 localhost kernel: md: bind<sdc1>
Dec 30 18:05:26 localhost kernel: md: bind<sda1>
Dec 30 18:05:26 localhost kernel: raid5: device sda1 operational as raid disk 0
Dec 30 18:05:26 localhost kernel: raid5: device sdc1 operational as raid disk 2
Dec 30 18:05:26 localhost kernel: raid5: device sdb1 operational as raid disk 1
Dec 30 18:05:26 localhost kernel: raid5: allocated 3160kB for md0
Dec 30 18:05:26 localhost kernel: raid5: raid level 5 set md0 active with 3 out of 3 devices, algorithm 2
Dec 30 18:05:26 localhost kernel: RAID5 conf printout:
Dec 30 18:05:26 localhost kernel: --- rd:3 wd:3 fd:0
Dec 30 18:05:26 localhost kernel: disk 0, o:1, dev:sda1
Dec 30 18:05:26 localhost kernel: disk 1, o:1, dev:sdb1
Dec 30 18:05:26 localhost kernel: disk 2, o:1, dev:sdc1
Dec 30 18:05:52 localhost kernel: XFS mounting filesystem md0
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+991/229974] xfs_da_do_buf+0x3d0/0x920 [xfs]
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+2535/229974] xfs_da_read_buf+0x58/0x60 [xfs]
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+2535/229974] xfs_da_read_buf+0x58/0x60 [xfs]
Dec 30 18:05:56 localhost kernel: [__get_free_pages+51/64] __get_free_pages+0x33/0x40
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+2535/229974] xfs_da_read_buf+0x58/0x60 [xfs]
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+33261/229974] xfs_dir2_leaf_lookup_int+0x5e/0x2c0 [xfs]
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+33261/229974] xfs_dir2_leaf_lookup_int+0x5e/0x2c0 [xfs]
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+691/229974] xfs_da_do_buf+0x2a4/0x920 [xfs]
Dec 30 18:05:56 localhost kernel: [__crc_pnp_activate_dev+30238/229974] xfs_dir2_leaf_getdents+0x3bf/0xc50 [xfs]
Dec 30 18:05:56 localhost kernel: [__crc_sysfs_create_dir+282719/339691] xfs_bmap_last_offset+0xc5/0x130 [xfs]
....

標準出力の代わりに、ファイル file へ書き出す。 conv=notrunc が与えられな

             い限り、 dd はファイル file を (訳注: コピー前に) 0 バイト ( も し く は
             seek= で指定されたサイズ) に切り詰める。

  conv=CONVERSION[,CONVERSION]...
             引 き数 CONVERSION で指定されたファイル変換を行う。(コンマの前後にスペー
             スを置かない。)
notrunc
                    出 力ファイルを切り詰めない。 (訳注: 書き込み前の切り詰めを行わず
                    、そのまま先頭バイトから書き込みを行います。入力ファイルと出力 フ
                    ァイルが同じ場合にファイルが壊れません。)

dd if=sda.bin of=/dev/sda conv=notrunc

sudo dd if=sda_head.bin of=/dev/sda conv=notrunc && sudo dd if=sdb_head.bin of=/dev/sdb conv=notrunc && sudo dd if=sdc_head.bin of=/dev/sdc conv=notrunc

[nickle@itefu ~/raidtools-0.95-raidreconf]% sudo dd if=sda.bin of=/dev/sda conv=notrunc
Password:
読み込んだブロック数は 9935104+0
書き込んだブロック数は 9935104+0
5086773248 bytes transferred in 523.311285 seconds (9720358 bytes/sec)

[nickle@itefu ~/raidtools-0.95-raidreconf]% sudo dd if=sdb.bin of=/dev/sdb conv=notrunc && sudo dd if=sdc.bin of=/dev/sdc conv=notrunc
読み込んだブロック数は 9934976+0
書き込んだブロック数は 9934976+0
5086707712 bytes transferred in 863.324617 seconds (5891999 bytes/sec)
読み込んだブロック数は 9935104+0
書き込んだブロック数は 9935104+0
5086773248 bytes transferred in 468.618072 seconds (10854838 bytes/sec)
[nickle@itefu ~/raidtools-0.95-raidreconf]%

sudo dd if=sda.bin of=/dev/sda1 conv=notrunc && sudo dd if=sdb.bin of=/dev/sdb1 conv=notrunc && sudo dd if=sdc.bin of=/dev/sdc1 conv=notrunc

sudo xfs_repair -n /dev/md0

alias od='od -Ax -tx1'

Working (-) [00051175/07631122] [

 51175 : 15:03
125795 : 15:13
260111 : 15:32
490367 : 16:03
1987031 : 19:36
2865415 : 21:35

125795 - 51175 = 74620
260111 - 51175 = 208936
490367 - 51175 = 439192
1987031 - 51175 = 1935856

7631122 / 74620 = 102.26644331278477
7631122 / 208936 = 36.52372975456599
7631122 / 439192 = 17.37536658226926

29 * 37 / 60 = 17.883333333333333
10 * 103 / 60 = 17.166666666666668
1935856 / 273 = 7091.047619047619
(2865415 - 51175) / 392 = 7179.183673469388

(7631122 - 490367) / 439192 = 16.258845789540792
(7631122 - 1923064) / 7091.047619047619 = 804.9668126141613
(7631122 - 2865415) / 7179.183673469388 = 663.8229660583319

804.9668126141613 / 60 = 13.416113543569356