LINUX.ORG.RU
решено ФорумAdmin

Linux md raid и EFI раздел, нюансы

 , ,


0

1

Доброго всем.

Есть сервак, который наша контора взяла в аренду в ДЦ. По их условиям, они сами (сотрудники датацентра) ставят ОС и настраивают рейд.

Имеем: 2x4Tb винта объединенные в software raid, по нашим требованиям они поставили CentOS 7 и кроме служебных разделов сделали один большой /. Как я понимаю, чтобы обеспечить поддержку разделов больше 2Тб, они сделали GPT диски и UEFI загрузку. UEFI загрузка требует наличие EFI раздела на одном из дисков. Как видно:

1. На диске (sda) есть раздел «EFI System Partition», а на втором (sdb) вместо него «Microsoft basic».

2. Раздел «EFI System Partition» (/dev/sda1) смонтирован как /boot/efi раздел (см команду df внизу)

3. Раздел «Microsoft basic» (/dev/sdb1) не смонтирован вообще. Я только что ради интереса смонтировал его ручками и оказалось, что в нем содержатся почти(!) те же файлы, что в /dev/sda1.

4. Интересный момент, у меня есть подозрения, что как минимум 1 раз, загрузка по каким-то причинам переключилась с /dev/sdb1 на /dev/sda1, т.к. у меня была ситуация, когда я добавил параметр ядру «ipv6.disable=1» и обновил grub.cfg на этом efi разделе, и после перезагрузки решил проверить, как это применилось, удивился, что никак и долго пытался понять почему grub.cfg вернулся в первоначальное состояние (похоже, что просто смонтировался раздел с другого диска, на котором grub.cfg был первоначальный). Я еще раз дал команду обновить grub.cfg (судя по всему уже на втором разделе) и таким образом привел файлы к общему знаменателю на двух разделах. (единственное отличие файлов на этих разделов timestamp файлов grub.cfg - полтора часа разницы)

Вопросы: 1. Самое главное, если выйдет из строя один из дисков (любой), смогу ли я загрузиться имея только второй? 2. Объясните мне пожалуйста, как при перезагрузке сервера могла произойти смена диска с которого произошла загрузка? будет или это еще повторяться?

[root@backupsrv ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt
Disk identifier: 8C784678-F636-44B1-A51A-5A3EAE7ED217


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      4605951      2G  Linux RAID
 3      4605952      5654527    512M  Linux RAID
 4      5654528   7814035455    3.7T  Linux RAID
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sdb: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: gpt
Disk identifier: 5A1DF718-A12D-4482-9001-70F5683F9BFF


#         Start          End    Size  Type            Name
 1         2048       411647    200M  Microsoft basic
 2       411648      4605951      2G  Linux RAID
 3      4605952      5654527    512M  Linux RAID
 4      5654528   7814035455    3.7T  Linux RAID

Disk /dev/md1: 2144 MB, 2144337920 bytes, 4188160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md2: 3997.8 GB, 3997755768832 bytes, 7808116736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md0: 535 MB, 535822336 bytes, 1046528 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

[root@backupsrv ~]# df
Filesystem      1K-blocks    Used  Available Use% Mounted on
devtmpfs         16327416       0   16327416   0% /dev
tmpfs            16339676       0   16339676   0% /dev/shm
tmpfs            16339676   99580   16240096   1% /run
tmpfs            16339676       0   16339676   0% /sys/fs/cgroup
/dev/md2       3902152092 2478120 3899673972   1% /
/dev/md0           498514  109566     358689  24% /boot
/dev/sda1          204580   11280     193300   6% /boot/efi
tmpfs             3267936       0    3267936   0% /run/user/1000
tmpfs             3267936       0    3267936   0% /run/user/0



Последнее исправление: samson_b (всего исправлений: 2)

Ну вообще тебе криво поставили ОС. На практике efi-разделы идентичны и объединяются в рейд вместе с остальными разделами при помощи mdadm. отдельно разделы не монтируются - на них тот же fat32. Для этого есть --metadata=1.0 - чтобы расположить метаданные mdadm в конце раздела, а не в начале.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну вообще тебе криво поставили ОС.

Понятно, а это реально пофиксить, не переустанавливая систему? Т.е. объединить в рейд эти два fat32 раздела sda1 и sdb2. Или уже все, надо все рушить и делать заново?

Еще вопрос, что вы скажете по тому, что система грузится то с диска sda то sdb. (Ес-но, никаких настроек в биосе я не производил, у меня вообще доступа к биос нет)

Вот из логов, тут грузимся с sda1

Dec 21 00:38:20 re-m root: os-prober: debug: running /usr/libexec/os-probes/mounted/05efi on mounted /dev/sda1
Dec 21 00:38:20 re-m root: 05efi: debug: /dev/sda1 is a FAT32 partition
Dec 21 00:38:20 re-m root: 05efi: debug: /dev/sda1 partition scheme is gpt
Dec 21 00:38:20 re-m root: 05efi: debug: /dev/sda1 partition type is c12a7328-f81f-11d2-ba4b-00a0c93ec93b
[skip]
Dec 21 00:38:20 re-m root: os-prober: debug: running /usr/libexec/os-probes/50mounted-tests on /dev/sdb1
Dec 21 00:38:20 re-m root: 50mounted-tests: debug: mounted as vfat filesystem
Dec 21 00:38:20 re-m root: 50mounted-tests: debug: running subtest /usr/libexec/os-probes/mounted/05efi
Dec 21 00:38:20 re-m root: 05efi: debug: /dev/sdb1 is a FAT32 partition
Dec 21 00:38:20 re-m root: 05efi: debug: /dev/sdb1 partition scheme is gpt
Dec 21 00:38:20 re-m root: 05efi: debug: /dev/sdb1 partition type is ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

А вот тут уже с sdb1

Dec 21 01:52:17 re-m root: os-prober: debug: running /usr/libexec/os-probes/50mounted-tests on /dev/sda1
Dec 21 01:52:17 re-m root: 50mounted-tests: debug: mounted as vfat filesystem
Dec 21 01:52:17 re-m root: 50mounted-tests: debug: running subtest /usr/libexec/os-probes/mounted/05efi
Dec 21 01:52:17 re-m root: 05efi: debug: /dev/sda1 is a FAT32 partition
Dec 21 01:52:17 re-m root: 05efi: debug: /dev/sda1 partition scheme is gpt
Dec 21 01:52:17 re-m root: 05efi: debug: /dev/sda1 partition type is c12a7328-f81f-11d2-ba4b-00a0c93ec93b
[skip]
Dec 21 01:52:17 re-m root: os-prober: debug: running /usr/libexec/os-probes/mounted/05efi on mounted /dev/sdb1
Dec 21 01:52:17 re-m root: 05efi: debug: /dev/sdb1 is a FAT32 partition
Dec 21 01:52:17 re-m root: 05efi: debug: /dev/sdb1 partition scheme is gpt
Dec 21 01:52:17 re-m root: 05efi: debug: /dev/sdb1 partition type is ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

А теперь опять с sda1

Dec 21 02:38:17 re-m root: os-prober: debug: running /usr/libexec/os-probes/mounted/05efi on mounted /dev/sda1
Dec 21 02:38:17 re-m root: 05efi: debug: /dev/sda1 is a FAT32 partition
Dec 21 02:38:17 re-m root: 05efi: debug: /dev/sda1 partition scheme is gpt
Dec 21 02:38:17 re-m root: 05efi: debug: /dev/sda1 partition type is c12a7328-f81f-11d2-ba4b-00a0c93ec93b
[skip]
Dec 21 02:38:17 re-m root: os-prober: debug: running /usr/libexec/os-probes/50mounted-tests on /dev/sdb1
Dec 21 02:38:17 re-m root: 50mounted-tests: debug: mounted as vfat filesystem
Dec 21 02:38:17 re-m root: 50mounted-tests: debug: running subtest /usr/libexec/os-probes/mounted/05efi
Dec 21 02:38:17 re-m root: 05efi: debug: /dev/sdb1 is a FAT32 partition
Dec 21 02:38:17 re-m root: 05efi: debug: /dev/sdb1 partition scheme is gpt
Dec 21 02:38:17 re-m root: 05efi: debug: /dev/sdb1 partition type is ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

samson_b
() автор топика
Последнее исправление: samson_b (всего исправлений: 1)
Ответ на: комментарий от samson_b

это реально пофиксить, не переустанавливая систему?

Реально. Нужно собрать из разделов RAID 1 на mdadm с --metadata 1.0 и не забыть про мелочи типа fstab.

система грузится то с диска sda то sdb.

Что там в мозгах в мат.плате на вашем сервере - я не в курсе. Имеет право. Разделы должны быть идентичны, UEFI ничего в них не пишет, поэтому при правильном подходе вам должно быть совершенно по барабану.

Есть сервак, который наша контора взяла в аренду в ДЦ. По их условиям, они сами (сотрудники датацентра) ставят ОС и настраивают рейд.

Что за ДЦ такой? Попросите IP-KVM и поставьте так, как вам надо.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от Deleted

Спасибо! Буду предъявлять претензии, чтобы переделали.

Что за ДЦ такой?

Хз, это руководство само нашло.

Попросите IP-KVM и поставьте так, как вам надо.

Я просил изначально, они не предоставили. Пусть сами переделывают, я уже накатил на сервер некоторый софт, если завалю систему, мало того, что мне надо будет софт переустанавливать, так еще надо будет их просить переставлять систему и ждать пол дня пока рейд синхронизируется.

samson_b
() автор топика
Последнее исправление: samson_b (всего исправлений: 2)
Ответ на: комментарий от Deleted

Я правильно понимаю, что я могу создать такой рейд командами:

Отмонтируем текущий загрузочный раздел

umount /dev/sda1

Создаем рейд из двух разделов и форматируем его в фат32

mdadm --create /dev/md3 --metadata 1.0 --raid-devices=2 --level=1 /dev/sd[ab]1
mkfs.fat -F32 /dev/md3

Меняем эту строчку в fstab

UUID=B785-DAAF          /boot/efi               vfat    defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 0

На такую

/dev/md3          /boot/efi               vfat    defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 0

Данные я так понимаю все сотрутся в процессе «изготовления» рейда, их можно просто заранее откопировать и обратно перенести, как рейд будет готов? или они как-то хитро должны быть записаны на раздел?

samson_b
() автор топика
Ответ на: комментарий от samson_b

Да, всё понимаете верно. Данные сотрутся, но их можно просто скопировать. Теоретически всё должно взлететь, но я КРАЙНЕ рекомендую всё же иметь возможность загрузиться по сети в какой-нибудь rescue.

Deleted
()
Ответ на: комментарий от Deleted

Окончание истории, в общем ДЦ предложил пофиксить их косяк платно, на что я согласовав с ними возможность альтернативно загрузиться сделал все сам.

Делал так:

1. Скопировал данные с загрузочного раздела (/boot/efi) на основной раздел, чтобы после создания рейда можно было их скопировать обратно.

2. Отмонтировал загрузочный раздел:

umount /dev/sda1

3. Объединил в рейд (md3) эти два раздела с параметром "--metadata 1.0", чтобы потом можно бы загружаться

mdadm --create /dev/md3 --metadata 1.0 --raid-devices=2 --level=1 /dev/sd[ab]1

Отформатирировал рейд в fat32 (добавил параметры -S 1024 -s 1, т.к. без них mkfs.fat ругается на нехватку кластеров «Not enough clusters for a 32 bit FAT!»

mkfs.fat -F32 -S 1024 -s 1 /dev/md3

4. Поменял эту строчку в fstab:

UUID=B785-DAAF /boot/efi vfat defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 0

на такую

/dev/md3 /boot/efi vfat defaults,uid=0,gid=0,umask=0077,shortname=winnt 0 0

5. Смонтировал уже собранный рейд к файловой системе

mount /dev/md3 /boot/efi

6. Скопировал обратно в директорию /boot/efi данные, которые сохранил в п.1

7. Скрестил пальцы пальцы и перезагрузился, чтобы убедиться, что сервер может загружаться.

Все прошло хорошо, сервер загрузился, рейд автоматически монтируется к файловой системе.

samson_b
() автор топика
Ответ на: комментарий от Deleted

Спасибо, поменял.

ребут… мучительное ожидание… долгие минуты… поднялся сервер :)

PS Я все думал где эти UUID можно посмотреть :))))

samson_b
() автор топика
Ответ на: комментарий от Deleted

Для этого есть --metadata=1.0 - чтобы расположить метаданные mdadm в конце раздела, а не в начале.

О, спасибо, залез в документацию и прочитал, до этого почему-то был уверен на 100%, что в конце только 0.90.

Deleted
()
Ответ на: комментарий от Deleted

Нет. 0.90 и 1.0 - в конце, 1.1 в начале, 1.2 - отступает на 4k от начала.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.