web-dev-qa-db-ja.com

raidctlミラーを安全に分割する

オンボードLSIカードとRAID1ミラーにあった2つのディスクを備えたSunT5220サーバーがあります。現在、データは重要ではありませんが、ディスクに障害が発生しており、障害から回復する必要がある場合に実際にこれを行う方法を理解しようとしています。

初期の状況は次のようになりました。

#raidctl -l c1t0d0 
ボリュームサイズストライプステータスキャッシュRAID 
サブサイズレベル
ディスク
 --------------- ------------------------------------------------- 
 c1t0d0 136.6GN/A DEGRADED OFF RAID1 
 0.1.0 136.6G GOOD 
 N/A 136.6G FAILED 

0.0.0ディスクの緑色のライト。 0.1.0ディスクを見つけて点灯させます。だから私は自分のドライブが悪いのか、それがどれなのかを知っています。サーバーはまだ明らかに起動します。

まず、新しいディスクを挿入してみました。このディスクは不明なソースからのものです。 Formatはそれを認識せず、cfgadm -alはそれを認識しないため、raidctl-lはそれを認識しません。悪いと思います。別のスペアサーバーから別のディスクを試しました。

#raidctl -c c1t1d0 c1t0d0(t1は私の良いディスク-0.1.0)
ディスクはスペースを占有しました。

また、異なる構文オプションは何も変更しません。

#raidctl -C "0.1.0 0.0.0" -r 1 1 
ディスクがスペースを占有しました。
 
#raidctl -C "0.1.0 0.0 .0 "1 
ディスクがスペースを占有しました。

OK。おそらくこれは、スペアサーバーのディスクにすでにRAID1が搭載されているためです。ああ、私はraidctlで別のボリュームを見ることができます:

#raidctl -l 
コントローラー:1 
ボリューム:c1t1d0(これはサーバーのルートミラーです)
ボリューム:c1t132d0(これは外部ルートミラーです)
ディスク:0.0.0 
ディスク:0.1.0 
 ... 

問題ない。データは気にせず、外部ミラーを削除するだけです。

#raidctl -d c1t132d0 
(データの削除について警告しますが、機能します)

この時点で、/ usr/bin /バイナリが異常終了します。つまり、ls -l/usr/bin /は1.4kを示していますが、cat /usr/bin/which私に改行を与えます。素晴らしいです、私はバイナリを吹き飛ばしました(つまり、memのバイナリはまだ機能します)?ボックスをバウンスします。それはすべてうまく戻ってきます。 WTF。とにかく、私の鏡の再現に戻ります。

#raidctl -l 
コントローラー:1 
ボリューム:c1t1d0(これは私のサーバーのルートミラーです)
ディスク:0.0.0 
ディスク: 0.1.0 
 ... 

男はあなたが鏡を削除することができ、それがそれを分割すると言います。はい、ルートミラーを削除します。

#raidctl -d c1t0d0 
使用中のアレイ。 (これは正確なエラーではない可能性があります)

私はこれをグーグルで検索しましたが、もちろん、ミラーから起動している間は(-fを使用しても)これを行うことはできません。 OK。私 boot cdrom -sそしてボリュームを削除しました。

これで、c1t1d0(私のデータがある場所)に「LSI-Logical-Volume」タイプのディスクが1つあり、c1t0d0(ミラーリングしようとしているもの)に新しい「Hitachi146GB」があります。

(CDから起動)
#raidctl -c c1t1d0 c1t0d0(ミラーリングのソース宛先だと言う人)
不正なアレイレイアウト。
 
 #raidctl -C "0.1.0 0.0.0" -r 1 1(1人あたりの代替構文)
不正な配列レイアウト。
 
#raidctl -C "0.1.0 0.0 .0 "1(raid1を想定、ヘルプなし)
不正な配列レイアウト。

同じサイズのディスク、同じメーカーですが、空のディスクを投入して再同期するのを待つ代わりに、ボリュームを削除しました。多分これは重大なエラーでした。良いディスクのフォーマットのタイプをプレーンな146GBディスクに選択しようとしましたが、パーティションテーブルがリセットされ、データが消去されると確信しています(これが本番の場合は悪いです)。

私は骨が折れていますか?ミラーを壊して再同期した経験のある人はいますか? 「違法な配列レイアウト」についてGoogleには何もありませんので、これが検索の神々への私の貢献です。

2
squarism

結局のところ、私はこれに対する答えを見つけることができませんでした。しかし、私は回避策といくつかの良い情報を見つけました。まず、これはSolaris 10の10/08(U6)にありました。10/ 09ブートCD(U8)を起動したところ、U8のraidctlにバグがあることがわかりました。 U8は、「破損したラベル-不正なジオメトリ」エラーで失敗します。ディスクを完全にワイプした場合でも、U8ブートCDを使用してミラーを再作成することはできませんでしたが、U7(およびおそらくU6)ではまったく同じコマンドが機能しました。だから、そこにバージョン警告のほんの少し。

回避策の要点は次のようになりました(ディスク、パスなどを置き換えてください)。

  • パーティションが分割されましたが、ブートCDからデータを確認できました。 ufsdumpを実行するために多くのスペースが必要だったので、大きなzfsプールをインポートしました。これはあなたにとって異なることを意味するかもしれません、多分ただ大きなパーティションをマウントするだけです。それを/ mnt/spaceと呼びましょう。
  • 既存の各パーティションテーブルをファイルにコピーまたはダンプします。この時点でCDから起動したことを忘れないでください。
    • フォーマット(1、p、p)またはprtvtoc /dev/rdsk/c1t0d0s2 > /mnt/space/partitions.txtを実行します
  • バックアップパーティション
    • ufsdump 0f - /dev/rdsk/c1t0d0s0 > /mnt/space/root_c1t1d0s0.dmp
    • ufsdump 0f - /dev/rdsk/c1t1d0s4 > /mnt/space/var_c1t1d0s4.dmp
    • パーティションごとに続行
  • レイドを再作成します(U7以前のCDから、U8にはバグがあり、失敗します)。
    • raidctl -c c1t0d0 c1t1d0警告:これにより、両方のドライブがワイプされます。
    • RAIDボリュームを作成すると、メンバーディスクのスペアスペース上のすべてのデータが破棄されます。続行しますか(はい/いいえ)?はい
  • 新しいRAIDディスクにフォーマットのラベルを付けます。フォーマットで奇妙なまたは失敗したラベル付けエラーを受け取るべきではありません。
  • raidctl -lでボリュームを検索します(これらの手順ではc1t1d0であると想定しています)
  • パーティションのレイアウトを復元します。
    • cat /mnt/space/partitions.txt | fmthard -s-/dev/rdsk/c1t1d0s2
  • この時点で実際にDiskSuiteに切り替えましたが、復元手順は似ています。
  • newfs各パーティション。
    • newfs /dev/rdsk/c1t1d0s0(s7まで、明らかにs2をスキップ)
  • 各パーティションをマウントして復元します:
    • mkdir /tmp/s0
    • mount /dev/rdsk/ctt1d0s0 /tmp/s0
    • cd /tmp/s0
    • cat /mnt/space/root_c1t1d0s0.dmp | ufsrestore xf -(root dir権限にyesと答えます)
    • umount /tmp/s0
    • スライスごとに繰り返す
  • ブートブロックをコピーします。このファイルへのパスは、ハードウェアによって異なります:
    • installboot platform/SUNW,SPARC-Enterprise-T5220/lib/fs/ufs/bootblk /dev/rdsk/c1t1d0s0
  • すべてをアンマウントし、必要に応じてzpoolをエクスポートし、CDから再起動します。
  • 開いているブートプロンプトからエイリアスを編集します
    • probe-scei-all
    • show-disks(ディスクを選択)
    • nvalias disk Ctrl-Y
    • boot disk
  • この時点で、ハードウェアミラーに戻るか、DiskSuiteに切り替えた可能性があります。

このすべての途中でdisksuiteに切り替えたい場合:-上記のようにufsdumpを使用してバックアップします-ハードウェアRAID定義を削除します-パーティションを1番目のディスクに復元し、1番目のディスク上のパーティションをnewfsします-ufsrestoreを1番目のディスクに実行しますsanityboot-次に通常のディスクスイートのインストールを開始します。 CDからディスクスイートをすべてワンショットで実行しようとしても、メタサービスが実行されていないため、実行されません。次のエラーが発生します。metadb: network/rpc/meta:default: failed to enable/disable SVM serviceメタコマンドを実行しても問題はなく、固執することはありません。 IE:ハードディスクを再起動すると、metastatは「メタデータベースが見つかりません」と表示します。

2
squarism