*Soft Raid [#d02f8913]

RIGHT:更新日 &lastmod();

**Fileシステムの表示 [#xb945176]

 $ df -T
 Filesystem    Type   1K-ブロック  使用        空き 使用% マウント位置
 /dev/md0      ext3   305401344  28399312 261488472  10% /
 none         tmpfs     1032396         0   1032396   0% /dev/shm

 $  df -T
 ファイルシス  タイプ   1K-ブロック    使用 使用可    使用% マウント位置
 rootfs      rootfs    48379628   4626788  41295300  11% /
 /dev/root     ext4    48379628   4626788  41295300  11% /
 /dev         tmpfs      474244       464    473780   1% /dev
 none         tmpfs      474244         0    474244   0% /dev/shm

**RaidとGhost [#x85fecff]

Vine5.xでhddがSATAインターフェイスの/dev/sdaをGhostキャストサーバで吸い上げ、/dev/sdbに書き戻したら、sda,sdb(SATA1側に接続)したら、問題なく1HDDで起動したが、2台接続した場合はどの組み合わせもKernelパニックで起動しなかった。

そこで、ディユプリケートしたHDDをWindowsでFormatして接続したら問題なく起動。
やはりミラーでもなにかちがうのかな?


**DISK構成 [#maa3b95b]

''raid0では/boot領域がRaid構成だと起動しないがRaid1(Mirror)だとOK。''~
インストール直後にraid1はraidを構築し始めるので/proc/mdstatをモニターして
Raidが完成する様子を見る。

''&color(red){注)このままではhda側に障害が出たとき、hdb側にMBRがないので立ち上がらない。そこで事前にhdaのMBRをhdbの[[MBRのコピー>#mbr]]をしておく。};''~
また、一度Raidのメンバーから外すと再起動後は再度メンバーとしてADDする必要がある。

''raidの構成''

 hda
 <================================ RAID ================>
 --------------------------------------------------------
 |/boot(500MB) |/ (18GB)                    |swap (1GB) |
 --------------------------------------------------------
     hda1           md0(hda2)                 md1(hda3)

 hdb
 <================================ RAID ================>
 --------------------------------------------------------
 |/boot(500MB)|/ (18GB)                    |swap (1GB) |
 --------------------------------------------------------
     hdb1           md0(hdb2)                 md1(hdb3)


**ドライブの交換 [#ne4a7206]
破壊されたディスクの交換を行う~
新しいHDDを接続し、残ったHDDと同じようにfdiskでパーテションを作成する~
容量が多くなればよさそう~
Formatの必要かも

 md0 : active raid1 hdb2[2](F) hda2[0]
       19350208 blocks [2/1] [U_]

のように不良HDDには(F)がつく。

 /sbin/mdadm --fail /dev/md0 /dev/hdb2

で切り離す必要があるかも

''元DISK(20GB)''

 Disk /dev/hda: 21.4 GB, 21474836480 bytes
 255 heads, 63 sectors/track, 2610 cylinders
 Units = シリンダ数 of 16065 * 512 = 8225280 bytes
 
  デバイス Boot      Start         End      Blocks   Id  System
 /dev/hda1   *           1          64      514048+  83  Linux
 /dev/hda2              65        2473    19350292+  fd  Linux raid 自動検出
 /dev/hda3            2474        2610     1100452+  fd  Linux raid 自動検出


''新追加DISK(24GB)''

 Disk /dev/hdb: 25.7 GB, 25769803776 bytes
 15 heads, 63 sectors/track, 53261 cylinders
 Units = シリンダ数 of 945 * 512 = 483840 bytes
 
  デバイス Boot      Start         End      Blocks   Id  System
 /dev/hdb1               1        1138      537673+  83  Linux
 /dev/hdb2            1139       44542    20508390   83  Linux
 /dev/hdb3           44543       53261     4119727+  83  Linux

 コマンド (m でヘルプ): t 
 領域番号 (1-4): 2
 16進数コード (L コマンドでコードリスト表示): fd 
 領域のシステムタイプを 2 から fd (Linux raid 自動検出) に変更しました
 
 コマンド (m でヘルプ): p
 
 Disk /dev/hdb: 25.7 GB, 25769803776 bytes
 15 heads, 63 sectors/track, 53261 cylinders
 Units = シリンダ数 of 945 * 512 = 483840 bytes

  デバイス Boot      Start         End      Blocks   Id  System
 /dev/hdb1               1        1138      537673+  83  Linux
 /dev/hdb2            1139       44542    20508390   fd  Linux raid 自動検出
 /dev/hdb3           44543       53261     4119727+  fd  Linux raid 自動検出


***Raidのメンバーに追加 [#vf1d362f]

Vine4.x (Kernel2.6)から再構築のためRaidメンバーに参加させるにはmdadmを使用する
raidhotaddコマンドから、mdadmになった。

hdb2,hdb3をメンバーに参加させる。その後hdb1にddコマンドで/bootをhda1からコピー。

 # /sbin/mdadm /dev/md0 -a /dev/hdb2
 mdadm: re-added /dev/hdb2
 # cat /proc/mdstat
 Personalities : [raid1]
 md1 : active raid1 hdb3[1] hda3[0]
       1100352 blocks [2/2] [UU]
 
 md0 : active raid1 hdb2[2] hda2[0]
       19350208 blocks [2/1] [U_]
       [>....................]  recovery =  0.4% (78208/19350208) finish=24.6min  speed=13034K/sec
 
 unused devices: <none>

***Raidの状況表示 [#b5289789]

 # /sbin/mdadm -Q -D /dev/md0
 /dev/md0:
         Version : 00.90.03
   Creation Time : Tue Sep 18 13:34:15 2007
      Raid Level : raid0   <==ストライピング(raid0)
      Array Size : 235512320 (224.60 GiB 241.16 GB)
    Raid Devices : 2
   Total Devices : 2
 Preferred Minor : 0
     Persistence : Superblock is persistent
 
     Update Time : Tue Sep 18 13:34:15 2007
           State : clean
  Active Devices : 2
 Working Devices : 2
  Failed Devices : 0
   Spare Devices : 0
 
      Chunk Size : 256K
 
            UUID : a845c29d:8bcdbcb7:7ca2d75c:ddbed9f3
          Events : 0.1
 
     Number   Major   Minor   RaidDevice State
        0       3        2        0      active sync   /dev/hda2
        1       3       66        1      active sync   /dev/hdb2

***擬似的にHDDの不良をセットする [#y9fa4723]

 # /sbin/mdadm --fail /dev/md1 /dev/hda2
 mdadm: set /dev/hda2 faulty in /dev/md1

これで、hda2がRaidから切り離される

***明示的にHDDの切り離し [#u00cdfd2]

 # sbin/mdadm --remove /dev/md1 /dev/hda2
 mdadm: hot removed /dev/hda2

これで、hda2が切り離される。しかしながら、正常に動作しているときは、
 mdadm: hot remove failed for /dev/hdb3: Device or resource busy
となり切り離せないので、--failで一度疑似不良にするとはずせる。


***その他 [#lc9ccc2a]
Raidから物理DISKを外し、一度シングルで立ち上げると、再度DISKを実装してもRaid構成にならない。その時は再度mdadmで再度addする必要がある。このときシングルの試験をhda->hdbの順序で確認した場合はhdbがアクティブになりhdaをコマンドでraidに追加した。

**ddを使用してパーテションのコピーのしかた [#i56f8120]

***bootパーティションがミラーでない場合のコピー [#x7a8e16e]

Raid1ではbootもミラー化できるので以下の作業は不要だが参考までに記述しておく。~
再起動後/bootの内容をhdb1にコピーする

dd if=/dev/hda1 of=/dev/hdb1 bs=512 (*hd[ab]1=bootパーティション)

 # dd if=/dev/hda1 of=/dev/hdb1 bs=512
 1028097+0 records in
 1028097+0 records out
 526385664 bytes (526 MB) copied, 9.2453 seconds, 56.9 MB/s

''mountして確認''

 # mount /dev/hdb1 /mnt
 # ls /mnt
 System.map@                grub/                      lost+found/
 System.map-2.6.16-0vl68    initrd-2.6.16-0vl68.img    vmlinuz@
 System.map-2.6.16-0vl76.3  initrd-2.6.16-0vl76.3.img  vmlinuz-2.6.16-0vl68
 System.map.old@            initrd.img@                vmlinuz-2.6.16-0vl76.3
 config-2.6.16-0vl68        initrd.old.img@            vmlinuz.old@
 config-2.6.16-0vl76.3      kernel.h

&color(red){kernelのUpdateしたときはコピーしておく必要がある};

***&aname(mbr){MBRのコピー}; [#l11c1473]

hdaが破壊されるとhdbにはMBRが書き込まれていないので起動できない。そこで先にhdaのMBRをhdbにコピーしておきhdaが破壊されたときはhdbにあるHDDをマスターにして起動できるようにしておく。

''MBRというファイルにhdaのMBRをコピー''~
dd if=/dev/hda of=./MBR bs=512 count=1~

''ファイルMBRをhdbのMBRにコピー''~
dd if=./MBR of=/dev/hdb bs=446 count=1  &color(red){<==bsが512でなく446であることに注意};

 # dd if=/dev/hda of=./MBR bs=512 count=1
 1+0 records in
 1+0 records out
 512 bytes (512 B) copied, 0.005724 seconds, 89.4 kB/s
 
 # dd if=./MBR of=/dev/hdb bs=446 count=1
 1+0 records in
 1+0 records out
 446 bytes (446 B) copied, 0.000928 seconds, 481 kB/s


***GRUBの場合はGURBのインストールも必要かも [#u792384a]

Vine6.0(ext4でシステムを構成)でシステム起動時はデュプリケートされていない?ような感じもあった。~
SoftRaidでGURBをインストールする必要がある場合は以下のように行う(Vine5.xまでは必要なかった [ext3は問題ないかも未確認])

通常にRaidで起動して以下のようにする。~
インストールするデバイス(sdb)をhd0に指定して、その最初のパーティション(hd0,0)をrootに指定して、その後そのデバイスにgrubをインストールするようだ

 # grub
 Probing devices to guess BIOS drives. This may take a long time.
 
 
     GNU GRUB  version 0.97-4vl6  (640K lower / 3072K upper memory)
 
  [ Minimal BASH-like line editing is supported.  For the first word, TAB
    lists possible command completions.  Anywhere else TAB lists the possible
    completions of a device/filename.]
 grub> device (hd0) /dev/sdb  <=hd0に sdbを割り振る
 device (hd0) /dev/sdb
 grub> root (hd0,0)  <= rootを指定
 root (hd0,0)
  Filesystem type is ext2fs, partition type 0xfd
 ----以下がCentOS6の場合-----
 GRUBをインストールをする
 grub> setup  (hd0)
 setup  (hd0)
  Checking if "/boot/grub/stage1" exists... no
  Checking if "/grub/stage1" exists... yes
  Checking if "/grub/stage2" exists... yes
  Checking if "/grub/e2fs_stage1_5" exists... yes
  Running "embed /grub/e2fs_stage1_5 (hd0)"...  27 sectors are embedded.
 succeeded
  Running "install /grub/stage1 (hd0) (hd0)1+27 p \
 (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
 Done.

コマンドが > setup (hd0)かも下ではうまくいかない?~
下のコマンドはVine、上のsetupコマンドは CentOS6で動作した
[[ここ>turboLinux_White Box Enterprise Linux_Fedora Core_Red Hat Memo/CentOS5.x Raid1でインストール]]

 ----Vineのときは下のようにしたような気が・・・・
 grub> install /boot/grub/stage1 (hd0) /boot/grub/stage2 p /boot/grub/grub.conf
 install /boot/grub/stage1 (hd0) /boot/grub/stage2 p /boot/grub/grub.conf
 grub> quit
 quit
 #
これでsdbからも起動するようになった

''ext4 format''

 # mkfs.ext4 /dev/sdb1
 mke2fs 1.41.14 (22-Dec-2010)
 Filesystem label=
 OS type: Linux
 Block size=4096 (log=2)
 Fragment size=4096 (log=2)
 Stride=0 blocks, Stripe width=0 blocks
 3186688 inodes, 12723472 blocks
 636173 blocks (5.00%) reserved for the super user
 First data block=0
 Maximum filesystem blocks=0
 389 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
 
 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.


***SWAPのパーティション領域の作成(参考:Raidとは関係ない) [#v5699b36]

-フォーマット

 # mke2fs -j /dev/sda2

-SWAPの作成

 # mkswap /dev/sda2
スワップ空間バージョン1を設定します、サイズ = 2271316 KiB
ラベルはありません, UUID=299df47d-b361-4c91-9725-1d98d75d06cb


**参考 [#pa546c70]

[[Raidの作成(Kernel2.4):http://wwwism.dyndns.org/hp/linux/raid.htm]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS