2つのディスクのraid1があり、追加のディスクが2つあります。これら2つのディスクをアレイに追加し、データを失うことなくraid10に移行する必要があります。 ブートがraidにないが、ディスクの1つだけにあるという事実によって状況は複雑になります。サーバーのフォールトトレランスを強化するには、ローダーをraid1に移動する必要があります。
説明されているすべてのアクションは、作業中のバトルサーバーで実行されました。 このスキームは普遍的で、他の初期条件に適しています。 同様に、raid10からraid1に移行できます。
私たちが持っています:
オン/ dev / sdd1は/ boot
配列上/ dev / md1は/
配列/ dev / md2はスワップです
ブートローダーの問題を既に解決している場合は、移行セクションにスキップできます。
ブートローダーを転送します
/ dev / sddドライブにデータがあり、ブートローダーがあるため、これを標準と見なします。他のすべてのドライブは空と見なすことができます。 信頼性のため、ブートローダーをraid10に配置せず、フォールトトレランスを高めるために2台のディスクのraid1に残します(3xおよび4xで可能)。
sddと同様に、sdbディスクに1対1のパーティションを作成します。 または、たとえば、手動で
fdisk /dev/sdb
または単にセクションを複製する
sfdisk -d /dev/sdd --force | sfdisk /dev/sdb --force
ブートローダー自体は/ dev / sdd1にあるため、次のように劣化したraid1 / dev / md4を作成します
mdadm --create /dev/md4 --level=1 --raid-disks=2 missing /dev/sdb1 mke2fs -j /dev/md4
新しいアレイを作成したら、すべてのレイドに関する情報を更新する必要があります。更新しないと、再起動後にすべてがバラバラになります
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
サーバーを再起動します。再起動後、削除する必要のある奇妙な配列/ dev / md127と、表示されない可能性のある/ dev / md4が表示されます。 代わりに/ dev / md127。 この問題を解決するには、これら2つの配列を停止し、/ dev / md4を再度追加するだけです。
mdadm -S /dev/md127 mdadm -S /dev/md4 mdadm --examine --scan >> /etc/mdadm/mdadm.conf mdadm --assemble /dev/md4
信頼性を確保するために、再起動する価値があります。その後、最も重要な部分に進み、作成したアレイからサーバーをロードするようにGRUB2ブートローダーを編集する必要があります。 これを行うには、ブートローダー/ dev / sdd1と新しいアレイ/ dev / md4で古いディスクのUUIDを見つけます
root@server:~
/boot/grub/grub.cfgを編集します。 古いUUIDが見つかった場合-4d7faa7f-25b3-4a14-b644-682ffd52943bを新しいUUID-29683c02-5bd7-4805-8608-5815ba578b6cに置き換えます。実際には各検索セクションにあります。
ルートが設定されている場合は常に、交換する必要があります。 たとえば、こんな感じでした
set root='(hd0)'
そして、私たちはこのようになります
set root='(md/4)'
結果の新しい構成の例
insmod raid
insmod mdraid
insmod part_msdos
insmod part_msdos
insmod part_msdos
insmod part_msdos
insmod ext2
ルートを設定= '(md / 4)'
検索--no-floppy --fs-uuid --set 59f76eb9-00d2-479e-b94e-6eb54fc574d4
locale_dir =($ルート)/ grub /ロケールを設定します
セクション### BEGIN /etc/grub.d/10_linux ###は次のようになります
menuentry 'Debian GNU / Linux、with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
insmod raid
insmod mdraid
insmod part_msdos
insmod part_msdos
insmod part_msdos
insmod part_msdos
insmod ext2
ルートを設定= '(md / 4)'
検索--no-floppy --fs-uuid --set 59f76eb9-00d2-479e-b94e-6eb54fc574d4
echo 'Linux 2.6.32-5-amd64を読み込んでいます...'
linux /vmlinuz-2.6.32-5-amd64 root = / dev / md1 ro quiet
echo '初期RAMディスクを読み込んでいます...'
initrd /initrd.img-2.6.32-5-amd64
}
menuentry 'Debian GNU / Linux、Linux 2.6.32-5-amd64(回復モード)' --class debian --class gnu-linux --class gnu --class os {
今すぐリブートしないことが非常に重要です。そのため、このファイルを変更することで、ブートローダーはダウンロード情報が/ dev / md4にあるとすでに考えており、まだ何もありません。 抜け穴を残すために、復旧モードセクションを編集しないでください。古いデータで起動できますが、このためにはKVM-IP経由でアクセスするか、DC従業員が読み込み時に復旧モードを選択する必要があります。
今、あなたはラムディスクを更新する必要があります、さもなければ、システムは単に起動しません
update-initramfs -u
ブートローダーに変更を加えた後、/ bootの内容を作成されたアレイ/ dev / md4に転送できます
mkdir /mnt/md4 mount /dev/md4 /mnt/md4 rsync -avHxl --progress --inplace --exclude 'lost+found' /boot/ /mnt/md4/ umount /mnt/md4/
GRUB2ブートローダーが2台のハードドライブ(またはアレイに追加する量に応じて4台)と/ dev / md4アレイにインストールされていることを確認する必要があります。 これを行う最も信頼できる方法は、実行することです
dpkg-reconfigure grub-pc
ブートローダーを追加するすべてのディスクを選択する必要があります。
ブートローダーに加えて、システム自体はブートローダーが別の場所にあることを正しく理解する必要があります。このため、ファイル/ etc / fstabおよび/ etc / mtabを編集するだけで十分です。 / bootがマウントされている行に興味があります。 UUIDは必要ありませんが、代わりにraid-arrayの名前を示します。
ファイル/ etc / fstab
ファイル/ etc / mtab
これでリブートできます。すべてを正しく実行すると、システムは/ dev / md4からブートし、/ dev / sdd1は使用されなくなります。 劣化したアレイを終了するだけです
mdadm /dev/md4 --add /dev/sdd1
データを失うことなくraid1からraid10に移行する
状況は同じです。2つのディスクと2つの空きディスクのraid1アレイがあり、これをraid10ですべて収集する必要があり、データはそのままです。
新しいディスクの場合、すでにRAIDにあるパーティション構造と同じパーティション構造を作成する必要があります
sfdisk -d /dev/sdd --force | sfdisk /dev/sda --force sfdisk -d /dev/sdd --force | sfdisk /dev/sdb --force
On / dev / md4 is / boot
オン/ dev / md1は/
On / dev / md2 is swap
タッチ/ブートせず、raid1のままにします。データは/ dev / md1にのみ保存する必要があります(配列は/ dev / sda6、/ dev / sdb6、/ dev / sdc6、/ dev / sdd6で構成されます)。
データを保存するために、3台のディスクの劣化したraid10アレイを収集し、そこでraid1からデータを転送してから、raid1を分析し、raid10を完了します。
まず、raid1から1つのディスクを削除します。 raid10を作成するには少なくとも3つのディスクが必要です
mdadm /dev/md1 --fail /dev/sdc6 --remove /dev/sdc6
劣化したRAID10を/ dev / md3として収集し、マウントします。 再起動後も残るように、必ず新しいアレイに関するレコードを追加してください
mdadm --create /dev/md3 --level=10 --raid-devices=4 /dev/sda6 /dev/sdb6 /dev/sdc6 missing mke2fs -j /dev/md3 mdadm --examine --scan >> /etc/mdadm/mdadm.conf
配列に関するデータを書き込む前に誤って再起動した場合は、
mdadm --examine --scan >> /etc/mdadm/mdadm.conf mdadm --assemble /dev/md3
/ dev / md1から/ dev / md3へのデータ転送
mkdir /mnt/md3 mount -t ext3 /dev/md3 /mnt/md3 rsync -avHxl --progress --inplace --exclude 'lost+found' / /mnt/md3/ umount /mnt/md3
すべて、データはraid10に保存され、移行はほぼ完了しました。 次に、古い/ dev / md1の代わりに新しい/ dev / md3を使用するようにシステムに指示する必要があります。 これを行うには、/ etc / fstabおよび/ etc / mtabファイルを編集します。
ファイル/ etc / fstabで、UUID / dev / md1をUUID / dev / md3に置き換える必要があります
ls -l /dev/disk/by-uuid lrwxrwxrwx 1 root root 9 Nov 9 20:56 29683c02-5bd7-4805-8608-5815ba578b6c -> ../../md3
以下を取得します
ファイル/ etc / mtabでは、どこでも/ dev / md1の代わりに/ dev / md3に置き換えるだけです。
/dev/md3 / ext3 rw,errors=remount-ro 0 0
/ bootまたは/のデバイスが変更された場合、ブートローダーの設定/boot/grub/grub.cfgを編集してupdate-initramfsを実行する必要があります。そうしないとロードされません。
ファイル/boot/grub/grub.cfgで、実際には4d7faa7f-25b3-4a14-b644-682ffd52943b(/ dev / md1の古いUUID)が新しいUUID-29683c02-5bd7-4805-8608-5815ba578b6cに置き換えられますこれは検索セクションにとって重要です。
セクション内
### BEGIN /etc/grub.d/10_linux ###
ルート= / dev / md1をルート= / dev / md3に置き換えます
そしてその後は義務的です
update-initramfs -u
ルート/が新しい配列/ dev / md3になり、古いraid1への呼び出しがなくなるように再起動する必要があります。 現在raid1にあるドライブ(/ dev / sdd6)を追加して、raid10の作成を終了します。 ただし、まず停止してセクションをクリアする必要があります
mdadm -S /dev/md1 mdadm --zero-superblock /dev/sdd6
そして、ディスクをraid10アレイに追加して、アレイに関するデータを更新するだけです
mdadm /dev/md3 --add /dev/sdd6 mdadm --examine --scan >> /etc/mdadm/mdadm.conf
これで、raid1からraid10へのデータ損失なしの移行が完了しました。
PS結果として、私はraid1に戻りました。 私の場合、raid1からraid10への移行自体は印象的な結果をもたらさず、4つのディスクからのraid1の方がはるかに優れていました。