編集メニュー > 新規作成 編集 コピー 名前の変更 アップロード 添付ファイル一覧 バックアップ

#author("2018-05-31T20:43:49+09:00","default:kondo","kondo")
#author("2018-05-31T20:44:34+09:00","default:kondo","kondo")
*raid1 [#eee56407]
RAID1について勉強中。/proc/mdstatに状態があるらしい。自分のマシンもRAID1でくんでいるのでみてみる。

 Personalities : [raid1] [raid6] [raid5] [raid4]
 md0 : active raid1 sda1[0] sdb1[2](F)
       104320 blocks [2/1] [U_]
  
 md3 : active raid1 sda5[0] sdb5[2](F)
       473845056 blocks [2/1] [U_]
  
 md2 : active raid1 sda3[0] sdb3[2](F)
       4192896 blocks [2/1] [U_]
 
 md1 : active raid1 sda2[0] sdb2[2](F)
       10241344 blocks [2/1] [U_]
  
 unused devices: 

[2/1]というのはRAIDを構成すべきパーティションが2こあって、うち1こが実際に稼働している数になっているという意味らしい。ふむふむ、っておい!まずいではないですか。 dmesgってみると

 raid1: Disk failure on sdb5, disabling device.
 raid1: Operation continuing on 1 devices.

とかいっているし、そのあとI/O errorっていうのがsdbさん多発です!まあ3年使ったしおなくなりになっても不思議ではないかも? 4月にでも変えよう!

* RAID1でのHDDの交換 [#q5bdc14f]
上のようになってしまったとき場合のHDDの交換のしかたのメモ。
前回メモ取り忘れたので。
まず/proc/mdstatを確認。

 Personalities : [raid1] [raid6] [raid5] [raid4]
 md0 : active raid1 sda1[0] sdb1[1]
       104320 blocks [2/2] [UU]
 
 md3 : active raid1 sdb5[1]
       473845056 blocks [2/1] [_U]
 
 md2 : active raid1 sda3[0] sdb3[1]
       4192896 blocks [2/2] [UU]
 
 md1 : active raid1 sda2[0] sdb2[1]
       10241344 blocks [2/2] [UU]
 
 unused devices: <none>

dmesgしてみると

 sd 0:0:0:0: [sda] Add. Sense: Unrecovered read error - auto reallocate failed

とか言われているのでもう駄目なんですかね?まあ前はsdbさんが死んだので、sdaさんももう悲鳴を上げてもおかしくない。変えます。
まずは外つけHDDのアンマウント。

 umount /r405n

そののち、外つけHDDの電源OFF。
sdaを新しいのに交換しても起動しない。。。
grubとかかな?
grub.confをみてみると

 # grub.conf generated by anaconda
 #
 # Note that you do not have to rerun grub after making changes to this file
 # NOTICE:  You have a /boot partition.  This means that
 #          all kernel and initrd paths are relative to /boot/, eg.
 #          root (hd0,0)
 #          kernel /vmlinuz-version ro root=/dev/md1
 #          initrd /initrd-version.img
 #boot=/dev/md0
 default=0
 timeout=5
 splashimage=(hd0,0)/grub/splash.xpm.gz
 hiddenmenu
 title Fedora (2.6.26.8-57.fc8)
         root (hd0,0)
         kernel /vmlinuz-2.6.26.8-57.fc8 ro root=/dev/md1 rhgb quiet
         initrd /initrd-2.6.26.8-57.fc8.img
 title Fedora (2.6.25.14-69.fc8)
         root (hd0,0)
         kernel /vmlinuz-2.6.25.14-69.fc8 ro root=/dev/md1 rhgb quiet
         initrd /initrd-2.6.25.14-69.fc8.img

となっていて壊れかけのドライブから起動するようになっている?
なので以下を試してみる。

 [root@kurage ~]# /sbin/grub
  grub> root (hd0,0)
  grub> setup (hd0)
  grub> root (hd1,0)
  grub> setup (hd1)
  grub> quit


としてみる。これはどちらのドライブからでも起動できるようにしたつもり。
これで
-ドライブ1:新しいHDD
- ドライブ2:sdb(今まで使っていた正常なひと)
~
これで電源投入するとやっぱり起動しない。
試しにsdbだけつけて電源入れてみるとこれは起動する。
うーん。。。
面倒臭いので
-ドライブ1:今まで使っていたsdb(2010/08/24以前に交換)
-ドライブ2:新しいHDD(2010/08/24)
~
としてみよう。すると起動できた。
 [kondo@kurage ~]$ less /proc/mdstat
 Personalities : [raid1] [raid6] [raid5] [raid4] 
 md0 : active raid1 sda1[1]
       104320 blocks [2/1] [_U]
       
 md3 : active raid1 sda5[1]
       473845056 blocks [2/1] [_U]
       
 md2 : active raid1 sda3[1]
       4192896 blocks [2/1] [_U]
       
 md1 : active raid1 sda2[1]
       10241344 blocks [2/1] [_U]
       
 unused devices: <none>

という風にsdaが生きているという様になった。RAID復旧に移行。

 [root@kurage kondo]# /sbin/fdisk -l /dev/sda

 Disk /dev/sda: 500.1 GB, 500107862016 bytes
 255 heads, 63 sectors/track, 60801 cylinders
 Units = シリンダ数 of 16065 * 512 = 8225280 bytes
 Disk identifier: 0x00000000
 
  デバイス Boot      Start         End      Blocks   Id  System
 /dev/sda1   *           1          13      104391   fd  Linux raid 自動検出
 /dev/sda2              14        1288    10241437+  fd  Linux raid 自動検出
 /dev/sda3            1289        1810     4192965   fd  Linux raid 自動検出
 /dev/sda4            1811       60801   473845207+   5  拡張領域
 /dev/sda5            1811       60801   473845176   fd  Linux raid 自動検出

次にfdiskでパーティションを切っていく。

 [root@kurage kondo]# /sbin/fdisk /dev/sdb
 デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
 含んでいません
 Building a new DOS disklabel with disk identifier 0x81199074.
 Changes will remain in memory only, until you decide to write them.
 After that, of course, the previous content won't be recoverable. 
 
 
 このディスクのシリンダ数は 60801 に設定されています。
 間違いではないのですが、1024 を超えているため、以下の場合
 に問題を生じうる事を確認しましょう:
 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
 2) 別の OS のブートやパーティション作成ソフト
    (例. DOS FDISK, OS/2 FDISK)
 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
 正常になります

何か言われているけど気にしなくて良いかな?次にパーティションを切っていく。

 コマンド (m でヘルプ): n
 コマンドアクション
    e   拡張
    p   基本領域 (1-4)
 p
 領域番号 (1-4): 1
 最初 シリンダ (1-60801, default 1): 1
 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-60801, default  60801): 13
この作業を繰り替えしてsdaと同じになるようにシリンダを指定していく。
次にパーティションのIDをsoftware RAID用に変更。

 コマンド (m でヘルプ): t
 領域番号 (1-5): 1
 16進数コード (L コマンドでコードリスト表示): fd
 領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました

次にブート可能フラグをつける。

 コマンド (m でヘルプ): a
 領域番号 (1-5): 1
 
最終的には以下のようになるはず。

 コマンド (m でヘルプ): p
 
 Disk /dev/sdb: 500.1 GB, 500107862016 bytes
 255 heads, 63 sectors/track, 60801 cylinders
 Units = シリンダ数 of 16065 * 512 = 8225280 bytes
 Disk identifier: 0x81199074
 
  デバイス Boot      Start         End      Blocks   Id  System
 /dev/sdb1   *           1          13      104391   fd  Linux raid 自動検出
 /dev/sdb2              14        1288    10241437+  fd  Linux raid 自動検出
 /dev/sdb3            1289        1810     4192965   fd  Linux raid 自動検出
 /dev/sdb4            1811       60801   473845207+   5  拡張領域
 /dev/sdb5            1811       60801   473845176   fd  Linux raid 自動検出

よければテーブルを書き込む。

 コマンド (m でヘルプ): w
 領域テーブルは交換されました!
 
 ioctl() を呼び出して領域テーブルを再読込みします。
 ディスクを同期させます。
 [root@kurage kondo]#

あとはこいつらをraidに参加させる。

 [root@kurage kondo]# /sbin/mdadm /dev/md0 --add /dev/sdb1 
 mdadm: added /dev/sdb1
 [root@kurage kondo]# /sbin/mdadm /dev/md1 --add /dev/sdb2
 mdadm: added /dev/sdb2
 [root@kurage kondo]# /sbin/mdadm /dev/md2 --add /dev/sdb3
 mdadm: added /dev/sdb3
 [root@kurage kondo]# /sbin/mdadm /dev/md3 --add /dev/sdb5
 mdadm: added /dev/sdb5

これで同期が始まる。mdstatを見てみると、

 [root@kurage kondo]# cat /proc/mdstat 
 Personalities : [raid1] [raid6] [raid5] [raid4] 
 md0 : active raid1 sdb1[0] sda1[1]
       104320 blocks [2/2] [UU]
       
 md3 : active raid1 sdb5[2] sda5[1]
       473845056 blocks [2/1] [_U]
         resync=DELAYED
       
 md2 : active raid1 sdb3[2] sda3[1]
       4192896 blocks [2/1] [_U]
         resync=DELAYED
       
 md1 : active raid1 sdb2[2] sda2[1]
       10241344 blocks [2/1] [_U]
       [==================>..]  recovery = 92.5% (9477568/10241344)  finish=0.1min speed=93574K/sec
       
 unused devices: <none>

途中の場合はこんな感じ。watchコマンドを使うと経過具合がわかる。
復旧後はgrubブートローダーをインストールしておく。
 [root@kurage analys]# /sbin/grub
 grub> root (hd1,0)
 grub> setup (hd1)
 grub> root (hd0,0)
 grub> setup (hd0)

次に以下をチェック。
-正しく起動するかどうか?
-sda/sdbをはずして起動するかどうか?

ちゃんとHDD1こにしても起動したから良かったのだけれど
md1,md3がなぜかsdbのみになっていた。
ちょっと怖いがもう一度sdaをmdadmする。
同期後にrebootしたらOKだった。
HDD1こ外して起動したのが良くなかったのかも?

**HDDの再同期がトロイ件 [#r0907ab8]
NEBULAで使用しているDAQ用PCのRAID再同期が遅い。
http://knifer236.blog24.fc2.com/blog-entry-41.html
にヒントが。

 [root@nebula01 nebula]# /sbin/hdparm -t /dev/md2
 
 /dev/md2:
  Timing buffered disk reads:   36 MB in  3.15 seconds =  11.43 MB/sec

という速度。ちなみに東工大の自分のマシンでやってみると

 [root@kurage kondo]# /sbin/hdparm -t /dev/md2
 
 /dev/md2:
  Timing buffered disk reads:  398 MB in  3.01 seconds = 132.25 MB/sec

と1桁以上違う!DMAが関係しているとのこと。
カーネルの再構築が必要らしいが、まだデータ取得中なので以下を試す。

 [root@nebula01 nebula]# /sbin/hdparm -i /dev/hda
 
 /dev/hda:
 
  Model=Hitachi HDS721025CLA382, FwRev=JP1OA39C, SerialNo=JP0221HL0KSTRA
  Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
  RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=56
  BuffType=DualPortCache, BuffSize=6168kB, MaxMultSect=16, MultSect=16
  CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=268435455
  IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
  PIO modes:  pio0 pio1 pio2 pio3 pio4
  DMA modes:  mdma0 mdma1 mdma2
  UDMA modes: udma0 udma1 udma2
  AdvancedPM=yes: disabled (255) WriteCache=enabled
 
  * signifies the current active mode
 
 [root@nebula01 nebula]# /sbin/hdparm -d1 /dev/hda
 
 /dev/hda:
  setting using_dma to 1 (on)
  HDIO_SET_DMA failed: Operation not permitted
  using_dma    =  0 (off)

となってDMAをONにできない。raidにしているせいなのか?
いろいろ吹っ飛ぶのは怖いので卒論シーズンが終わったらいじってみようかな?

**HIME DAQ用PCのHDD交換 [#m203cadf]
パーティション作成はpartedを使う必要がある。
2TBを超える場合、パーティション作成はpartedを使う必要がある。
 [root@sdaq38 daq]# parted /dev/sdb
ログを残すの忘れた…ミラーリングしている奴に合わせる。1049k、100%などと指定する。


 [root@sdaq38 daq]# parted -l
 モデル: ATA SAMSUNG SSD 830 (scsi)
 ディスク /dev/sda: 128GB
 セクタサイズ (論理/物理): 512B/512B
 パーティションテーブル: gpt
 
 番号  開始    終了   サイズ  ファイルシステム  名前  フラグ
  1    1049kB  120GB  120GB   ext4                    boot
  2    120GB   128GB  8388MB  linux-swap(v1)
 
 
 モデル: ATA TOSHIBA DT01ACA3 (scsi)
 ディスク /dev/sdb: 3001GB
 セクタサイズ (論理/物理): 512B/4096B
 パーティションテーブル: gpt
 
 番号  開始    終了    サイズ  ファイルシステム  名前       フラグ
  1    1049kB  3001GB  3001GB  ext4              secondary
 
 
 モデル: ATA WDC WD30EZRX-00D (scsi)
 ディスク /dev/sdc: 3001GB
 セクタサイズ (論理/物理): 512B/4096B
 パーティションテーブル: gpt
 
 番号  開始    終了    サイズ  ファイルシステム  名前     フラグ
  1    1049kB  3001GB  3001GB                    primary
 
 エラー: パーティション長 5860527856 セクタは loop パーティションテーブルによって決められた最大長 4294967295 を越えています

 [root@sdaq38 daq]# mkfs -t ext4 /dev/sdb1
 mke2fs 1.41.12 (17-May-2010)
 Filesystem label=
 OS type: Linux
 Block size=4096 (log=2)
 Fragment size=4096 (log=2)
 Stride=1 blocks, Stripe width=0 blocks
 183148544 inodes, 732566272 blocks
 36628313 blocks (5.00%) reserved for the super user
 First data block=0
 Maximum filesystem blocks=0
 22357 block groups
 32768 blocks per group, 32768 fragments per group
 8192 inodes per group
 Superblock backups stored on blocks:
           32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
           4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
           102400000, 214990848, 512000000, 550731776, 644972544
 
 Writing inode tables: done
 Creating journal (32768 blocks): done
 Writing superblocks and filesystem accounting information: done
 
 This filesystem will be automatically checked every 28 mounts or
 180 days, whichever comes first.  Use tune2fs -c or -i to override.

 [root@sdaq38 daq]# /sbin/mdadm /dev/md0 --add /dev/sdb1
 [root@sdaq38 daq]# cat /proc/mdstat
 Personalities : [raid1]
 md0 : active raid1 sdb1[2] sdc1[1]
       2930263928 blocks super 1.2 [2/1] [_U]
       [>....................]  recovery =  0.0% (995072/2930263928) finish=392.4min speed=124384K/sec
 
 unused devices: <none>