Mdadm raid 10 как узнать какие диски в зеркале
Вопрос 1 - Прежде чем ответить «просто нужно меньше диска», послушайте меня быстро. Мой 3TB WD Reds имеет размер 3001 ГБ. Допустим, я настроил зеркало через mdadm для sdb1 и sdc1, которые охватывают 100% диска. Но вдруг один из приводов выходит из строя. Замена 3 ТБ, весом 3000 ГБ. Что происходит, когда я вставляю диск меньше, чем тот, который в данный момент существует в массиве? Я знаю, что с новым массивом, использующим 3000 против 3001, он будет составлять массив 3000. Но, как я уже сказал, как насчет текущего массива @ 3001, и я добавляю меньший диск? Перестраивается ли он во время перестройки до размера 3000 ГБ?
Вопрос 2 - Если я не могу добавить 3000 ГБ в массив с существующими 3001 ГБ, и он просто уменьшится до 3000 . могу ли я немного уменьшить размер 3001?
Вопрос 3 - Или лучшая идея. Что, если я уменьшу размер своего 3 ТБ диска до 2999 ГБ. Таким образом, независимо от того, является ли диск коротким на 1 МБ, 1 байт, 10 КБ, не имеет значения, он всегда будет брать «меньший» диск с 2999 ГБ.
Я наткнулся на этот ответ по ошибке, но если кому-то интересно, вот ответ, подтвержденный экспериментами.
Бонусный вопрос: могу ли я создать md(4) RAID-массив из блочных устройств неравного размера? Да, но массив RAID будет иметь размер наименьшего блочного устройства (плюс некоторые накладные расходы на его ведение домашнего хозяйства). Если размеры устройств не находятся в пределах 1% друг от друга, вы получите предупреждение.
Вопрос 1: я могу добавить к существующему md(4) массиву RAID устройство меньше, чем самый маленький текущий член? Нет извини. mdadm будет отказываться делать это для защиты ваших данных.
Вопрос 2: можете ли вы изменить размер существующего массива MD? Да (читайте mdadm manpge!), Но это может не стоить усилий. Вам придется выполнить резервное копирование всего, затем изменить размер содержимого устройства RAID, а затем изменить размер самого устройства - все это весьма подвержено ошибкам, просчетам и другим вещам, которые будут стоить вам ваших данных (болезненный опыт разговора) ,
Это не стоит риска и усилий. Если у вас есть новый чистый диск, вот как его изменить, а также сохранить от одной до двух копий всех ваших данных в неизменном виде (при условии, что у вас 2-дисковый RAID1):
- Создайте на нем новый md(4) массив (без одного диска).
- Воссоздайте структуру содержимого массива (Crypto, LVM, таблицы разделов, любую их комбинацию, что бы ни плавало на вашей лодке).
- Скопируйте данные с существующего диска на новый.
- Перезагрузитесь, используя новый диск.
- Протрите таблицу разделов старого диска (или обнулите md(4) суперблок). При необходимости создайте необходимые разделы, соответствующие схеме на новом диске.
- Добавьте старый диск в новый массив.
- Подождите, пока члены массива синхронизируются. Выпей кофе. Прилетайте в Латинскую Америку и выбирайте собственные кофейные зерна. :) (Если вы живете в Латинской Америке, летите в Африку).
Примечание: да, это та же самая техника 0xC0000022L, которая описана в его ответе.
Вопрос 3. Что делать, если диск 1G короткий? :) Не беспокойся об этом. Скорее всего, ваш запасной диск будет больше. На самом деле, со стратегией , как выше он платит , чтобы получить более дешевые большие диски , когда один выходит из строя (или для более дешевой модернизации). Вы можете получить прогрессивное обновление.
И наконец: добавление меньшего устройства к работающему массиву
Во-первых, давайте создадим массив RAID1 только с одним из 100M дисков. Массив будет ухудшен, но нам все равно. Мы просто хотим запустить массив. В missing ключевых слов является заполнителем , который говорит : «Я не устройство для вас все же, начать он массив , и теперь я добавлю один позже.
Опять же, давайте проверим размер:
Конечно же, это 128K меньше 102400 блоков. Добавление меньшего диска:
Boom! Это не позволит нам, и ошибка очень очевидна.
Существует несколько способов настройки mdX устройств. Метод должен был бы использовать gdisk (или, sgdisk если вы предпочитаете версию только для командной строки), разделить это как GPT. Если вы хотите загрузиться из массива, создайте «Раздел загрузки BIOS», введите код ef02 . Это необходимо только в том случае, если вы хотите загрузиться с этого массива, в противном случае это не нужно. Затем создайте раздел такого же размера или меньше, чем самый маленький диск, который будет добавлен в массив. И последнее, но не менее важное: скопируйте данные GPT на другой диск (экспертное меню gdisk , используйте x , а затем u укажите целевое устройство). Это разрушительный процесс.
Должна быть возможность - если файловая система допускает это - изменить размер существующего раздела на что-то меньшее, а затем использовать тот же метод для копирования данных GPT. Тем не менее, это приводит вас к некоторой путанице. Потому что теперь у вас есть два диска, но все еще нет mdX устройства. Один из них должен быть подготовлен как по mdX разделам (которые я подразумевал выше), так и по дискам), а затем данные должны быть перемещены с существующего диска на этот.
- большой диск ( /dev/sda ) содержит данные, данные меньше 3001 ГБ, разделы не
- меньший диск /dev/sdb добавляется в систему
- вы раздел /dev/sdb с gdisk
- вы создаете массив из каждого соответствующего раздела ( mdadm -C /dev/md2 -l 1 -n 1 /dev/sdb2 )
- вы создаете файловые системы на новых массивах
- вы копируете все данные, проверяя, что ваша система будет готова к загрузке с GPT-диска, и позволяя GRUB2 понять последствия (см. ниже)
- скопировать данные GPT разделами более от /dev/sdb до /dev/sda
- вы добавляете «сырые» разделы из /dev/sda существующих массивов
- Вы ждете, /proc/mdstat чтобы показать вам, что синхронизация завершена
Если вы выполнили все шаги, теперь вы сможете загружаться в новую систему с массивов mdX. Однако, на всякий случай, держите под рукой спасательный CD или опцию загрузки PXE.
GRUB2 не сможет распознать установку от руки. Так что вам нужно немного "магии". Вот одна строка:
Или давайте будем более многословны:
Это создает (или перезаписывает) значение по умолчанию, /boot/grub/devicemap которое сообщает GRUB2, где найти каждый соответствующий диск. Результатом будет что-то вроде этого списка:
Если вы используете устаревшую GRUB, вам также необходимо создать «Загрузочный раздел BIOS» с метаданными версии 0.9, mdadm -e 0 . и процесс будет отличаться. Я этого еще не сделал.
Спасибо за ответ. Этот массив на самом деле просто для хранения на моем сервере, поэтому он не будет обрабатывать загрузку или что-то подобное. Я просто беспокоился о микшировании и подборе жестких дисков разных размеров позже в игре. Я имею в виду, что произойдет, если у меня sdb1 @ 3001 ГБ и sdc1 @ 3001 ГБ, но sdc1 умирает и замена составляет 3000 ГБ? Уменьшает ли sdb1 до 3000? Массив @ / dev / md0 сокращается до 3000 ГБ? Чем больше я думаю об этом, тем больше смысла оставлять в конце места, как, например, в примере 2999 выше - таким образом, это должно устранить эту головную боль. Если я что-то упустил?
На самом деле, если предположить, что уровень RAID 1 здесь, mdadm в первую очередь отказался бы построить массив, если он несовместим. В RAID 5 вам понадобится больше дисков, а в RAID 0 вас это не волнует, поэтому я предположил RAID 1. Так что да, имеет смысл оставить место.
Я не хочу бить лошадь, но я немного не уверен насчет «несовместимого» заявления, которое вы сделали. Что было бы несовместимо? В моем примере вы ссылались на разницу в размерах 3000 ГБ против 3001 ГБ? В любом случае, я просто запустил свой массив с каждым разделом 2999 ГБ, хотя каждый диск был 3001 ГБ. Это должно просто устранить любые головные боли, которые могут возникнуть в случае, если я не смогу получить идентичные сменные диски. Ценю ваше понимание!
@JaSauders: Я думаю, что один GiB более или менее был бы несовместим. Но, честно говоря, я не знаю, где предел. Я знаю, однако, что небольшие изменения в размере будут терпимы. Для всего остального вы должны мигрировать так, как я описал.
Приветствую!
Сразу скажу - по этим интернетам копался, ответа не нашел (может не прямолинейность ручных манипуляторов у меня обострилась).
Вопрос вот в чем. Есть, вернее был программный RAID 10, у него вышли из строя 2 диска из 4 (Причина кроется в SMART, но не в этом вопрос) Так вот как узнать выпавшие жесткие диски какое положение в данном RAID занимали?
В моем случае все диски Device role: _active_ device. при этом
sda1 Array State : AA..
sdb1 Array State : AA..
sdc1 Array State : AAA.
sdd1 Array State : AAAA
7-м чувством чую mdadm --assemble --force ни чем хорошим не закончится. или не обосновано?
В моем случае все диски Device role: _active_ device. при этом
sda1 Array State : AA..
sdb1 Array State : AA..
sdc1 Array State : AAA.
sdd1 Array State : AAAA
7-м чувством чую mdadm --assemble --force ни чем хорошим не закончится. или не обосновано?
Скажем так, я собирал таким образом RAID5 из четырех дисков, в котором 2 диска временно отключились из-за неисправности прошивки дисков (судя по всему). Судя по логам, mdadm --assemble --force просто выбирает из двух убитых дисков нииболее живой (в котором лог событий имеет более поздние записи), перезаписывает на нем лог, а второй диск считает потерянным и добавленным, и по нему начинает resync.
ОТДЕЛЬНЫЕ ЛУЧИ ПОНОСА КОМПАНИИ SEAGATE - у меня были почти такие же диски, как у вас, только емкость другая - ST2000DL003-9VT166
Но у вас, конечно же, может не собраться, а наоборот, отвалиться окончательно
Вот если пересоздавать RAID0 из непарных дисков RAID10, то, если ошибемся с номерами дисков, точно останемся без данных )))
В ней не написано, как именно наботает mdadm, когда мониторит (т.е. что при этом происходит).
1) Правильно ли я понимаю, что один раз за --delay секунд монитор читает лог и если в логе есть ошибки - отсылает письмо по почте?
2) как запустить сверку контрольных сумм по всем дискам? (В статье это не написано). А то вдруг пара дисков тихо протухнет, а я об этом не узнаю, пока прочитать не соберусь.
2) как запустить сверку контрольных сумм по всем дискам? (В статье это не написано).
Вообще-то в нормальных дистрибутивах это делается автоматически по крону ;)
А вообще-то в случае деградации рейда придёт письмо на почту
А для ответа на первый вопрос достаточно почитать man mdadm ;)
У меня нет такого файла, почему?
Но я все равно хочу знать об отвале диска, проверяя периодически,
а не тогда, когда надо будет использовать.
Знание заранее о возникновении ошибки (например от статического электричества) позволит заменить компьютер и восстановиться из бекапов тоже заранее, а не носиться как угорелому когда данные реально понадобятся.
Ну ты юморист. Перечитай ещё раз свой же топик, потом какой-нибудь ликбез по raid'ам
Контрольные суммы там кстати есть, только другие - по одной на каждый сектор и поддерживает их не mdadm, а аппаратура диска, так что проверить можно было бы, но непонятно как.
Правильно ли я понимаю, что своим ответом ты предлагаешь создать мне новою тему? Или ты все-таки позволишь мне обсудить этот новый вопрос в этой старой теме?
Когда ты узнаешь, что такое уровень raid, достигнуть просветления поможет ликбез по SMART
Я предлагаю не трахать мозги окружающим, а почитать хотя бы википедию. Ты несёшь бред.
Если останутся вопросы - спрашивай
а именно - как промониторить raid0
Когда однажды он не загрузится, ты узнаешь, что на одном из твоих дисков, а может и на обоих проблемы. Это замечательное средство мониторинга встроено raid0. Даже софтовый.
Когда ты узнаешь, что такое уровень raid
Я знаю, что такое уровень RAID
0 - это черезполосица
1 - зеркалирование
5 - одна контрольная сумма на все диски (дополнительный диск на массив)
6 - две контрольные суммы (два дополнительных диска на массив)
частично помогло, но мне не ясно, как отослать по почте результаты проверки (и команду проверки я сходу не вспомнил, хотя раньше точно использовал)
>> частично помогло, но мне не ясно, как отослать по почте результаты проверки
и команду проверки я сходу не вспомнил
smartctl. Можно запускать в режиме демона - smartd (в большинстве дистрибутивов автоматически). В случае подозрения на скорую смерть винта ты получишь письмо.
Если останутся вопросы - спрашивай
ок, проверять можно из cron при помощи
smartctl -t long /dev/hdc
Begin an extended self-test of drive /dev/hdc. You can issue this com-
mand on a running system. The results can be seen in the self-test log
visible with the '-l selftest' option after it has completed.
из man smartctl
Как результаты отослать по почте в случае отказа?
Кто-нибудь так делает или делают по-другому?
Можно запускать в режиме демона - smartd
-i N, --interval=N
Sets the interval between disk checks to N seconds, where N is a decimal integer. The minimum allowed value is ten and the maximum is the largest posi-
tive integer that can be represented on your system (often 2^31-1). The default is 1800 seconds.
Вот у меня вопрос - как он проверяет раз в 1800 секунд, если проверка диска занимает 15 часов? Значит он проверяет не поверхность диска, а только его статус.
Правильно ли я понимаю, что в дополнение к запуску smartd надо в кроне переодически запускать smartctl ? Будет ли длинный тест менять статус диска? Делается ли так в «Нормальных дистрибутивах» ?
Если SMART диска включен (проверить smartctl -i ), то проверка производится контроллером диска. А приложения для мониторинга (smartd) должны только читать таблицу SMART
Вручную запускать проверку не обязательно.
Простой пример: повесь на корзину с дисками вентиллятор и время от времени проверяй температуру в таблице SMART:
smartctl -a | grep -i temp
Т.е. для проверки достаточно убедиться, что
1) SMART на дисках включен
2) smartd настроен на мониторинг всех дисков (явно не указано мониторить только sda, например)
3) smartd запускается автоматически при старте ОС
И остаётся лишь время от времени проверять почту.
А про мониторинг _состояния_ raid-массива ты сам ответил в топике
Кстати, smartd проверяет не только таблицу SMART, но и смотрит куда-то в инет на предмет информации о прошивке. Если станет известно, что твоя прошивка может убить винт, ты тоже будешь получать письма (и в выводе smartctl -a будет предупреждение)
приложения для мониторинга (smartd) должны только читать таблицу SMART
Если не будет обращения к какому-либо сектору, а он испортится - контроллер диска об этом сразу не узнает.
Если регулярно выполнять бекапы, то все данные регулярно будут считываться и контроллер будет выявлять ошибки.
Вручную запускать проверку не обязательно.
Ну, это позволит знать о состоянии неиспользуемого места :)
Есть гораздо более простой способ проверки поверхности — чтение диска в /dev/null.
Это расточительно. В твоем варианте проверкой занимается центральный процессор, а используемые мощности можно было бы пустить на выполнение более полезных задач. А в варианте со smartctl этим занимается контроллер диска, разгружая центральный процессор, и контроллер диска еще может оптимизировать проверку и работу с диском внутри себя, а между ЦП и контроллером диска такая оптимизация затруднительна :)
>Я знаю, что такое уровень RAID
5 - одна контрольная сумма на все диски (дополнительный диск на массив)
Не-а. Это взаимно-обратная функция данных и кода восстановления, позволяющая в случае краха одного из носителей безболезненно считать информацию с массива.
6 - две контрольные суммы (два дополнительных диска на массив)
Приветствую!
Сразу скажу - по этим интернетам копался, ответа не нашел (может не прямолинейность ручных манипуляторов у меня обострилась).
Вопрос вот в чем. Есть, вернее был программный RAID 10, у него вышли из строя 2 диска из 4 (Причина кроется в SMART, но не в этом вопрос) Так вот как узнать выпавшие жесткие диски какое положение в данном RAID занимали?
отличная полная информация.. mdadm?
смотри lshw -C disk
ищи строки
physical id
serial
Спасибо за ответ!
Вывод:
0 и 1 это есть первое зеркало, 2 и 3 это есть второе зеркало?
ты понимаешь, что перед тобой?
это листинг информации о твоих дисках и физический id (их местоположение), на то и физически, ты же не /proc/mdstat смотришь.
Если хотите узнать о том, какие конкретно диски из массива отказали (sda,sdb. ), смотрите mdadm --query --detail /dev/md0 (подставьте имя своего массива), если хотите увидеть какой конкретно диск физически в какой интерфейс на mb включен, смотрите cat /proc/scsi/scsi
Может у меня от жары и злобнодышашего над ухом начальника пропала способность думать и четко излагать свои мысли.
Но, я физически-то знаю где-какой у меня жесткий диск, в какой порт он подключен и пр. информацию. Не понятно что - какой диск какую позицию в RAID занимает. Т.е. если мы видим physical id: 0, он подключен в первый порт на маме - тут все понятно без вопросов. А вот в RAID где он позиционируется?
Именно в этом то и вопрос. Допустим, physical id: 0 и physical id: 1 это одно зеркало, два остальных - это другое зеркало. Вот именно это и нужно узнать. Или же physical id: 0 и physical id: 2 это есть одно зеркало, а id:1 и id:3 то второе зеркало. Вот в чем соль.
И вам спасибо что не остались в стороне)
Какие диски отвалились выяснилось сразу. Вопрос в другом. см предыдущий комент.
Не верно понял ваш вопрос, тогда отсюда:
Используя это и вывод двух команд приведенных выше, я думаю, становится понятно как определить положение выпавшего диска в массиве. Смотрие Number и RaidDevice в выводе mdadm или число в [] в выводе cat /proc/mdstat за sda[], sbd[], узнаете порядок в котором собирались диски в массив и как в нем распределились. По-умолчанию используется layout n2, значит первые два диска (0,1 в выводе mdadm) будут первым зеркалом, вторые два (2,3) будут вторым.
У меня есть домашний медиа-сервер, работающий на openSUSE 12.2. Я использую восемь дисков по 2 ТБ в конфигурации RAID-10. Я специально купил два разных типа дисков: четыре Seagate Barracuda Green и четыре Western Digital Red. Моя цель - настроить RAID таким образом, чтобы каждая зеркальная пара в массиве состояла из разнородных дисков (т. Е. Одного диска Seagate и одного диска WD). К сожалению, YaST2 Partitioner не предоставил мне такого выбора в структуре массива, поэтому сейчас я пытаюсь выяснить, как выглядит структура RAID10 по умолчанию.
Я знаю следующее:
- sdc, sdd, sde и sdf - все диски WD
- sdg, sdh, sdi и sdj - это диски Seagate
Я выбрал макет n2 по умолчанию при создании RAID. На основании информации из этих двух источников, я предполагаю, что смежные диски зеркально отображены (т.е. sdc == sdd, sde == sdf и т. Д.), Но я хочу знать наверняка:
Вот вывод 'mdadm --detail / dev / md0':
А вот содержимое / proc / mdstat:
Итак, мои вопросы:
- Как мне узнать, какие диски являются зеркалами друг друга?
- Есть ли способ изменить это, или я должен просто поменять местами провода (так как это поменяет местами буквы дисков), а затем перестроить RAID?
Замечание, касающееся всех, кто хочет знать, почему я это делаю: приводы одной и той же модели и партии, работающие при одинаковых нагрузках, времени безотказной работы и температуре, имеют небольшие систематические колебания, и различия во времени до отказа между приводами будут в основном приводиться в действие. случайным изменением в процессе производства. Это увеличивает риск смерти нескольких дисков одновременно. Приобретая накопители не только у разных серий, но и у разных производителей, я вносил систематические изменения в свой массив, влияя на то, какие накопители выйдут из строя в одно и то же время.
Домашние медиа-серверы не по теме для ServerFault. Тем не менее, вы четко поставить некоторые усилия в этом и я собираюсь пометить для миграции в unix.SE .
Это очень интересный вопрос, и причины этого так хорошо понятны. Вам не нужно менять провода, так как просто указать диск при (повторном) создании RAID намного проще.
@poige Это подпадает под что-либо в домашних условиях . Я пытался прояснить, что, несмотря на это, я считаю вопрос адекватно исследованным.
Если бы я спекулировал дико, я бы предположил, что вы могли бы взглянуть на RaidDevice колонку. Это может быть так же просто, как (0,1), (2,3), (4,5), (6,7). Это заставило бы меня предположить, что вам нужно сделать так, чтобы RaidDevice выстраивался в линию как WD / Sea / WD / Sea / и т.д. . Но я не уверен на 100% в этом.
Последние версии mdadm показывают это право в деталях массива. Пример из mdadm v3.3 - 3rd September 2013
Обратите внимание на обозначение set-A или set-B . В приведенном выше случае, sdd и sdb может потерпеть неудачу вместе без потери данных. Возможно, эти данные недоступны во время перестройки массива.
У меня была та же проблема, и после того, как я погуглил некоторое время, я не нашел надежного ответа. После некоторых размышлений я подумал, что зеркала имеют одинаковые данные, и мы могли бы сравнить их.
ПРИМЕЧАНИЕ: БУДЬТЕ ОСТОРОЖНЫ, ЕСЛИ У ВАС ЕЩЕ БОЛЬШЕ 2 ДРАЙВОВ С ОДНОЙ ТАКОЙ ПРОВЕРКОЙ, КОТОРОЕ ВЫ, ПОГОДНО, СРАВНИВАЕТЕ ПУСТОЕ ДИСКСПЕЙС, ВЫБЕРИТЕ ДРУГОЙ СМЕЩЕНИЕ (опция пропуска).
С помощью нескольких команд вы можете понять это:
1. Создайте 4 массива raid1:
В настоящее время у вас есть 4 массива raid 1 с 2 ТБ места на каждом,
2. Давайте их соберем!
--run options полезен , потому что некоторые компоненты активны в другом массиве
3. Адаптируйте ваш файл mdadm.conf
Возможно, вам потребуется (в зависимости от вашей конфигурации) адаптировать этот файл для отражения изменений в нашем новом массиве (/ dev / md4).
4. Наслаждайтесь .. Ваш новый DIY массив raid10!
Нет, он говорит о личности Linux mdadm raid10. Я считаю, что ваш ответ не применим (хотя, если честно, он дает ОП альтернативу для достижения того, что ему нужно делать)
Создание RAID-массива из неравномерных устройств
На этот раз мы будем использовать маленькое блочное устройство.
Ну, мы получили предупреждение, но массив был создан. Давайте проверим размер:
То, что мы получаем, это 101 248 блоков. 101248 + 128 = 101376 = 99 × 1024. Используемое пространство - это пространство самого маленького устройства (плюс метаданные RAID 128K). Давайте снова разберемся с этим в нашем последнем эксперименте:
Экспериментальная установка
Во-первых, давайте подделаем некоторые блочные устройства. Мы будем использовать /tmp/sdx и /tmp/sdy (каждый 100M), и /tmp/sdz (99M).
Это создает три файла в качестве три петлевых блочных устройств: /dev/loop0 , /dev/loop1 и /dev/loop2 , отображения на sdx , sdy и sdz соответственно. Давайте проверим размеры:
Как и ожидалось, у нас есть два петлевых устройства размером 100 МБ (102400 КиБ = 100 МБ) и одно из 99 МБ (точно 99 × 1024 блоков 1 КБ).
Создание RAID-массива из устройств одинакового размера
Это именно то, что мы ожидаем: один взгляд на руководство mdadm напоминает нам, что метаданные версии 1.2 занимают 128 КБ: 128 + 102272 = 102400. Теперь давайте уничтожим их при подготовке ко второму эксперименту.
Читайте также: