NetBSDでRAID1 on GPT

(コメント: 0)

基本方針はfdisk(8)とかdisklabel(8)を使用しないでGPT(GUIDパーティション)だけを使って、RAIDframeのRAID1を構築を試してみた。2TBより少し大きいハードディスクではNetBSDのディスクラベルではセクター数が増えすぎて管理しきれないため、GPTによる構成を試す一貫として行った。

    1. wd0(とwd1)上にGPTなパーティションを作る:
      # gpt create wd0
    2. そこにRaidframe用のパーティションを追加:
      # gpt add -i 1 -b 40 -s 20971447 -t raid wd0
    3. 作成したパーティションに対応するdk0を作成:
      # dkctl wd0 addwedge raid0 40 20971447 raidframe
    4. RAID1用に用意したraid0.confでraid0を構成、お決まりの設定:
      # raidctl -C raid0.conf raid0
      # raidctl -I raid0 201206270
      # raidctl -i raid0#
      raidctl -A root raid0
    5. 今度はraid0上にGPTなパーティションを作る:
      # gpt create raid0
    6. 実際にファイルシステムを置くパーティションを追加:
      # gpt add -i 1 -b 128 -s 524288 -t ffs raid0
      # gpt add -i 2 -b 524416 -s 2087152 -t swap raid0
      # gpt add -i 3 -b 2611568 -s 4194304 -t ffs raid0
      # gpt add -i 4 -b 6805872 -s 14165352 -t ffs raid0
    7. 再び対応するdk1からdk4を追加:
      # dkctl raid0 addwedge root 128 524288 ffs
      # dkctl raid0 addwedge swap 524416 2087152 swap
      # dkctl raid0 addwedge var 2611568 4194304 ffs
      # dkctl raid0 addwedge usr 6805872 14165352 ffs
    8. ファイルシステムを作成:
      # newfs -O2 /dev/rdk1
      # newfs -O2 /dev/rdk3
      # newfs -O3 /dev/rdk4
    9. /dev/dk1 を 一時的に /mnt マウント:
      # mount /dev/dk1 /mnt
    10. カーネルを /mnt に置く。
    11. boot も置く:
      # cp -p /usr/mdec/mboot /mnt
    12. bootコードを書く:
      # installboot /dev/rdk1 /usr/mdec/bootxx_ffsv2
    13. GPTなパーティションのブートコードを書く:
      # gpt biosboot -i 1 wd0
      ここでリブートすると起動しない。
      # gpt biosboot -i 1 raid0
      とかやっても起動しない。

そもそも /boot を見つけようともしていない、おそらく installboot(8) で書き込んだMBRの次に起動されるブートコードが、GPTの中にあるRAIDな内容を理解していないようだ。2.と3.でraid/raidframeの代わりにufs/ffsを指定してUFS2なファイルシステムを作れば何ら問題はなく起動できるシステムができる。

しっかり、Problem Report kern/44982であった(正確にはkern/45597から辿った)という落ちであった。

戻る

コメント

コメントを追加

2と5を加算してください。

Copyright © 2011-2024 Takahiro Kambe all rights reserved.