Должен ли дескриптор файла быть закрыт после использования?

У вас есть два диска по 3 ТБ, на которых хранятся данные по 6 ТБ. Вы хотите установить один новый диск емкостью 3 ТБ.

Это позволит вам преобразовать три диска по 3 ТБ в массив RAID5, в котором хранятся данные по 6 ТБ. Однако этот процесс довольно сложен, и вероятность потери данных где-то на маршруте довольно велика.

Шаги для выполнения требования

Объявим диски как sda (содержит данные), sdb (содержит данные), sdc (новый) .

  1. Если возможно, сделайте резервную копию всех ваших данных, даже если вам нужно одолжить диск у друга на несколько дней
  2. Создайте массив RAID1 на новом диске sdc . У него должно быть два элемента, один из которых отсутствует.
  3. Создайте файловую систему на этом массиве RAID1
  4. Скопируйте данные из sdb в новый массив RAID1
  5. Убедитесь, что вы правильно скопировали данные
  6. Добавьте sdb в массив RAID1
  7. Дождитесь завершения синхронизации
  8. Перезагрузка
  9. Увеличьте массив RAID1 до RAID5. Он должен состоять из трех элементов, один из которых отсутствует. для этого вам потребуется 128 КБ временного пространства на дополнительном диске. Вы можете использовать для этого USB-джойстик. Не используйте RAM-диск.
  10. Скопируйте данные из sda в новый массив RAID5
  11. Убедитесь, что вы правильно скопировали данные
  12. Добавьте sda в массив RAID5
  13. Перезагрузите

Рабочий пример

Вот рабочий пример с использованием трех файлов в качестве образов дисков.

# 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
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


# 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

Вы действительно должны убедиться, что понимаете рабочий пример, ПРЕЖДЕ чем касаться живых данных на ваших дисках.Излишне говорить, что это ваша ответственность, и я действительно рекомендую сделать резервную копию, прежде чем менять действующую систему.

2
05.10.2017, 00:12
0 ответов

Теги

Похожие вопросы