Первоначально я создал программный RAID с использованием контроллера, который может адресовать только 2 ТБ на диск. Диски 3 ТБ. Он работал нормально, но использовал только первые 2 ТБ каждого диска.
Теперь я изменил контроллер, чтобы увидеть полный 3 ТБ. Поэтому я бы тоже хотел /dev/md0
использовать последний 1 ТБ.
Я пытался:
# mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 2147479552K
Но, как вы можете видеть, он видит только 2 ТБ. Если я попытаюсь заставить его выше:
# mdadm --grow /dev/md0 --size=2147483648
mdadm: Cannot set device size for /dev/md0: No space left on device
Так что каким-то образом система может видеть диски размером 3 ТБ (дюйма /proc/partitions
), но RAID не может видеть их как 3 ТБ.
подробности 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. Побежал
mdadm -A --scan --force
, что привело к подключению RAID и его восстановлению.
источник
fdisk -l /dev/sdd
показывает? Какую ОС вы используете, что такое mdadm-версия?Ответы:
Я обошел вокруг / sys и стал намного ближе к ответу.
Это согласуется с тем, что мы видели раньше. Но это:
Кажется, объясняет, почему RAID видит неправильный размер: большинство дисков отображается как 2 ТБ, в то время как замененные 2 отображаются как 3 ТБ. Все диски одной модели, поэтому давайте посмотрим, сможем ли мы изменить воспринимаемый размер:
Вуаля. Component_size все еще маленький, хотя:
Может быть, это можно изменить с помощью mdadm:
К сожалению, это блокируется,
mdadm
и последующий доступ к / dev / md0 блокируется. И так же доступ к component_size:Отстой. Но хорошая часть в том, что в системном журнале говорится:
Файловая система в / dev / md0 все еще работала.
После перезагрузки мне пришлось снова выполнить «mdadm --grow / dev / md0 --size = max». Затем дождитесь
resync
завершения. Снова доступ к / dev / md0 был заблокирован. Итак, еще одна перезагрузка, затем,xfs_growfs /dev/md0
а затем изменение размера было завершено.источник
Я думаю, что при создании размер устройства был записан где-то в метаданных. Смена контроллера не меняет метаданные.
Извлеките запасную часть из md, затем повторно добавьте ее в набор RAID как новый диск. Вам, вероятно, придется удалить метаданные (проверьте страницу руководства для --zero-superblock или сотрите весь диск). Если это работает для одного диска, повторите процедуру для всех дисков оставшихся. Тогда, наконец, сделайте --grow.
Не удаляйте дополнительные диски до окончания синхронизации !!
источник
fail
диск, затемremove
это, затемzero-superblock
это, чтобы удалить метаданные. Поскольку ваш RAID-массив используется, вы можете добавить его как запасной, что означает, что он не будет синхронизироваться до тех пор, пока другой диск не выйдет из строя (это нормальное поведение), но он будет работать только для одного диска ИЛИ для вас,add
и для этого потребуется синхронизация. Я знаю, что это занимает вечность. Или вы принимаете тот факт, что вы не можете адресовать все доступное хранилище. Одно из преимуществ использования таблицы разделов, которой вы не делали. Не использовать таблицу разделов - это неплохо, но в этом конкретном случае вам бы это помогло.