gmirror рейд. один из винтов сбоит, другой не читает.
P.S. На будущее желательно делать -F сразу при создании миррора. Этот автосинк часто создаёт геморрой, иногда вытекающий и в потерю данных.
configure Configure the given device.
Additional options include:
-a Turn on autosynchronization of stale components.
-b balance Specifies balance algorithm to use.
-d Do not hardcode providers' names in metadata.
-h Hardcode providers' names in metadata.
-n Turn off autosynchronization of stale components.
-s slice Specifies slice size for split balance algorithm.
с ad6 загрузился, данные забэкапил, fsck так и не даёт проверить одну партицию. буду разбираться дальше. Я так понимаю, если доходит до таких ошибок - то это уже серьёзные косяки. шлейфы и мамку разные проверял. Везде плохо.
Винты новые вообще, полгода где-то.
И что есть stale component ? и как можно отлавливать, что один из винтов начитает сбоить?
Это нормально, бывает и быстрее дохнут.
Потом протестировать оба, понять каково их физическое состояние. На основнии этого планировать дальнейшие действия.На одном вроде всё читается, кроме пары файлов (которые не критичны, но ошибки постоянно вылезают).
Всё в однопользовательском режиме. В обычном ооочень тормозить начинает.
Насколько я понимаю, бесполезно подключать к рейду новый винт, чтобы он синхронизировался со старым.
Просто dump старого, потом восстановить?
Хочется минимизировать лишние операции, а то ещё какие-нибудь данные начнут помирать.
Впрочем, исходные данные с ремапленных секторов прочитать неполучится 100%.
configure -n ?
configure Configure the given device.(c) man gmirror
Additional options include:
-a Turn on autosynchronization of stale components.
-b balance Specifies balance algorithm to use.
-d Do not hardcode providers' names in metadata.
-f Synchronize device after a power failure or sys‐
tem crash.
-F Do not synchronize after a power failure or sys‐
tem crash. Assumes device is in consistent
state.
-h Hardcode providers' names in metadata.
-n Turn off autosynchronization of stale compo‐
nents.
-p priority Specifies priority for the given component prov.
-s slice Specifies slice size for split balance algo‐
rithm.
configure Configure the given device.
Additional options include:
-a Turn on autosynchronization of stale components.
-b balance Specifies balance algorithm to use.
-d Do not hardcode providers' names in metadata.
-h Hardcode providers' names in metadata.
-n Turn off autosynchronization of stale components.
-s slice Specifies slice size for split balance algorithm.
rebuild Rebuild the given mirror components forcibly. If autosyn-
chronization was not turned off for the given device, this
01 nifnif ...home/igor(0/1)# uname -a
FreeBSD nifnif.prettysin.info 6.2-STABLE FreeBSD 6.2-STABLE Sun Apr 19 14:01:04 MSD 2009 nifnif.prettysin.info:/usr/obj/usr/src/sys/NIFNIF i386
Но на серваке вроде 8 была. Он сейчас разобран
а тут тоже -F есть.
http://www.opennet.ru/man.shtml?topic=gmirror&category=8...
Такое древнее как 6.2 держать себе дороже - например, новые версии портов могут уже не собираться. RELENG_6 считается "старьём". И даже RELENG_7 legacy.
Давно пора переходить на 8, если конечно это не наикритичнейший сервак в продакшине, да ещё и со своими патчами.
Какая версия ядра?
Несколько некорректный вопрос. Это не линукс, где ядро отдельно, а юзерспейс отдельно. В FreeBSD всё в базовой системе достаточно сильно связано.
так?
dd conv=noerror if=/dev/ad2 of=/dev/ad4 bs=8192
А если винты не совсем одинаковые по размеру?
conv=noerror - это чтобы на сбойном винте можно было продолжать после столкновения с плохим кластером.
dd conv=noerror if=/dev/ad2 of=/dev/ad4 bs=8192IMHO, 512. Т.к. при возникновении ошибки чтения одного сектора только он и будет заменён нулями, а не все 16 секторов (8K).
dd сделал с bs=2m
с bs=512 скорость была жуткая. Около 15 часов бы ждал.
#mount
/dev/ad16s1a on / (ufs, local, read-only)
deffs on /dev (devfs, local, multilabel)
#fsck /usr
** /dev/ad16s1f
Cannot find file system superblock
ioctl (GCINFO): Inappropriate ioctl for device
fsck_ufs: /dev/ad16s1f: can't read disk label
#fsck /var1
** /dev/ad16s1d
BAD SUPER BLOCK: VALUES IN SUPER BLOCK DISAGREE WITH THOSE IN FIRST ALTERNATE ioctl(GCINFO): Inappropriate ioctl for device
fsck_ufs: /dev/ad16s1D: can't read disk label
Можно как-нибудь переписать только superblock ? и как можно посмотреть его смещение. и самое главное, почему он не переписался. Там всего 1 раз ошибка чтения вылезала. И не верю я, что в 3 из 3 случаев она попала именно в суперблок.
#bsdlabel ad10s1
# /dev/ad10s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 1048576 0 4.2 BSD 0 0 0
b: 8315952 1048576 swap
c: 488397105 0 unused 0 b0 #"raw" part, don't edit
d: 6254592 9364528 4.2BSD 0 0 0
e: 1048576 15619120 4.2BSD 0 0 0
f: 471729409 16667696 4.2BSD 0 0 0
#bsdlabel ad16s1
# /dev/ad16s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 1048576 0 4.2 BSD 0 0 0
b: 8315952 1048576 swap
c: 488397105 0 unused 0 b0 #"raw" part, don't edit
d: 6254592 9364528 4.2BSD 0 0 0
e: 1048576 15619120 4.2BSD 0 0 0
f: 471729409 16667696 4.2BSD 0 0 0
fsck с флагом -b 160 тоже ничего не находит?
Но без -b 160 всё равно не запускается даже после
UPDATE STANDART SUPERBLOCK? yes
Насколько плохо делать
http://www.freebsd.org/doc/en/books/faq/disks.html
For example, if you are going to move root to /dev/ad1s1a, with /mnt as the temporary mount point, it is:
# newfs /dev/ad1s1a
# mount /dev/ad1s1a /mnt
# cd /mnt
# dump 0af - / | restore rf -
ничего плохого в этом наборе команд нет, стандартный способ переливания ufs.
> новые версии портов могут уже не собираться.
> RELENG_6 считается "старьём". И даже RELENG_7 legacy.
> Давно пора переходить на 8, если конечно это не наикритичнейший
> сервак в продакшине, да ещё и со своими патчами.
Идиотский вопрос: а если в производстве 4.10 и со своими патчами, то как?
Можно уже не париться и уходить на DragonFly?
Или пересоздавать с нуля?
---
...Я работаю антинаучным аферистом...
Можно уже не паритьсяПариться надо было лет 7 назад, не?
Можно уже не париться и уходить на DragonFly?Причём на 1.0
Оставить комментарий
Phoenix
Ситуация такая. Есть freebsd и рейд1 на gmirror.пару дней назад сервер, проработав где-то месяца 3, просто выключился. После включения работает минут 5 и после того, как дело доходит до консоли, вырубается. Возможно там что-то было с мамкой или ещё с чем, но сейчас хочу восстановить систему на другом компе.
потом я сделал, наверно очень нехорошие операции, а именно, выключил один из винтов(ad6) - система отказалась грузиться. включил обратно, выключил другой(ad4) загрузилось. Всё это делалось на компе, на котором отрубалось питание.(БП там новый, достаточно мощный)
имеем
ad4 и ad6. раньше они были в mirror/gm0
с ad4 не грузится, пишет не могу подмонтировать, с ad6 грузится.
ad4 отключил. гружусь, чтобы хоть с одного работало.
#gmirror status
mirror/gm0 DEGRADED ad6
#fsck -y /
***file system clean ***
#fsck -y /var
ad6: FAILURE - READ_DMA status=51<READY,DSC, ERROR> error = 40<UNCORRECTABLE> LBA=10870238
THE FOLLOWING DISK SECTORS COULD NOT BE READ: 1505647
*** FILE SYSTEM STILL DIRTY ***
*** PLEASE RERUN FSCK ***
Вопрос1: что я уже сделал не так?
Впорос2: что плохого может произойти, если подрубить ad4 и дать им синхронизироваться, потом работать с ad4, прочекать все ФС и вытаскивать данные
могло ли произойти так, что ad4 жив и с ним всё в порядке, но gmirror решил сделать главным ad6. Тогда я не очень понимаю, зачем этот рейд нужен.