「mdadm」タグアーカイブ

RAID1アレイをシステム落とさず拡大してみた

SATAになってホットスワップが出来るんじゃないか?と思って実際やってみたら出来た。
EXT3を使っているからディスクサイズの変更もマウントした状態で出来るし、ダウンタイムがない。いいね、これ。

現状確認。

$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Aug 22 12:23:53 2010
     Raid Level : raid1
     Array Size : 1953508352 (1863.01 GiB 2000.39 GB)
  Used Dev Size : 1953508352 (1863.01 GiB 2000.39 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Apr 30 16:57:06 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 893b086a:cdc70ecc:4b94b77b:7c0d0721 (local to host tohya)
         Events : 0.31026

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       17        1      active sync   /dev/sdb1

sdb1, sdc1を使って2TBのraid1アレイとなっている。

ドライブのpartitionをどうしているのかも確認

$ sudo fdisk /dev/sdb
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xa5128fe1

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      243201  1953512001   fd  Linux raid autodetect
Partition 1 does not start on physical sector boundary.

Command (m for help): q

丸ごとLinux raid autoにしてた。わかりやすい

raid1の片側を外す作業

$ sudo mdadm /dev/md0 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0

まずは不良指定して、

$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Aug 22 12:23:53 2010
     Raid Level : raid1
     Array Size : 1953508352 (1863.01 GiB 2000.39 GB)
  Used Dev Size : 1953508352 (1863.01 GiB 2000.39 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Apr 30 18:00:37 2013
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           UUID : 893b086a:cdc70ecc:4b94b77b:7c0d0721 (local to host tohya)
         Events : 0.31028

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       17        1      active sync   /dev/sdb1

       2       8       33        -      faulty spare   /dev/sdc1

faultyになった

外す。

$ sudo mdadm /dev/md0 -r /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md0

$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Aug 22 12:23:53 2010
     Raid Level : raid1
     Array Size : 1953508352 (1863.01 GiB 2000.39 GB)
  Used Dev Size : 1953508352 (1863.01 GiB 2000.39 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Apr 30 18:01:00 2013
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : 893b086a:cdc70ecc:4b94b77b:7c0d0721 (local to host tohya)
         Events : 0.31032

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       17        1      active sync   /dev/sdb1

外れたのを確認。

デバイスナンバーを確認する。

$ dmesg
[    1.863625] scsi 2:0:0:0: Direct-Access     ATA      PATRIOT MEMORY 3 02.1 PQ: 0 ANSI: 5
[    1.863876] scsi 4:0:0:0: Direct-Access     ATA      ST2000DM001-9YN1 CC46 PQ: 0 ANSI: 5
[    1.871566] scsi 5:0:0:0: Direct-Access     ATA      WDC WD20EARS-00M 51.0 PQ: 0 ANSI: 5
[    1.879340] sd 2:0:0:0: [sda] 62586880 512-byte logical blocks: (32.0 GB/29.8 GiB)
[    1.879433] sd 2:0:0:0: [sda] Write Protect is off
[    1.879438] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.879476] sd 2:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    1.879625] sd 4:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[    1.879629] sd 4:0:0:0: [sdb] 4096-byte physical blocks
[    1.879710] sd 4:0:0:0: [sdb] Write Protect is off
[    1.879714] sd 4:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    1.879752] sd 4:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.879758] sd 5:0:0:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[    1.879874] sd 5:0:0:0: [sdc] Write Protect is off
[    1.879879] sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[    1.879916] sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

ドライブ名称と番号、ドライブレターが確認できた。

アレイから外したsdcを停止して外せるようにする。

# echo 1 > /sys/class/scsi_device/5\:0\:0\:0/device/delete
$ dmesg
[15244924.978492] sd 5:0:0:0: [sdc] Synchronizing SCSI cache
[15244924.978885] sd 5:0:0:0: [sdc] Stopping disk
[15244925.414845] ata6.00: disabled

止まったので、そっと外してみる。

[15245059.522558] ata6: exception Emask 0x50 SAct 0x0 SErr 0x4090800 action 0xe frozen
[15245059.522607] ata6: irq_stat 0x00400040, connection status changed
[15245059.522636] ata6: SError: { HostInt PHYRdyChg 10B8B DevExch }
[15245059.522670] ata6: hard resetting link
[15245060.244267] ata6: SATA link down (SStatus 0 SControl 300)
[15245060.244278] ata6: EH complete

おお~~
無事はずれた。

新しいディスクを刺す

$ dmesg
[15245236.970765] ata6: exception Emask 0x50 SAct 0x0 SErr 0x40d0802 action 0xe frozen
[15245236.970813] ata6: irq_stat 0x00000040, connection status changed
[15245236.970843] ata6: SError: { RecovComm HostInt PHYRdyChg CommWake 10B8B DevExch }
[15245236.970894] ata6: hard resetting link
[15245237.915795] ata6: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[15245238.097541] ata6.00: ATA-9: WDC WD30EZRX-00DC0B0, 80.00A80, max UDMA/133
[15245238.097545] ata6.00: 5860533168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[15245238.098367] ata6.00: configured for UDMA/133
[15245238.098375] ata6: EH complete
[15245238.098487] scsi 5:0:0:0: Direct-Access     ATA      WDC WD30EZRX-00D 80.0 PQ: 0 ANSI: 5
[15245238.098813] sd 5:0:0:0: [sdc] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[15245238.098817] sd 5:0:0:0: [sdc] 4096-byte physical blocks
[15245238.098866] sd 5:0:0:0: [sdc] Write Protect is off
[15245238.098869] sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[15245238.098889] sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[15245238.099077]  sdc: unknown partition table
[15245238.127170] sd 5:0:0:0: [sdc] Attached SCSI disk

新しいWD30EZRXが認識された。

partitionを切る作業

$ sudo fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x5ea3473a.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: The size of this disk is 3.0 TB (3000592982016 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): 

む?
2199023255040 bytes以上は出来ないと言っているようだ。
partedでgptを使えと。

parted導入から

$ sudo aptitude install parted
以下の新規パッケージがインストールされます:
  libparted0debian1{a} parted
更新: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
498 kB のアーカイブを取得する必要があります。展開後に 991 kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y
取得:1 http://ftp2.jp.debian.org/debian/ squeeze/main libparted0debian1 amd64 2.3-5 [341 kB]
取得:2 http://ftp2.jp.debian.org/debian/ squeeze/main parted amd64 2.3-5 [156 kB]
498 kB を 0秒 秒でダウンロードしました (835 kB/s)
未選択パッケージ libparted0debian1 を選択しています。
(データベースを読み込んでいます ... 現在 91556 個のファイルとディレクトリがインストールされています。)
(.../libparted0debian1_2.3-5_amd64.deb から) libparted0debian1 を展開しています...
未選択パッケージ parted を選択しています。
(.../parted_2.3-5_amd64.deb から) parted を展開しています...
man-db のトリガを処理しています ...
libparted0debian1 (2.3-5) を設定しています ...
parted (2.3-5) を設定しています ...

改めてpartition切り

$ sudo parted /dev/sdc
GNU Parted 2.3
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) unit GB
(parted) print
Model: ATA WDC WD30EZRX-00D (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart primary 0 3001
(parted) set 1 raid on
(parted) print
Model: ATA WDC WD30EZRX-00D (scsi)
Disk /dev/sdc: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      0.00GB  3001GB  3001GB               primary  raid

(parted) q

用意できたsdc1をアレイに加える。

$ sudo mdadm /dev/md0 -a /dev/sdc1
mdadm: added /dev/sdc1

ここからが永い。
リミットがかかっていて遅いようなので、調べてみたら案の定。

ということで、スピードアップさせる。

# echo 75000 > /proc/sys/dev/raid/speed_limit_min

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[2] sdb1[1]
      1953508352 blocks [2/1] [_U]
      [>....................]  recovery =  0.7% (14022784/1953508352) finish=511.3min speed=63213K/sec

確かにだいぶ速度は速くなったけど、500分以上待つ事に。
まぁ気長に。

$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Aug 22 12:23:53 2010
     Raid Level : raid1
     Array Size : 1953508352 (1863.01 GiB 2000.39 GB)
  Used Dev Size : 1953508352 (1863.01 GiB 2000.39 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Wed May  1 06:25:44 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 893b086a:cdc70ecc:4b94b77b:7c0d0721 (local to host tohya)
         Events : 0.31140

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       17        1      active sync   /dev/sdb1

もう一個取り替える作業も淡々と行う。

$ sudo mdadm /dev/md0 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[0] sdb1[2](F)
      1953508352 blocks [2/1] [U_]

unused devices: <none>


$ sudo mdadm /dev/md0 -r /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0

$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Aug 22 12:23:53 2010
     Raid Level : raid1
     Array Size : 1953508352 (1863.01 GiB 2000.39 GB)
  Used Dev Size : 1953508352 (1863.01 GiB 2000.39 GB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Wed May  1 16:38:48 2013
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : 893b086a:cdc70ecc:4b94b77b:7c0d0721 (local to host tohya)
         Events : 0.31144

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       0        0        1      removed


# echo 1 > /sys/class/scsi_device/4\:0\:0\:0/device/delete


$ dmesg
[15325486.325343] sd 4:0:0:0: [sdb] Synchronizing SCSI cache
[15325486.325564] sd 4:0:0:0: [sdb] Stopping disk
[15325487.329696] ata5.00: disabled

準備完了、ドライブを抜き取る。

$ dmesg
[15325663.380698] ata5: exception Emask 0x10 SAct 0x0 SErr 0x4090000 action 0xe frozen
[15325663.380746] ata5: irq_stat 0x00400040, connection status changed
[15325663.380775] ata5: SError: { PHYRdyChg 10B8B DevExch }
[15325663.380807] ata5: hard resetting link
[15325664.100625] ata5: SATA link down (SStatus 0 SControl 300)
[15325664.100636] ata5: EH complete

新しいドライブを刺す

$ dmesg
[15325954.141923] ata5: link is slow to respond, please be patient (ready=0)
[15325957.607452] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[15325957.798290] ata5.00: ATA-9: WDC WD30EZRX-00DC0B0, 80.00A80, max UDMA/133
[15325957.798295] ata5.00: 5860533168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA
[15325957.799002] ata5.00: configured for UDMA/133
[15325957.799010] ata5: EH complete
[15325957.799122] scsi 4:0:0:0: Direct-Access     ATA      WDC WD30EZRX-00D 80.0 PQ: 0 ANSI: 5
[15325957.799370] sd 4:0:0:0: [sdb] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[15325957.799373] sd 4:0:0:0: [sdb] 4096-byte physical blocks
[15325957.799419] sd 4:0:0:0: [sdb] Write Protect is off
[15325957.799422] sd 4:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[15325957.799442] sd 4:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[15325957.799572]  sdb: unknown partition table
[15325957.825131] sd 4:0:0:0: [sdb] Attached SCSI disk

認識を確認して、partition操作~アレイへ追加。

$ sudo parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: ATA WDC WD30EZRX-00D (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos

Number  Start  End  Size  Type  File system  Flags

(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
(parted) unit GB
(parted) p
Model: ATA WDC WD30EZRX-00D (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart primary 0 3001
(parted) set 1 raid on
(parted) p
Model: ATA WDC WD30EZRX-00D (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      0.00GB  3001GB  3001GB               primary  raid

(parted) q
Information: You may need to update /etc/fstab.


$ sudo mdadm /dev/md0 -a /dev/sdb1
mdadm: added /dev/sdb1

ここからが永い待ち時間。

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sdc1[0]
      2147480704 blocks [2/1] [U_]
      [>....................]  recovery =  0.0% (908480/2147480704) finish=236.2min speed=151413K/sec

unused devices: <none>


$ dmesg
[15326374.226174] md: bind<sdb1>
[15326374.405108] RAID1 conf printout:
[15326374.405112]  --- wd:1 rd:2
[15326374.405116]  disk 0, wo:0, o:1, dev:sdc1
[15326374.405120]  disk 1, wo:1, o:1, dev:sdb1
[15326374.405240] md: recovery of RAID array md0
[15326374.405244] md: minimum _guaranteed_  speed: 75000 KB/sec/disk.
[15326374.405247] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
[15326374.405251] md: using 128k window, over a total of 1953508352 blocks.

おや、思ったより早い、しかも倍くらい。
raid.speed_limit_minの設定を変えたのが大きい。(partitionの作り方も影響していると思われるが

これはsysctl.confに書いておくのがよいらしいです。

$ sudo vim /etc/sysctl.conf
 追記 
dev.raid.speed_limit_min = 50000
dev.raid.speed_limit_max = 200000

しかしそれでも2TBで240分待つ

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sdc1[0]
      1953508352 blocks [2/2] [UU]

unused devices: <none>


$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Aug 22 12:23:53 2010
     Raid Level : raid1
     Array Size : 1953508352 (1863.01 GiB 2000.39 GB)
  Used Dev Size : 1953508352 (1863.01 GiB 2000.39 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu May  2 06:25:44 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 893b086a:cdc70ecc:4b94b77b:7c0d0721 (local to host tohya)
         Events : 0.31242

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       17        1      active sync   /dev/sdb1

これで両方のドライブを入れ替え終わった。
この状態だとドライブの一部が使わないので、アレイサイズを拡大する。

$ sudo mdadm /dev/md0 --grow --size=max
mdadm: component size of /dev/md0 has been set to 2930265024K

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sdc1[0]
      2930265024 blocks [2/2] [UU]
      [==============>......]  resync = 73.3% (2148814720/2930265024) finish=136.6min speed=95286K/sec

unused devices: <none>

およそ1TB分の拡大を行うのに140分

$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Sun Aug 22 12:23:53 2010
     Raid Level : raid1
     Array Size : 2930265024 (2794.52 GiB 3000.59 GB)
  Used Dev Size : -1
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Fri May  3 10:54:29 2013
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : 893b086a:cdc70ecc:4b94b77b:7c0d0721 (local to host tohya)
         Events : 0.31380

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       17        1      active sync   /dev/sdb1

アレイサイズが大きくなったら、パーティーションサイズを拡大する

$ sudo resize2fs /dev/md0
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/md0 is mounted on /srv/store; on-line resizing required
old desc_blocks = 117, new_desc_blocks = 175
Performing an on-line resize of /dev/md0 to 732566256 (4k) blocks.
The filesystem on /dev/md0 is now 732566256 blocks long.

これも結構時間かかる。

sudo resize2fs -p /dev/md0

のようにして進捗を表示させるのがいいと思う。(今回忘れてしまった)

2TBのraid1から3TBへ替えるのに2日はかかるけど、ほとんど待ち時間。ドライブの抜き差しさえ簡単にできればストレージの拡大はとても楽に行える時代になった。止めなくていいのがすごくいいね。

auto-read-only

原因不明のフリーズ状態をリセットして、ドキドキ6時間。(寝てたけど

無事復帰の様子。だが、見てみると、、
md1 : active (auto-read-only) raid1 sda6[2] sdb6[1]
なにこれ。

$ sudo mdadm –readwrite /dev/md1
これでいつもの状態に戻った。

mdadmとlvmでディスク管理

復習

64bit版 Debianで構築したサーバー君が容量不足でupdate出来ないなど困ったことが多かったので意を決してパーティーションの変更作業。
扱うデータの量が多いので失敗時が恐いけど、一応バックアップもあるし最悪消えることは・・無い。

まず現状。下記のようなパーティーションとした1GBのディスクが4台。
Device Boot Start End Blocks Id System
/dev/sda1 * 1 33 265041 fd Linux raid autodetect
/dev/sda2 34 121601 976494960 5 Extended
/dev/sda5 34 457 3405748+ 82 Linux swap / Solaris
/dev/sda6 458 121601 973089148+ fd Linux raid autodetect

sd[abcd]1はmd0を構成し、/マウント
sd[abcd]5はswap
sd[ab]6はmd1,sd[cd]6はmd2を構成。
アレイmd0,md1,md2はいずれもRAID1で、md1+md2をlvmでvg00としている。

logical volumeはVolume group目一杯で構成してしまっていたので、ディスクのやりくりが心配だったが、運良く縮小すればmd1 or md2で収まる範囲だった。(これ重要だな
$ sudo lvdisplay -C
homelv vg00 -wi-ao 28.00g
optlv vg00 -wi-ao 3.72g
srvlv vg00 -wi-ao 1.73t
tmplv vg00 -wi-ao 360.00m
usrlv vg00 -wi-ao 10.00g
varlv vg00 -wi-ao 6.00g

/dev/md0 on / type ext3
/dev/mapper/vg00-homelv on /home type ext3
/dev/mapper/vg00-optlv on /opt type ext4
/dev/mapper/vg00-tmplv on /tmp type ext4
/dev/mapper/vg00-usrlv on /usr type ext3
/dev/mapper/vg00-varlv on /var type ext3
/dev/mapper/vg00-srvlv on /srv type ext3

変更手順。
2台ずつ変更していくために、まずvg00からmd2を外したい。
巨大なパーティーションとしている/srvを800GB以下にすることでmd1以内の容量となるようにする。
$ lvdisplay -m
でマッピングを確認すると、vgでpvのどれが利用されているか解る。

パーティーションの縮小作業
$ sudo umount /srv
$ sudo fsck.ext3 -f /dev/mapper/vg00-srvlv
$ sudo resize2fs /dev/mapper/vg00-srvlv 730G
$ sudo mount /srv

中身が小さくなったので、lvを小さくする。
$ sudo lvreduce -L 730G /dev/mapper/vg00-srvlv

続いて、md2側を利用しているデータをmd1に移動。
$ sudo pvmove /dev/md2
このコマンドは凄く時間がかかるらしいのだが、ほぼ使っていなかったらしく一瞬だった。

md2をvgから外す
$ sudo vgreduce vg00 /dev/md2

sdc,sddのswapパーティーションを利用解除
$ sudo swapoff -v UUID=
$ sudo swapoff -v UUID=

アレイの解除
$ sudo mdadm -S /dev/md2
$ sudo mdadm /dev/md0 -f /dev/sdc6
$ sudo mdadm /dev/md0 -f /dev/sdd6
$ sudo mdadm /dev/md0 -r /dev/sdc6
$ sudo mdadm /dev/md0 -r /dev/sdd6
これでsdc, sddはフリーになった。

新しくパーティーションを設定。
$ sudo fdisk /dev/sdc
新しく下記のように編集。
/dev/sda1 * 1 132 1060258+ fd Linux raid autodetect
/dev/sda2 133 121601 975699742+ 5 Extended
/dev/sda5 133 525 3156741 82 Linux swap / Solaris
/dev/sda6 526 121601 972542938+ fd Linux raid autodetect

sdcに設定したパーティーションをsddに複写
$ sudo sfdisk -d /dev/sdc | sudo sfdisk /dev/sdd

アレイを再作成
$ sudo mdadm –create /dev/md2 –level=1 –raid-disks=2 missing /dev/sdd6

初期化してリビルド
$ sudo mkfs.ext3 /dev/md2
$ sudo mdadm /dev/md2 -a /dev/sdc6
時間がかかるので待つ。今回は3時間近くかかった。
$ watch cat /proc/mdstat

vgに追加
$ sudo vgextend vg00 /dev/md2

md0にもsdc1,sdd1を追加
$ sudo mdadm /dev/md0 -a /dev/sdc1
$ sudo mdadm /dev/md0 -a /dev/sdd1
容量が小さいので比較的短時間で終わる。

swapも作り直し
$ sudo mkswap /dev/sdc5
$ sudo mkswap /dev/sdd5
fstabの設定も修正
$ sudo vim /etc/fstab
$ sudo swapon -v UUID=
$ sudo swapon -v UUID=

md2側完了。
同じようにmd1側のパーティーションも変更するために、
md1側からmd2側利用に切り替える。
$ sudo pvmove /dev/md1 &
かなり時間がかかるからバックグラウンドで動かしておくといいかも。

sda,sdbも同じように作業を繰り返す。
md0からsda1,sdb1を外し、vg00からmd1を分離してmd1アレイを解除。
swapも利用解除してsda,sdbをフリーにしてからパーティーション切り直し。

$ sudo sfdisk -d /dev/sdc | sudo sfdisk /dev/sda
$ sudo sfdisk -d /dev/sdc | sudo sfdisk /dev/sdb
これですべてのディスクが同じ設定になったと。

md0へsda1,sdb1を追加
sda6,sdb6でmd1を作成、フォーマット。
md1をvg00へ追加(lvの拡張は後でいつでも出来るから後回し)
sda5,sdb5でswapを作成、fstab修正。swapon

大事なポイントはここからで、md0にマウントしている/をどうするのか。
今回知ったポイントで一番大きいところはext3の拡張はマウントした状態で行えると言うこと。

今までの作業でmd0のsd[abcd]1パーティーションは1GBとなっているので、
まずアレイのサイズを拡張する。
$ sudo mdadm –grow /dev/md0 -z max
リビルドが行われるが、これも1GBなのですぐ終わる。

ここです、ext3ファイルシステムはマウントしたまま拡張可能。安心
$ sudo resize2fs /dev/md0

これにて万事解決。
容量不足で実行できなかったlinux-imageのupdateを実行したところ気になるwarningが。

W: mdadm: the array /dev/md2 with UUID 958d14c4:ce08bb4b:26636c8b:317bbf90
W: mdadm: is currently active, but it is not listed in mdadm.conf. if
W: mdadm: it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!
W: mdadm: please inspect the output of /usr/share/mdadm/mkconf, compare
W: mdadm: it to /etc/mdadm/mdadm.conf, and make the necessary changes.
W: mdadm: the array /dev/md1 with UUID d84d2821:b6365b56:4c31cd24:6521e64d
W: mdadm: is currently active, but it is not listed in mdadm.conf. if
W: mdadm: it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!
W: mdadm: please inspect the output of /usr/share/mdadm/mkconf, compare
W: mdadm: it to /etc/mdadm/mdadm.conf, and make the necessary changes.

そうだ、アレイを構築し直したのでUUID等情報を修正しないとなりません。
$ sudo mdadm –detail –scan
これで表示されるARRAY表示をmdadm.confに記載する。
$ sudo vim /etc/mdadm/mdadm.conf

起動できなくなったりしたら恐いので、再度インストールしてみる。
$ sudo aptitude reinstall linux-image-2.6.32-5-amd64

もしかしたら
update-initramfs だけでいいのかな。

またもう一つ調べなきゃ行けないことを思いだした。
initramfsについて。

ミラーディスクにエラー発生

Software RAIDで問題発生…

状態を把握。
$ sudo cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[4](F) sdc1[2] sdb1[1]
264960 blocks [4/2] [_UU_]

md2 : active raid1 sdc6[0] sdd6[2](F)
973089024 blocks [2/1] [U_]

md1 : active raid1 sda6[2](F) sdb6[1]
973089024 blocks [2/1] [_U]

2台も。(涙
最近取得した結果がこれなのだけど、既にデバイスがありませんとなってしまうものはどう外すの?

接続されているドライブの情報を調べる
シリアルまでわかるから、接続されているものがどれかわかる。
$ sudo sdparm -i /dev/sda

システムのデバイス情報を調べる
$ sudo find /sys/devices -type l | grep block:
/sys/devices/platform/floppy.0/block:fd0
/sys/devices/pci0000:00/0000:00:1d.7/usb8/8-2/8-2:1.0/host11/target11:0:0/11:0:0:0/block:sde
/sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block:sdf
/sys/devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block:sdb
/sys/devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0/block:sdc
/sys/devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0/block:sdg

パーティション情報を調べる。
$ sudo cat /proc/partitions
major minor #blocks name

8 16 976762584 sdb
8 17 265041 sdb1
8 18 1 sdb2
8 21 3405748 sdb5
8 22 973089148 sdb6
8 32 976762584 sdc
8 33 265041 sdc1
8 34 1 sdc2
8 37 3405748 sdc5
8 38 973089148 sdc6
9 1 973089024 md1
9 2 973089024 md2
9 0 264960 md0
253 0 4882432 dm-0
253 1 2928640 dm-1
253 2 1904726016 dm-2
253 3 368640 dm-3
253 4 3903488 dm-4
253 5 29364224 dm-5
8 64 732574584 sde
8 65 732572001 sde1
8 80 976762584 sdf
8 96 976762584 sdg

$ sudo sdparm -i /dev/sda
/dev/sda: ATA Hitachi HDS72101 JP4O
Device identification VPD page:
Addressed logical unit:
designator type: vendor specific [0x0], code set: ASCII
00 20 20 20 20 20 20 4a 50 32 39 34 30 48 44 30 37 JP2940HD07
10 30 4d 48 43 0MHC
designator type: T10 vendor identification, code set: ASCII
vendor id: ATA
vendor specific: Hitachi HDS721010CLA332 JP2940HD070MHC

$ sudo sdparm -i /dev/sdb
/dev/sdb: ATA WDC WD10EACS-00D 01.0
Device identification VPD page:
Addressed logical unit:
designator type: vendor specific [0x0], code set: ASCII
00 20 20 20 20 20 57 44 2d 57 43 41 55 34 32 33 30 WD-WCAU4230
10 36 31 35 39 6159
designator type: T10 vendor identification, code set: ASCII
vendor id: ATA
vendor specific: WDC WD10EACS-00D6B0 WD-WCAU42306159

$ sudo sdparm -i /dev/sdc
/dev/sdc: ATA WDC WD10EACS-00D 01.0
Device identification VPD page:
Addressed logical unit:
designator type: vendor specific [0x0], code set: ASCII
00 20 20 20 20 20 57 44 2d 57 43 41 55 34 32 33 34 WD-WCAU4234
10 33 39 36 30 3960
designator type: T10 vendor identification, code set: ASCII
vendor id: ATA
vendor specific: WDC WD10EACS-00D6B0 WD-WCAU42343960

$ sudo sdparm -i /dev/sdg
/dev/sdg: ATA WDC WD10EACS-00D 01.0
Device identification VPD page:
Addressed logical unit:
designator type: vendor specific [0x0], code set: ASCII
00 20 20 20 20 20 57 44 2d 57 43 41 55 34 32 34 38 WD-WCAU4248
10 35 30 36 32 5062
designator type: T10 vendor identification, code set: ASCII
vendor id: ATA
vendor specific: WDC WD10EACS-00D6B0 WD-WCAU42485062

$ sudo find /sys/devices -type l | grep block:
/sys/devices/platform/floppy.0/block:fd0
/sys/devices/pci0000:00/0000:00:1d.7/usb8/8-2/8-2:1.0/host11/target11:0:0/11:0:0:0/block:sde
/sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block:sdf
/sys/devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block:sdb
/sys/devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0/block:sdc
/sys/devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0/block:sdg

ホットプラグでいけると思っていたのだが、なんかデバイスの認識がずれているというかなんか変。
この状態から再起動させてみたい。。心配だけど。
現状のデータは外付けHDDに保存できたので比較的安心。

再起動後はいないドライブをraidで認識することもなくすっきりマニュアル通り。
ディスクエラー時は素直に再起動が良さそうな感じ。
となるとsdparm情報が必要になるね。