ZFS на FreeBSD: восстановление после повреждения данных

44

У меня в zpool несколько ТБ очень ценных личных данных, к которым я не могу получить доступ из-за повреждения данных. Первоначально пул был создан примерно в 2009 году или около того в системе FreeBSD 7.2, работающей внутри виртуальной машины VMWare поверх системы Ubuntu 8.04. Виртуальная машина FreeBSD по-прежнему доступна и работает нормально, теперь только Debian 6 сменила только хост-ОС. Жесткие диски стали доступны для гостевой виртуальной машины с помощью универсальных SCSI-устройств VMWare, всего 12.

Есть 2 бассейна:

  • zpool01: 2x 4x 500 ГБ
  • zpool02: 1x 4x 160 ГБ

Тот, который работает, пуст, а сломанный содержит все важные данные:

[user@host~]$ uname -a
FreeBSD host.domain 7.2-RELEASE FreeBSD 7.2-RELEASE #0: \
  Fri May  1 07:18:07 UTC 2009                          \
  root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

[user@host ~]$ dmesg | grep ZFS
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6

[user@host ~]$ sudo zpool status
  pool: zpool01
 state: UNAVAIL
 scrub: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    zpool01     UNAVAIL      0     0     0  insufficient replicas
      raidz1    UNAVAIL      0     0     0  corrupted data
        da5     ONLINE       0     0     0
        da6     ONLINE       0     0     0
        da7     ONLINE       0     0     0
        da8     ONLINE       0     0     0
      raidz1    ONLINE       0     0     0
        da1     ONLINE       0     0     0
        da2     ONLINE       0     0     0
        da3     ONLINE       0     0     0
        da4     ONLINE       0     0     0

  pool: zpool02
 state: ONLINE
 scrub: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    zpool02     ONLINE       0     0     0
      raidz1    ONLINE       0     0     0
        da9     ONLINE       0     0     0
        da10    ONLINE       0     0     0
        da11    ONLINE       0     0     0
        da12    ONLINE       0     0     0

errors: No known data errors

Я смог получить доступ к бассейну пару недель назад. С тех пор мне пришлось заменить практически все оборудование хост-машины и установить несколько операционных систем хоста.

Я подозреваю, что одна из этих установок ОС записала загрузчик (или что-то еще) на один (первый?) Из дисков емкостью 500 ГБ и уничтожила некоторые метаданные zpool (или что-то еще) - «или что-то еще», что означает, что это просто очень расплывчатая идея и эта тема не совсем моя сильная сторона ...


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


Первым результатом поиска при поиске «zfs recovery» является глава « Устранение неполадок и восстановление данных ZFS» в Руководстве по администрированию Solaris ZFS. В первом разделе « Режимы сбоя ZFS» в разделе «Поврежденные данные ZFS» говорится:

Повреждение данных всегда постоянное и требует особого внимания при ремонте. Даже если базовые устройства будут отремонтированы или заменены, исходные данные будут потеряны навсегда.

Несколько разочаровывает.

Тем не менее, вторым результатом поиска в Google является блог Макса Брунинга, и там я прочитал

Недавно мне прислали электронное письмо от человека, у которого 15-летнее видео и музыка хранились в пуле ZFS емкостью 10 ТБ, который после сбоя питания стал неисправным. У него, к сожалению, не было резервной копии. Он использовал ZFS версии 6 во FreeBSD 7 [...] Потратив около 1 недели на изучение данных на диске, я смог восстановить практически все.

а также

Что касается потери данных ZFS, я в этом сомневаюсь. Я подозреваю, что ваши данные там, но вам нужно найти правильный способ получить их.

(это звучит гораздо больше как то, что я хочу услышать ...)

Первый шаг : в чем именно проблема?

Как я могу диагностировать, почему именно zpool считается поврежденным? Я вижу, что есть zdb, который, кажется, официально не документирован ни Sun, ни Oracle в Интернете. Из его справочной страницы:

NAME
       zdb - ZFS debugger

SYNOPSIS
       zdb pool

DESCRIPTION
       The  zdb  command is used by support engineers to diagnose failures and
       gather statistics. Since the ZFS file system is  always  consistent  on
       disk  and is self-repairing, zdb should only be run under the direction
       by a support engineer.

       If no arguments are specified, zdb, performs basic  consistency  checks
       on  the pool and associated datasets, and report any problems detected.

       Any options supported by this command are internal to Sun  and  subject
       to change at any time.

Далее, Бен Роквуд опубликовал подробную статью, и есть видео с Максом Брунингом, рассказывающим об этом (и mdb) на Open Solaris Developer Conference в Праге 28 июня 2008 года.

Запуск zdb от имени root на сломанном zpool дает следующий вывод:

[user@host ~]$ sudo zdb zpool01
    version=6
    name='zpool01'
    state=0
    txg=83216
    pool_guid=16471197341102820829
    hostid=3885370542
    hostname='host.domain'
    vdev_tree
        type='root'
        id=0
        guid=16471197341102820829
        children[0]
                type='raidz'
                id=0
                guid=48739167677596410
                nparity=1
                metaslab_array=14
                metaslab_shift=34
                ashift=9
                asize=2000412475392
                children[0]
                        type='disk'
                        id=0
                        guid=4795262086800816238
                        path='/dev/da5'
                        whole_disk=0
                        DTL=202
                children[1]
                        type='disk'
                        id=1
                        guid=16218262712375173260
                        path='/dev/da6'
                        whole_disk=0
                        DTL=201
                children[2]
                        type='disk'
                        id=2
                        guid=15597847700365748450
                        path='/dev/da7'
                        whole_disk=0
                        DTL=200
                children[3]
                        type='disk'
                        id=3
                        guid=9839399967725049819
                        path='/dev/da8'
                        whole_disk=0
                        DTL=199
        children[1]
                type='raidz'
                id=1
                guid=8910308849729789724
                nparity=1
                metaslab_array=119
                metaslab_shift=34
                ashift=9
                asize=2000412475392
                children[0]
                        type='disk'
                        id=0
                        guid=5438331695267373463
                        path='/dev/da1'
                        whole_disk=0
                        DTL=198
                children[1]
                        type='disk'
                        id=1
                        guid=2722163893739409369
                        path='/dev/da2'
                        whole_disk=0
                        DTL=197
                children[2]
                        type='disk'
                        id=2
                        guid=11729319950433483953
                        path='/dev/da3'
                        whole_disk=0
                        DTL=196
                children[3]
                        type='disk'
                        id=3
                        guid=7885201945644860203
                        path='/dev/da4'
                        whole_disk=0
                        DTL=195
zdb: can't open zpool01: Invalid argument

Я предполагаю, что ошибка «неверный аргумент» в конце происходит, потому что zpool01 на самом деле не существует: он не происходит на рабочем zpool02, но, похоже, дальнейших выходных данных тоже нет ...

Хорошо, на данном этапе, вероятно, лучше опубликовать это, прежде чем статья станет слишком длинной.

Может быть, кто-то может дать мне несколько советов о том, как двигаться дальше, и пока я жду ответа, я посмотрю видео, просмотрите детали вывода zdb выше, прочитайте статью Bens и постарайтесь выяснить, что что...


20110806-1600 + 1000

Обновление 01:

Я думаю, что нашел основную причину: Макс Брунинг был достаточно любезен, чтобы очень быстро ответить на мое письмо с просьбой о выводе zdb -lll. На любом из 4 жестких дисков в «хорошей» половине пула raidz1 вывод аналогичен тому, что я выложил выше. Однако на первых 3 из 4 дисков в «сломанной» половине отображаются zdbотчеты failed to unpack labelдля меток 2 и 3. Четвертый диск в пуле, кажется, в порядке, zdbпоказывает все метки.

Поиск в сообщении об ошибке приводит к появлению этого сообщения . Из первого ответа на этот пост:

С ZFS это 4 одинаковых метки на каждом физическом vdev, в данном случае один жесткий диск. L0 / L1 в начале vdev и L2 / L3 в конце vdev.

Все 8 дисков в пуле одной модели, Seagate Barracuda 500GB . Тем не менее, я помню, что начал пул с 4 дисков, затем один из них умер, и был заменен по гарантии на Seagate. Позже я добавил еще 4 диска. По этой причине идентификаторы дисковода и прошивки разные:

[user@host ~]$ dmesg | egrep '^da.*?: <'
da0:  <VMware, VMware Virtual S 1.0> Fixed Direct Access SCSI-2 device 
da1:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da2:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da3:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da4:  <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device 
da5:  <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device 
da6:  <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device 
da7:  <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device 
da8:  <ATA ST3500418AS CC35> Fixed Direct Access SCSI-5 device 
da9:  <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 
da10: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 
da11: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 
da12: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device 

Я помню, что все диски имели одинаковый размер. Если посмотреть на диски, то видно, что для трех из них размер изменился, они сократились на 2 МБ:

[user@host ~]$ dmesg | egrep '^da.*?: .*?MB '
da0:   10240MB (20971520  512 byte sectors: 255H 63S/T 1305C)
da1:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da2:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da3:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da4:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da5:  476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da6:  476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da7:  476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da8:  476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da9:  152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da10: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da11: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da12: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)

Таким образом, судя по всему, это была не одна из установок ОС, которая «записывала загрузчик на один из дисков» (как я предполагал ранее), это была фактически новая материнская плата ( ASUS P8P67 LE ), создающая хост размером 2 МБ защищенная область в конце трех дисков, которые испортили мои метаданные ZFS.

Почему он не создал HPA на всех дисках? Я считаю, что это потому, что создание HPA выполняется только на старых дисках с ошибкой, которая была исправлена ​​позже обновлением BIOS жесткого диска Seagate: когда весь этот инцидент начался пару недель назад, я запустил Seagate SeaTools, чтобы проверить, есть ли что-то физически не так с дисками (все еще на старом оборудовании), и я получил сообщение о том, что некоторые из моих дисков нуждаются в обновлении BIOS. Сейчас, когда я пытаюсь воспроизвести точные детали этого сообщения и ссылку на загрузку обновления прошивки, кажется, что поскольку материнская плата создала HPA, обе версии SeaTools DOS не смогли обнаружить рассматриваемые жесткие диски - быстрое invalid partitionили что-то подобное мелькает, когда они начинают, вот и все. По иронии судьбы, они действительно находят набор дисков Samsung.

(Я пропустил болезненные, отнимающие много времени и, в конечном итоге, бесполезные подробности, связанные с использованием оболочки FreeDOS в не-сетевой системе.) В конце я установил Windows 7 на отдельную машину, чтобы запустить Windows SeaTools версия 1.2.0.5. Еще одно замечание о DOS SeaTools: не пытайтесь загружать их автономно - вместо этого потратьте пару минут и создайте загрузочную флешку с удивительным компакт-диском Ultimate Boot, который помимо DOS SeaTools также дает вам много других действительно полезных возможностей. полезные инструменты.

При запуске SeaTools для Windows открывает этот диалог:

Диалог обновления прошивки SeaTools

Ссылки ведут на проверку серийного номера (которая по какой-то причине защищена капчей - моя была «Инвазивные пользователи») и в статье базы знаний об обновлении прошивки. Вероятно, есть дополнительные ссылки, специфичные для модели жесткого диска и некоторых загрузок, а что нет, но я пока не буду следовать этому пути:

Я не буду спешить с обновлением микропрограммы трех дисков одновременно, которые имеют усеченные разделы и являются частью поврежденного пула хранения. Это напрашивается на неприятности. Для начала, обновление прошивки, скорее всего, не может быть отменено - и это может безвозвратно разрушить мои шансы вернуть мои данные.

Поэтому самое первое, что я собираюсь сделать дальше, - это образ дисков и работа с копиями, поэтому есть оригинал, к которому можно вернуться, если что-то пойдет не так. Это может создать дополнительную сложность, поскольку ZFS, вероятно, заметит, что диски были поменяны местами (с помощью серийного номера диска или еще одного UUID или чего-либо еще), даже если это точные битовые копии dd на той же модели жесткого диска. Более того, зпул даже не живет. Мальчик, это может быть сложно.

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

Чтобы очистить три жестких диска, которые будут служить заменой для трех дисков с неисправным BIOS в поврежденном пуле, мне нужно создать место для хранения того, что сейчас там, так что я углублюсь в аппаратный блок и собрать временный zpool из некоторых старых дисков - который я также могу использовать, чтобы проверить, как ZFS справляется с заменой дисков dd'd.

Это может занять некоторое время ...


20111213-1930 + 1100

Обновление 02:

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

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

Я покопался глубоко в устаревшем аппаратном блоке, чтобы собрать достаточно места для хранения, чтобы перенести вещи с отдельных 500-Гбайт дисков, на которые были отражены неисправные диски. Мне также пришлось извлечь несколько жестких дисков из их USB-накопителей, чтобы я мог подключить их напрямую через SATA. Было еще несколько связанных проблем, и некоторые из старых дисков начали выходить из строя, когда я возвращал их в действие, требуя замены zpool, но я пропущу это.

Подсказка: на каком-то этапе в этом было задействовано около 30 жестких дисков. С таким большим количеством оборудования очень важно правильно расположить их; отсоединение кабелей или падение жесткого диска со стола точно не помогут в этом процессе и могут привести к дальнейшему нарушению целостности ваших данных.

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

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

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

Наконец, я отразил проблемные диски на резервные диски, использовал их для zpool и оставил оригинальные отключенные. Резервные диски имеют более новую прошивку, по крайней мере SeaTools не сообщает о каких-либо необходимых обновлениях прошивки. Я сделал зеркалирование с простым дд с одного устройства на другое, например

sudo dd if=/dev/sda of=/dev/sde

Я полагаю, что ZFS замечает смену аппаратного обеспечения (с помощью некоторого UUID жесткого диска или чего-то еще), но, похоже, это не волнует

Однако zpool все еще находился в том же состоянии, недостаточно реплик / поврежденных данных.

Как упоминалось в статье HPA Wikipedia, упомянутой ранее, наличие защищенной области хоста сообщается при загрузке Linux и может быть исследовано с использованием hdparm . Насколько я знаю, во FreeBSD нет инструмента hdparm, но к тому времени у меня все равно были установлены FreeBSD 8.2 и Debian 6.0 в качестве системы с двойной загрузкой, поэтому я загрузился в Linux:

user@host:~$ for i in {a..l}; do sudo hdparm -N /dev/sd$i; done

   ...
/dev/sdd:
 max sectors   = 976773168/976773168, HPA is disabled
/dev/sde:
 max sectors   = 976771055/976773168, HPA is enabled
/dev/sdf:
 max sectors   = 976771055/976773168, HPA is enabled
/dev/sdg:
 max sectors   = 976771055/976773168, HPA is enabled
/dev/sdh:
 max sectors   = 976773168/976773168, HPA is disabled
   ...

Таким образом, проблема, очевидно, заключалась в том, что новая материнская плата создала HPA в пару мегабайт в конце диска, который «скрывал» две верхние метки ZFS, то есть не давал ZFS их видеть.


Бороться с HPA кажется опасным делом. На странице руководства hdparm параметр -N:

Get/set max visible number of sectors, also known as the Host Protected Area setting.
  ...
To change the current max (VERY DANGEROUS, DATA LOSS IS EXTREMELY LIKELY), a new value
should be provided (in base10) immediately following the -N option.
This value is specified as a count of sectors, rather than the "max sector address"
of the drive. Drives have the concept of a temporary (volatile) setting which is lost on
the next hardware reset, as well as a more permanent (non-volatile) value which survives
resets and power cycles.  By default, -N affects only the temporary (volatile) setting.
To change the permanent (non-volatile) value, prepend a leading p character immediately
before the first digit of the value. Drives are supposed to allow only a single permanent
change per session. A hardware reset (or power cycle) is required before another
permanent -N operation can succeed.
  ...

В моем случае, HPA удаляется так:

user@host:~$ sudo hdparm -Np976773168 /dev/sde

/dev/sde:
 setting max visible sectors to 976773168 (permanent)
 max sectors   = 976773168/976773168, HPA is disabled

и так же для других дисков с HPA. Если вы получили не тот диск или что-то с указанным вами параметром размера неправдоподобно, hdparm достаточно умен, чтобы понять:

user@host:~$ sudo hdparm -Np976773168 /dev/sdx

/dev/sdx:
 setting max visible sectors to 976773168 (permanent)
Use of -Nnnnnn is VERY DANGEROUS.
You have requested reducing the apparent size of the drive.
This is a BAD idea, and can easily destroy all of the drive's contents.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.

После этого я перезапустил виртуальную машину FreeBSD 7.2, на которой изначально был создан zpool, и статус zpool снова сообщил о рабочем пуле. УРА! :-)

Я экспортировал пул в виртуальную систему и повторно импортировал его в хост-систему FreeBSD 8.2.

Еще несколько серьезных обновлений оборудования, замена материнской платы, обновление пула ZFS до ZFS 4/15, тщательная очистка, и теперь мой zpool состоит из 8x1TB плюс 8x500GB raidz2 частей:

[user@host ~]$ sudo zpool status
  pool: zpool
 state: ONLINE
 scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
zpool       ONLINE       0     0     0
  raidz2    ONLINE       0     0     0
    ad0     ONLINE       0     0     0
    ad1     ONLINE       0     0     0
    ad2     ONLINE       0     0     0
    ad3     ONLINE       0     0     0
    ad8     ONLINE       0     0     0
    ad10    ONLINE       0     0     0
    ad14    ONLINE       0     0     0
    ad16    ONLINE       0     0     0
  raidz2    ONLINE       0     0     0
    da0     ONLINE       0     0     0
    da1     ONLINE       0     0     0
    da2     ONLINE       0     0     0
    da3     ONLINE       0     0     0
    da4     ONLINE       0     0     0
    da5     ONLINE       0     0     0
    da6     ONLINE       0     0     0
    da7     ONLINE       0     0     0

errors: No known data errors

[user@host ~]$ df -h
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/label/root     29G     13G     14G    49%    /
devfs              1.0K    1.0K      0B   100%    /dev
zpool              8.0T    3.6T    4.5T    44%    /mnt/zpool

И последнее слово: мне кажется, что пулы ZFS очень и очень трудно убить. У парней из Sun, которые создали эту систему, есть все основания называть это последним словом в файловых системах. Респект!

ССК
источник
2
Прежде чем что-то делать, представьте себе эти диски! Сделайте резервную копию ваших «поврежденных» данных на случай, если вам станет хуже.
MikeyB
да, это очень хороший момент! и это также причина, почему я еще не обновил эту статью с моим прогрессом - все еще занят очисткой сменных жестких дисков ...
ssc

Ответы:

24

Проблема заключалась в том, что BIOS новой материнской платы создавал защищенную область хоста (HPA) на некоторых дисках, небольшую часть, используемую OEM-производителями для восстановления системы, обычно расположенную в конце жесткого диска.

ZFS поддерживает 4 метки с метаинформацией раздела, а HPA не позволяет ZFS видеть две верхние.

Решение: загрузите Linux, используйте hdparm для проверки и удаления HPA. Будьте очень осторожны, это может легко уничтожить ваши данные навсегда. Обратитесь к статье и справочной странице hdparm (параметр -N) для деталей.

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

ССК
источник
5

Самое первое, что я бы порекомендовал вам сделать, это получить еще несколько жестких дисков и сделать дубликаты восьми дисков, которые у вас есть, с вашими данными на них, используя ddкоманду. Таким образом, если в ваших попытках восстановить их вы все ухудшите, вы все равно сможете вернуться к этому исходному уровню.

Я делал это раньше, и были времена, когда мне это не нужно, но время, когда мне это было нужно, делало это полностью стоящим усилий.

Не работай без сети.

Шон Рейфшнайдер
источник
На самом деле, я бы порекомендовал ddrescueзакончить dd. На самом деле это не работает по-другому, когда приводы функционируют идеально (но дает хороший индикатор прогресса), но если есть какие-либо проблемные сектора или что-то в этом роде, ddrescue обрабатывает эту ситуацию намного лучше, чем dd (или я мне сказали).
CVn
2

Вы, кажется, на пути к решению этого. Если вам нужна другая, возможно, более новая точка зрения, вы можете попробовать живой CD Solaris 11 Express. Там, вероятно, работает намного более новый код (zpool в Solaris теперь в версии 31, тогда как вы в версии 6), и он может предложить лучшие возможности восстановления. Не запускайте zpool upgradeпод Solaris, если хотите, чтобы пул монтировался под FreeBSD.

Якоб Борг
источник
Спасибо за этот совет! :-) Я изучал OpenSolaris примерно в 2009 году, когда начинал весь этот бизнес с ZFS, но, к сожалению, он не поддерживал используемые мной контроллеры - в конце концов, это аппаратное обеспечение потребительского уровня. Совсем недавно я также посмотрел на OpenIndiana, но я не уверен, что ситуация изменилась. Я мог бы обновить контроллеры до SAS на каком-то этапе и рассмотреть вопрос о миграции.
ССК
Я думаю, что OpenIndiana может стоить нового взгляда. Если ничего другого, они могут быть более дружественными к «дешевому» оборудованию, чем Oracle ... Я рекомендовал live CD, потому что его легко опробовать - вы также можете запустить его на виртуальной машине.
Якоб Борг
1

Списки рассылки FreeBSD могут быть хорошей отправной точкой для вашего поиска. Я помню, как видел похожие запросы на FreeBSD-Stable и -Current. Однако, в зависимости от важности ваших данных, вы можете обратиться в профессиональную фирму по восстановлению, поскольку вмешательство в недоступные пулы хранения данных дает хорошие шансы ухудшить ситуацию.

Андреас Туррифф
источник
1

У меня возникла аналогичная проблема после обновления с FreeBSD 10.3 до 11.1, после чего произошел сбой zpool, и не было никакого способа восстановить данные, даже если zdb -lllвсе четыре метки верны.

Оказывается, что обновление каким-то образом спровоцировало драйверы управления хранением данных Intel для создания мягкого зеркала на дисках (возможно, оно было включено, но не поддерживается geomпровайдером Intel до обновления?), И это заблокировало ZFS для монтирования дисков.

Присоединение их к другому ПК с включенной микропрограммой Intel RST при загрузке и отключение softraid ( очень важно: существует два способа сломать softraid, по умолчанию которого инициализируются (иначе форматы!) Диски. Вам нужно выбрать опцию отключите, не касаясь данных), а затем позвольте ZFS распознать первый диск в зеркале, хотя я ничего не сделал, чтобы позволить ему идентифицировать оставшиеся диски как те, которые были в предварительном обновлении машины. К счастью, это был zpool с зеркальным отображением, и я смог просто отсоединить и снова подключить диски к рассматриваемому пулу, и повторная установка завершена без событий.

Примечание: в моем случае hdparm(запущенный с живого ISO-сервера Ubuntu) сообщалось, что HBA отключен на всех дисках и не может помочь.

Махмуд Аль-Кудси
источник
-2

если бы это была просто проблема с разделом, я бы добавил разделы диска + MBR и просто сделал бы раздел нужного размера ...

если вы не форматируете раздел, создание или изменение таблицы разделов ни на что не влияет (так что вы можете откатить это!), пока нет формата, тогда большая часть данных остается там / доступна, если новый раздел вставлен в конце диска у вас могут быть испорченные файлы там, где новый материал был записан с трудом, поэтому ваш единственный прием для этого трюка, пока вы не отформатируете (новый mbr, таблица файлов и т. д ...)

NPN
источник