Увеличение / изменение размера RAID при обновлении видимого размера дисков

Я изначально создавал программный RAID, используя контроллер, который мог адресовать только 2 ТБ на диск. Диски – 3 ТБ. Он работал нормально, но использовал только первые 2 ТБ каждого диска.

Теперь я изменил контроллер, чтобы увидеть полный 3TB. Поэтому я хотел бы /dev/md0 использовать последний 1 ТБ.

Я пытался:

 # mdadm --grow /dev/md0 --size=max mdadm: component size of /dev/md0 has been set to 2147479552K 

Но, как вы видите, он видит только 2TB. Если я попытаюсь заставить его выше:

 # mdadm --grow /dev/md0 --size=2147483648 mdadm: Cannot set device size for /dev/md0: No space left on device 

Таким образом, система может видеть, что диски – 3TB (в /proc/partitions ), но RAID не может видеть их как 3TB.

Подробности mdadm:

 # mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Mar 2 15:14:46 2012 Raid Level : raid6 Array Size : 38654631936 (36863.93 GiB 39582.34 GB) Used Dev Size : 2147479552 (2048.00 GiB 2199.02 GB) Raid Devices : 20 Total Devices : 21 Persistence : Superblock is persistent Update Time : Wed Apr 25 19:47:09 2012 State : active Active Devices : 20 Working Devices : 21 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 4096K Name : node5:1 UUID : 8603c3df:b740ba22:8c9c82fd:a18b3133 Events : 845 Number Major Minor RaidDevice State 20 65 32 0 active sync /dev/sds 1 65 64 1 active sync /dev/sdu 2 65 80 2 active sync /dev/sdv 3 65 96 3 active sync /dev/sdw 4 8 192 4 active sync /dev/sdm 5 8 32 5 active sync /dev/sdc 6 8 48 6 active sync /dev/sdd 7 8 64 7 active sync /dev/sde 8 8 80 8 active sync /dev/sdf 9 8 96 9 active sync /dev/sdg 10 8 112 10 active sync /dev/sdh 11 8 128 11 active sync /dev/sdi 12 8 144 12 active sync /dev/sdj 13 8 160 13 active sync /dev/sdk 14 8 176 14 active sync /dev/sdl 15 8 208 15 active sync /dev/sdn 16 8 224 16 active sync /dev/sdo 17 8 240 17 active sync /dev/sdp 18 65 0 18 active sync /dev/sdq 19 65 16 19 active sync /dev/sdr 21 65 48 - spare /dev/sdt 

Размеры дисков:

 # cat /proc/partitions |grep 2930266584 8 48 2930266584 sdd 8 32 2930266584 sdc 8 112 2930266584 sdh 8 96 2930266584 sdg 8 80 2930266584 sdf 8 128 2930266584 sdi 8 176 2930266584 sdl 8 64 2930266584 sde 65 32 2930266584 sds 8 192 2930266584 sdm 8 144 2930266584 sdj 65 80 2930266584 sdv 8 224 2930266584 sdo 8 208 2930266584 sdn 8 160 2930266584 sdk 8 240 2930266584 sdp 65 0 2930266584 sdq 65 64 2930266584 sdu 65 16 2930266584 sdr 65 48 2930266584 sdt 65 96 2930266584 sdw 

Редактировать:

 # mdadm --version mdadm - v3.1.4 - 31st August 2010 # uname -a Linux lemaitre 3.2.0-0.bpo.1-amd64 #1 SMP Sat Feb 11 08:41:32 UTC 2012 x86_64 GNU/Linux 

RAID6 использует полные диски (то есть без разделов)

Сегодня утром система разбилась. После перезагрузки система не нашла RAID (что было ужасно). Все диски появились как запасные части (S):

 cat /proc/mdstat Personalities : md0 : inactive sdr[20](S) sds[21](S) sdq[18](S) sdp[17](S) sdo[16](S) sdn[15](S) sdl[14](S) sdk[13](S) sdj[12](S) sdi[11](S) sdh[10](S) sdg[9](S) sdf[8](S) sde[7](S) sdd[6](S) sdc[5](S) sdm[4](S) sdv[3](S) sdu[2](S) sdt[1](S) 42949652460 blocks super 1.2 

Даже здесь ясно, что mdadm не нашел размер 3 ТБ.

Я запускал mdadm --stop /dev/md0 . Удалена запись в файле /etc/mdadm/mdadm.conf. Ran mdadm -A --scan --force , который заставил RAID mdadm -A --scan --force к сети и перестроить.

  • обнаружение и исправление бит-бит с помощью mdadm
  • Установить Debian Squeeze RAID 5?
  • Использование более крупного диска в настройке RAID 1
  • Не удалось установить рейд на моем NAS, пытаясь спасти данные, как мне следует продолжить?
  • Перегородка LVM не установлена
  • Требует ли CentOS 5.9 Grub для работы на аппаратном RAID?
  • Восстановление массива RAID5
  • Обновление Debian завершилось с ошибкой «Неверная версия Raid»
  • 2 Solutions collect form web for “Увеличение / изменение размера RAID при обновлении видимого размера дисков”

    Я ткнул / sys и стал намного ближе к ответу.

     # cd /sys/block/md0/md # cat component_size 2147479552 

    Это согласуется с тем, что мы видели раньше. Но это:

     # grep . dev-sd*/size dev-sdc/size:2147482623 dev-sdd/size:2147482623 dev-sde/size:2147482623 dev-sdf/size:2930265560 dev-sdg/size:2147482623 dev-sdh/size:2147482623 dev-sdi/size:2147482623 dev-sdj/size:2147482623 dev-sdk/size:2147482623 dev-sdl/size:2147483648 dev-sdm/size:2147482623 dev-sdn/size:2147482623 dev-sdo/size:2147482623 dev-sdp/size:2147482623 dev-sdq/size:2147482623 dev-sdr/size:2147482623 dev-sds/size:2147482623 dev-sdt/size:2147482623 dev-sdu/size:2147482623 dev-sdv/size:2147482623 dev-sdw/size:2930265560 

    похоже, объясняет, почему RAID видит неправильный размер: большая часть дисков отображается как 2 ТБ, а 2, которые были заменены, отображаются как 3 ТБ. Все диски – одна и та же модель, поэтому давайте посмотрим, можем ли мы изменить воспринимаемый размер:

     # parallel echo 2930265560 \> ::: dev-sd*/size # grep . dev-sd*/size dev-sdc/size:2930265560 dev-sdd/size:2930265560 dev-sde/size:2930265560 dev-sdf/size:2930265560 dev-sdg/size:2930265560 dev-sdh/size:2930265560 dev-sdi/size:2930265560 dev-sdj/size:2930265560 dev-sdk/size:2930265560 dev-sdl/size:2930265560 dev-sdm/size:2930265560 dev-sdn/size:2930265560 dev-sdo/size:2930265560 dev-sdp/size:2930265560 dev-sdq/size:2930265560 dev-sdr/size:2930265560 dev-sds/size:2930265560 dev-sdt/size:2930265560 dev-sdu/size:2930265560 dev-sdv/size:2930265560 dev-sdw/size:2930265560 

    Вуаля. Component_size все еще невелик:

     # cat component_size 2147479552 

    Возможно, это может быть изменено mdadm:

     # mdadm --grow /dev/md0 --size=max 

    Это, к сожалению, блокирует mdadm и последующий доступ к / dev / md0 блокируется. Таким образом, доступ к компоненту_размер:

     # cat component_size # This blocks 

    Отстой. Но хорошая часть заключается в том, что в syslog говорится:

     Apr 27 20:45:50 server kernel: [124731.725019] md0: detected capacity change from 39582343102464 to 54010589478912 

    Файловая система на / dev / md0 все еще работает.

    После перезагрузки мне пришлось снова «mdadm -grow / dev / md0 –size = max». Затем дождитесь завершения resync . Снова доступ к / dev / md0 был заблокирован. Итак, еще одна перезагрузка, за которой следует xfs_growfs /dev/md0 а затем изменение размера было завершено.

    Я думаю, что во время создания размер устройства был зарегистрирован где-то в метаданных. Изменение контроллера не изменяет метаданные.

    Удалите резервную копию из md, затем снова добавьте его в RAID-массив в качестве нового диска. Вероятно, вам придется удалить метаданные (проверьте man-страницу для -zero-superblock или вытереть весь диск). Если это работает на одном диске, повторите процедуру для всех остальных дисков. Затем, наконец, сделайте -grow.

    Не удаляйте дополнительные диски до завершения синхронизации!

    Interesting Posts

    Могут ли быть неканонизированные формы путей файловой системы значительными? (например, «foo // bar», «foo /./ bar» и «foo /../ bar»)

    Как решить, что mv перемещается в каталог, а не заменяет каталог?

    / bin / sh: определение функции импорта ошибок для `some-function '

    Поиск списка модулей, которые используются во время загрузки

    Ошибка трассировки python3

    как мы можем использовать несколько переменных в одиночном для цикла в сценарии оболочки?

    Прокси (nginx) показывает ошибку «Плохой шлюз»

    Параллель GNU: событие не найдено (! ~)

    Отчет нескольких IP-адресов для трекера rtorrent

    что означают числа в команде show ip rule show

    Bizzarre поведение «эхо !!» под интерактивным Bash. Это особенность?

    Каков наиболее эффективный способ добавления миллисекунд к этому коду?

    ifconfig показывает IP из диапазона lan

    Как добавить цвет фона с непрямоугольной формой в строку подсказки (PS1)?

    Системные вызовы Linux в C на OSX

    Linux и Unix - лучшая ОС в мире.