現在、2 TBの3 TB HDDがあり、1つは常にほぼフルで、もう1つは約200 GBが無料です。追加の3TBドライブを購入してRAID 5アレイをセットアップしたいのですが、既存のデータが失われることを心配しています。
_mdadm --create --verbose /dev/md0 --level=5 --raid-devices=2 /dev/sdb2 /dev/sdc2 --spare-devices=1 /dev/sdd2
_および_/dev/sdb2
_が既存のドライブ(データがある)である_/dev/sdc2
_に類似したコマンドを使用して、mdadm
がアレイの作成に使用されることを発見しました_/dev/sdd2
_は、データがない新しい3TBドライブです。これにより、_/dev/sdb2
_および_/dev/sdc2
_のデータが失われますか?
私の他のアイデアは、スペアデバイスなしで2x3TB RAID 5アレイを作成することでした。このアレイでは、アレイ内のドライブの1つが空で、もう1つにデータがあります。次に、ファイルを既存のドライブから新しい(6TB)アレイにコピーし、冗長になったドライブをワイプして、アレイのスペアドライブとして追加します。私はこれがうまくいくとは思わないが?
上記のオプションのいずれも機能しない場合、すでにデータがあり、1つが空の2つのドライブでRAID 5アレイを作成する別の方法はありますか?一度に2つの新しい空のドライブを追加した場合、新しいオプションが開きますか?
mdadm
バージョン3.3でUbuntuServer16.04.2を使用しています。
6TBのデータを保存する2つの3TBディスクがあります。新しい3TBディスクを1つインストールします。
これにより、3 TBのディスクを6 TBのデータを格納するRAID5アレイに変換できます。ただし、プロセスはかなり面倒であり、ルートのどこかでデータを失う可能性はかなり大きいです。
要件を達成するための手順
ディスクをsda
(データを含む)、sdb
(データを含む)、sdc
(新規)として宣言してみましょう。
sdc
にRAID1アレイを作成します。 2つのメンバーがあり、そのうちの1つが欠落しているsdb
から新しいRAID1アレイにデータをコピーしますsdb
を追加しますsda
から新しいRAID5アレイにデータをコピーしますsda
を追加します実施例
これは、3つのファイルをディスクイメージとして使用した実例です。
# Prepare the demonstration
#
dd if=/dev/zero bs=1M count=100 of=sda.img
dd if=/dev/zero bs=1M count=100 of=sdb.img
( echo n; echo p; echo 1; echo; echo; echo w ) | fdisk sda.img # One primary partition
( echo n; echo p; echo 1; echo; echo; echo w ) | fdisk sdb.img # One primary partition
losetup --show --find --partscan sda.img
losetup --show --find --partscan sdb.img
# At this point we have /dev/loop0 representing the first disk sda, with /dev/loop0p1
# equivalent to a disk partition sda1. Also /dev/loop1 representing the second disk.
mkfs -t ext4 -L sda /dev/loop0p1
mkfs -t ext4 -L sdb /dev/loop1p1
mkdir -p /mnt/sda1 /mnt/sdb1
mount /dev/loop0p1 /mnt/sda1
mount /dev/loop1p1 /mnt/sdb1
cp -a /usr/local/man/. /mnt/sda1/u.l.man/
mkdir /mnt/sdb1/u.l.etc
cp -a /usr/local/bin/. /mnt/sdb1/u.l.bin/
df -h | grep mnt
umount /mnt/sda1
umount /mnt/sdb1
# Create the third disk
#
dd if=/dev/zero bs=1M count=100 of=sdc.img
( echo n; echo p; echo 1; echo; echo; echo w ) | fdisk sdc.img # One primary partition
losetup --show --find --partscan sdc.img
# Create the RAID1 array and its filesystem
#
mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=default /dev/loop2p1 missing
mkfs -t ext4 -L md1 /dev/md1
mkdir -p /mnt/md1
# Now /dev/loop2 is equivalent to third disk sdc, and /dev/loop2p1 representing sdc1
# Copy the data from sdb to md1
#
mount /dev/loop1p1 /mnt/sdb1
mount /dev/md1 /mnt/md1
cp -a /mnt/sdb1/. /mnt/md1/
umount /mnt/sdb1
umount /mnt/md1
# Complete the RAID1 array
#
mdadm --manage /dev/md1 --add /dev/loop1p1
# Grow the RAID1 array to RAID5
#
mdadm --grow /dev/md1 --level=5 --raid-devices=3 --backup-file=/root/workarea.dat --force
e2fsck -f /dev/md1
resize2fs /dev/md1
# Copy the data from sda to md1
#
mount /dev/loop0p1 /mnt/sda1
mount /dev/md1 /mnt/md1
cp -a /mnt/sda1/. /mnt/md1/
umount /mnt/sda1
umount /mnt/md1
# Add the remaning disk to the RAID5 array
#
mdadm --manage /dev/md1 --add /dev/loop0p1
# All done
#
mdadm --stop /dev/md1
losetup -d /dev/loop0
losetup -d /dev/loop1
losetup -d /dev/loop2
rm sda.img sdb.img sdc.img
ディスク上のライブデータに触れる前に、実際に動作する例を確実に理解する必要があります。言うまでもなく、それはあなたの責任であり、ライブシステムを変更する前にバックアップすることをお勧めします。