LinuxForum.Fans
Тема

swap в программном RAID на Ubuntu

Автор: Laytnez 15 сообщений 2742 просмотров
#274644

При установке Ubuntu был собран программный RAID1 (зеркало):

md0 - основной раздел
md1 - своп

Физически винта два.

После установки, для теста заменил один из винтов на чистый (но аналогичный, естес-но)
Скопировал на него всю разметку с первого диска

text
sudo dd if=/dev/sda of=/dev/sdb bs=1M
114473+1 records in
114473+1 records out
120034123776 bytes (120 GB) copied, 4184,9 s, 28,7 MB/s

Далее, при подключении разделов к рэйду основной подключился (md0), а своп (md1) - нет.

text
sudo mdadm /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

sudo mdadm /dev/md1 --add /dev/sdb5 mdadm: /dev/sdb2 not large enough to join array

Хотя, по размеру все совпадает:

text
sudo fdisk -l

Disk /dev/sda: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0007f614

Device Boot Start End Blocks Id System /dev/sda1 1 14411 115751936 fd Linux raid autodetect /dev/sda2 14411 14594 1466369 5 Extended /dev/sda5 14411 14594 1466368 fd Linux raid autodetect

Disk /dev/sdb: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0007f614

Device Boot Start End Blocks Id System /dev/sdb1 1 14411 115751936 fd Linux raid autodetect /dev/sdb2 14411 14594 1466369 5 Extended /dev/sdb5 14411 14594 1466368 fd Linux raid autodetect

Disk /dev/md0: 118.5 GB, 118529916928 bytes 2 heads, 4 sectors/track, 28937968 cylinders Units = cylinders of 8 * 512 = 4096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 1501 MB, 1501495296 bytes 2 heads, 4 sectors/track, 366576 cylinders Units = cylinders of 8 * 512 = 4096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/sdc: 1999 MB, 1999568384 bytes 32 heads, 63 sectors/track, 1937 cylinders Units = cylinders of 2016 * 512 = 1032192 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00dd6ccb

text
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid1 sda5[0]
      1466304 blocks [2/1] [U_]
      
md0 : active raid1 sdb1[1] sda1[0]
      115751872 blocks [2/2] [UU]

Что не так? Как быть?

#274812

Зачем swap зеркалировать?

С ним лучше так поступить:
/etc/fstab

text

/dev/sda5    swap     swap     defaults,pri=1     0 0
/dev/sdb5    swap     swap     defaults,pri=1     0 0
#274844

а зачем dd делали? разве рейд сам не восстанавливает вновь введенный диск? там же своя разметка, свои UUID...

#274867

Делать на рейде своп не имеет смысла, и уж тем зеркало.
Где то уже писал, что если два свопа (два раздела) в системе присутствуют, они автоматом в нулевой рейд становятся.

#274887

Зачем swap зеркалировать?

Чтобы в случае выхода из строя винта на котором своп, система не рухнула/зависла/ребутнулась. Разве нет?

Делать на рейде своп не имеет смысла, и уж тем зеркало.
Где то уже писал, что если два свопа (два раздела) в системе присутствуют, они автоматом в нулевой рейд становятся.

Нулевой рейд не подходит по вышеуказанной причине.

а зачем dd делали? разве рейд сам не восстанавливает вновь введенный диск? там же своя разметка, свои UUID...

Чтобы перенести разметку (понимаю, что из пушки по воробьям).
Так как более корректно не получилось:

text
sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdb
text
Checking that no-one is using this disk right now ...
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
OK

Disk /dev/sdb: 14593 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sdb: unrecognized partition table type Old situation: No partitions found New situation: Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System /dev/sdb1 2048 231505919 231503872 fd Linux raid autodetect /dev/sdb2 231507966 234440703 2932738 5 Extended /dev/sdb3 0 - 0 0 Empty /dev/sdb4 0 - 0 0 Empty /dev/sdb5 231507968 234440703 2932736 fd Linux raid autodetect Warning: partition 1 does not end at a cylinder boundary

sfdisk: I don't like these partitions - nothing changed. (If you really want this, use the --force option.)

sfdisk видит таблицу "не так" (с чем я абсолютно согласен), посему и не хочет без --force размечать таким образом.

Понимаю, что проблема в кривизне рук и отсутствии опыта. Как?

#274911

Чтобы перенести разметку (понимаю, что из пушки по воробьям).+

А Зачем разметка для софтрейда? ему галвное чтоб размер раздела соответствовал.
Если уж делать так
как вы делали, то надо было содержимое партиции удалить(переворматировать). Потом пометить разделы как софтрейд, а уже потом вводить в рейд...
При таком копировании у вас продублировались UUIDы разделов. удевительно что первый поднялся...

#274920
"Харитон" написал:
а зачем dd делали? разве рейд сам не восстанавливает вновь введенный диск? там же своя разметка, свои UUID...

если аппаратный то да, и то не всегда. Если программный, то надо делать некие телодвижения.

#274922

Раз уж затронули тему... Насколько я понял, в софтварном рэйде под Ubuntu неизбежно наличие отдельного mdX диска под каждый раздел?
md0 = sda1+sdb1
md1 = sda5+sdb5


Картинка отображает не конкретно мою разметку, но, думаю суть понятна.

А нельзя нельзя ли внутри одного разъединственного md0 иметь несколько разделов? По идее проще манипуляции с заменой и т.д. не?
Ибо если еще и основной раздел разбить (/, /var/ ...), то получится уйма RAID1 дисков %)

А Зачем разметка для софтрейда? ему галвное чтоб размер раздела соответствовал.

Разметка, т.к. физический разбит на два логических.
Собст-но и хотел создать такие же разделы на чистом винте.

Если уж делать так, как вы делали, то надо было содержимое партиции удалить(переворматировать). Потом пометить разделы как софтрейд, а уже потом вводить в рейд...
При таком копировании у вас продублировались UUIDы разделов. удевительно что первый поднялся...

Можно то же самое, только попроще и с командами? :[

Или с нуля:
- Имеем деградировавший рэйд - md0, md1
- живой винт - sda - (fdisk -l см. в первом сообщении темы )
- и чистый винт sdb.

Как корректно собрать это в кучу?

#274928

>Собст-но и хотел создать такие же разделы на чистом винте.

копирование разметки подходит только в случае подстановки точно такого же диска...
думаю можно было б только МБР скопировать...
Но...
А если новый диск будет больше на 100Г?
Проще создать на новом диске разделы такого же размера как и были на старом диске и ввести их в деградировавший рейд. Причем неважно они логические или из расширенного раздела...

#274945
"Харитон" написал:
А если новый диск будет больше на 100Г?

нормальные админы такого не допустят :-)

"Харитон" написал:
копирование разметки подходит только в случае подстановки точно такого же диска...

для точности. необходимо сверяться по PN(partnumber)

#274952

да ладно. для софт-рейда нет разницы какой там винт! хоть юсб-флэшка. Я с точки зрения физики а не надежности и скорости работы.
вам со временем по-любэ прийдется перейти на новой емкости накопители, так как старые умрут, а новые такого объема не производятся да и скорости не те...
Мало того такой схемой можно постепенно перейти на новые винты безболезненно!
Ввели один новый винт, потом на него все перекачали. потом ввели второй винт, перекачав все на него с нового...
А на дополнительном месте создали новые разделы в рейде...

#274953

2 i2ks:
партнамбер акруален только если вы хотите достигнуть максимальной скорости...
В случае зеркала - разговор о надежности...
да и вообще парнамбер актуален для хард-рейда, для софт он актуален только если вы хотите добиться максимальной скорости от связки двух винтов.
в софт-рейде вы можете сделать рейд-масив даже с двух разделов разного размера!)))
только зеркало будет размером меньшего...)))

#274959
"Харитон" написал:
партнамбер акруален только если вы хотите достигнуть максимальной скорости...

Не совсем это я хотел сказать, дело в том что может быть 2 одинаковые модели, но с разными PN и мы в итоге можем получить не очень дружелюбную ситуацию. Не зря же все вендоры перед заменой диска уточняют PN, что бы по гарантии прислать аналогичный диск. :-)

#274983

правильно! только это имеет место для аппаратного рейда. и то не для всех. Но лучше ПН одинаковый ибо биосы могут быть разные и механника с электронникой отличаться тоже...

Для софтового это не критично в плане работы, если не считать теоритически возможную потерю в скорости. Но учитывая что на пути к записи-чтению блока есть еще ОС и ядро, то это уже не играет роли, так как ОС и ядро сделают задержку, которая была бы критична в случае различных ПН и ее просто не будет заметно, она поглатотся другими задержками...

Войдите или зарегистрируйтесь, чтобы ответить.