- Вопрос или проблема
- Обзор
- Файловая система
- Том
- Массив
- Измените размер PV, LV и файловой системы до максимума:
- Назначьте резервные диски в качестве резервных
- Ответ или решение
- Уменьшение RAID, удаляя диск: подробное руководство
- Важные замечания перед началом
- Шаги для уменьшения RAID
- Установите запасные диски
- Заключение
- SEO-оптимизация
Вопрос или проблема
У меня есть Synology NAS с 12 отсеками. Изначально мы решили выделить все 12 дисков для одного тома RAID-6, но теперь мы хотели бы уменьшить объем, чтобы использовать только 10 дисков и назначить два HDD в качестве резервных.
Мастер управления томами может легко увеличить объем, добавляя жесткие диски, но я не нашел способа уменьшить объем, удаляя жесткие диски. Как я могу это сделать, не переинициализируя всю систему?
Для этого я предполагаю, что в массиве 12 дисков, и каждый из них имеет объем 1 ТБ.
Это означает, что доступно 10 ТБ хранилища. Это, например, при условии, что вы не используете более 6 дисков (6 ТБ) хранилища, тогда не имеет значения, какого они размера.
Обязательный дисклеймер: ничто из этого может не поддерживаться Synology, поэтому я бы проверил с ними, может ли этот подход вызвать проблемы, заранее сделал резервное копирование и остановил любые службы Synology. Насколько мне известно, Synology использует стандартные md raid массивы, и они доступны, если диски перемещаются на стандартный сервер, который поддерживает md, так что проблем не должно быть.
Обзор
Последовательность выглядит так:
- Уменьшите размер файловой системы
- Уменьшите размер логического тома
- Уменьшите размер массива
- Верните размер файловой системы обратно
- Преобразуйте резервные диски в горячие резервные
Файловая система
Найдите основной раздел, используя df -h
, он должен выглядеть примерно так:
Файловая система Размер Использовано Доступно Использ. Подключена к
/dev/vg1/volume_1 10T 5T 5T 50% /volume1
Используйте эту команду, чтобы изменить размер до максимума, который необходим, и не больше:
umount /dev/vg1/volume_1
resize2fs -M /dev/vg1/volume_1
Теперь проверьте:
mount /dev/vg1/volume_1 /volume1
df -h
Файловая система Размер Использовано Доступно Использ. Подключена к
/dev/vg1/volume_1 5T 5T 0T 100% /volume1
Том
Чтобы уменьшить размер тома, используйте lvreduce (сделайте его немного больше на всякий случай):
umount /dev/vg1/volume_1
lvreduce -L 5.2T /dev/vg1/volume_1
Теперь, когда логический том был уменьшен, используйте pvresize для уменьшения размера физического тома:
pvresize --setphysicalvolumesize 5.3T /dev/md0
Если изменение размера не удастся, смотрите вот этот другой вопрос для перемещения частей данных, которые были выделены в конце физического тома к началу.
Теперь у нас есть объем 5.3T на массиве 10T, так что мы можем безопасно уменьшить размер массива на 2T.
Массив
Узнайте устройство md:
pvdisplay -C
PV VG Fmt Attr PSize PFree
/dev/md0 vg1 lvm2 a-- 5.3t 0.1t
Первый шаг – сказать mdadm уменьшить размер массива (с ростом):
mdadm --grow -n10 /dev/md0
mdadm: это изменение уменьшит размер массива.
используйте --grow --array-size сначала, чтобы обрезать массив.
например, mdadm --grow /dev/md0 --array-size 9683819520
Это говорит о том, что для того, чтобы разместить текущий массив на 10 дисках, нам нужно уменьшить размер массива.
mdadm --grow /dev/md0 --array-size 9683819520
Теперь он меньше, мы можем уменьшить количество дисков:
mdadm --grow -n10 /dev/md0 --backup-file /root/mdadm.md0.backup
Это займет долгое время и может быть отслежено здесь:
cat /proc/mdstat
Персоналии: [raid6] [raid5] [raid4]
md4 : активный raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[1] sdj4[1]
[>....................] форма = 1.8% (9186496/484190976)
завершить=821.3мин скорость=9638K/с [UUUUUUUUUU__]
Но нам не нужно ждать.
Измените размер PV, LV и файловой системы до максимума:
pvresize /dev/md0
lvextend -l 100%FREE /dev/vg1/volume_1
e2fsck -f /dev/vg1/volume_1
resize2fs /dev/vg1/volume_1
Назначьте резервные диски в качестве резервных
Здесь нечего делать, любые резервные диски в массиве автоматически являются резервными. Как только ваше изменение формы завершится, проверьте статус:
cat /proc/mdstat
Персоналии: [raid6] [raid5] [raid4]
md4 : активный raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[S] sdj4[S]
Расширяя ответ @Paul – прошло 10 лет, и хотя основной принцип все еще работает, некоторые вещи изменились. Вот проблемы, с которыми я столкнулся, и как я с ними справился.
Во-первых, я не смог размонтировать /volume1
из-за того, что некоторые процессы на системе имели открытые дескрипторы файлов. В моем случае это были synologan
и postgres
, которые я смог остановить с помощью:
systemctl stop synologand
systemctl stop pgsql
Если это вам не помогает, вам придется собрать lsof из исходников, что может быть довольно сложной задачей, но любой статически скомпилированный x86_64 ELF бинарный файл должен работать на DSM. Как только у вас это будет, вы можете выполнить следующую команду, чтобы найти процессы с открытыми дескрипторами файлов:
./lsof | fgrep /volume1/
Следующее, устройство, подключенное к /volume1/
, у меня было /dev/mapper/cachedev_0
, которое каким-то образом поддерживается /dev/mapper/vg1-volume_1
, но эти два не взаимозаменяемы. resize2fs
необходимо выполнять на cachedev
, в то время как lvreduce
(или lvm lvreduce
теперь) необходимо выполнять на vg-volume
.
Некоторые важные примечания:
- Запуск
lvm lvreduce
наvg1-volume_1
не синхронизировал уменьшенный размер сcachedev_0
, поэтому после того, как этот шаг был выполнен, я перезагрузил свой NAS, чтобы попытаться предотвратить возможные повреждения данных посредством доступов кcachedev_0
. Перезагрузка синхронизировала размер (но очевидно, что я должен был снова выполнить шагunmount
). - Я настойчиво советую получить копию
screen
где-то и запускатьresize2fs
внутри этого. Потому что это может занять действительно много времени (более 24 часов для меня), и если ваша SSH-сессия разорвется в какой-то момент, процесс будет убит, и ваша файловая система может оказаться в поврежденном состоянии. - Я также советую запускать
resize2fs
с-p
, чтобы он уведомлял вас о текущем прогрессе, потому что в противном случае нет способа узнать, займет ли это еще минуту или целую неделю. - Если вы не можете получить
screen
или уже начали команду и беспокоитесь о том, что ее могут убить, вы можете отсоединить ее от вашей SSH-сессии, нажав ctrl-Z и запустивbg
, затемdisown -h
. В этот момент вы больше не сможете получить ее вывод или код завершения, но, по крайней мере, она не будет убита, если ваша SSH-сессия разорвется. Вы можете проверить, существует ли процесс, с помощьюps
.
В какой-то момент после написания поста Пола, но до 2020 года, Synology применил патч к своей ветке mdadm
, который явно отказывается уменьшать количество дисков в пуле, который не является RAID-0 или RAID-1. Я не знаю, почему они это сделали, поскольку драйвер ядра поддерживает это вполне нормально, и я смог уменьшить пул RAID-6 с 8 до 5 дисков, удалив этот патч, но это уже совершенно другая проблема, которую я описал в этом посте.
Ответ или решение
Уменьшение RAID, удаляя диск: подробное руководство
Если у вас есть Synology NAS с 12 отсеков для жестких дисков и вы хотите уменьшить RAID-6, чтобы использовать только 10 дисков, выделив 2 HDD в качестве запасных, данный процесс потребует тщательной подготовки и выполнения. Ниже представлено пошаговое руководство.
Важные замечания перед началом
- Резервное копирование данных: Независимо от проделанных операций, всегда создавайте резервные копии важных данных.
- Проверка совместимости: Убедитесь, что ваша версия Synology поддерживает уменьшение RAID. В более поздних версиях ПО Synology могут быть ограничения на случайные изменения конфигурации RAID.
- Остановка всех сервисов: Перед выполнением операций желательно остановить все активные сервисы на NAS, чтобы предотвратить возможные потеря данных.
Шаги для уменьшения RAID
1. Уменьшение размера файловой системы
Для начала необходимо уменьшить размер файловой системы, которая будет использована RAID. Используйте команду df -h
, чтобы узнать, какая файловая система используется. Далее выполните следующие шаги:
umount /dev/vg1/volume_1
resize2fs -M /dev/vg1/volume_1
Проверьте результат командой df -h
, чтобы удостовериться, что реморазмер был уменьшен.
2. Уменьшение логического тома
После уменьшения файловой системы необходимо уменьшить размер логического тома:
umount /dev/vg1/volume_1
lvreduce -L 5.2T /dev/vg1/volume_1
Здесь размер стоит указать немного больше, чтобы учесть возможные ошибки.
3. Уменьшение размера физического тома
Далее уменьшите размер физического тома, чтобы отражать изменения в размере логического тома:
pvresize --setphysicalvolumesize 5.3T /dev/md0
Если команда не сработает, возможно, потребуется переместить данные на физическом уровне, что описано в дополнительных источниках.
4. Уменьшение массива RAID
На этом этапе можно перейти к уменьшению самого массива RAID. Выполните следующие команды по снижению количества дисков:
mdadm --grow --array-size 9683819520 /dev/md0
mdadm --grow -n10 /dev/md0 --backup-file /root/mdadm.md0.backup
Следите за процессом изменения состояния массива командой:
cat /proc/mdstat
5. Расширение PV, LV и файловой системы до максимума
После того, как уменьшение завершено, можно вернуть размер обратно к максимальному значению:
pvresize /dev/md0
lvextend -l 100%FREE /dev/vg1/volume_1
e2fsck -f /dev/vg1/volume_1
resize2fs /dev/vg1/volume_1
Установите запасные диски
Запасные диски в RAID обычно автоматически определяются как спаренные. Вам не нужно выполнять дополнительные действия для их настройки.
Заключение
Уменьшение объема RAID требует аккуратного подхода и последовательного выполнения всех необходимых шагов. Важно помнить о резервном копировании и проверке каждого процесса на наличие ошибок. Если возникнут проблемы с управлением устройствами, стоит обратиться за поддержкой к службе поддержки Synology. Это поможет минимизировать риски и защитить ваши данные.
SEO-оптимизация
Ключевые слова: уменьшение RAID, Synology NAS, RAID-6, управление томами, шпаргалка по RAID, провайдер хранения, резервное копирование данных.