Назад | Перейти на главную страницу

Повреждение CentOS Superblock?

Я использую CentOS 5.2, и у меня проблема с загрузкой двух серверов баз данных. Наш ИТ-отдел провел обновление SAN на выходных, и теперь я не могу загрузиться - они говорят, что обновление прошло нормально, но, очевидно, что-то произошло. Ошибка, которую я получаю при загрузке, заключается в следующем:

fsck.ext3: No such file or directory while trying to open /dev/VolGroup01/db

У меня есть внешний консультант, который смотрит на это и говорит, что это проблема суперблока, которую нельзя исправить, но считает, что это можно исправить (по крайней мере, в соответствии с этим; http://www.cyberciti.biz/faq/recover-bad-superblock-from-corrupted-partition/)

У кого-нибудь есть предложения или указатели? Кроме того, для справки в будущем, какие резервные копии следует хранить помимо моих данных?


Совершенно отчаявшись и готов заплатить за выздоровление на данный момент.

И все обратно и зафиксировано. Оказывается, кто-то по ошибке смонтировал LUN на машине с Windows, затем удалил и поместил их на виртуальные машины CentOS, не думая, что это вызовет проблему. Каждый раздел был помечен как «ЗАПИСАННЫЙ РАЗДЕЛ MICROSOFT» - для его восстановления использовались кэшированные настройки LVM.

Я готов поспорить, что вы знаете, что SAN сместил начало физического диска на несколько байтов. Я видел это раньше. Сука - получить файлы с диска, который сделал это, но это возможно.

Если вы запустите 'fdisk -l', получите ли вы сообщения о том, что стартовые цилиндры на устройстве не соединяются? Обычно его заключают в скобки вокруг каждого объявления раздела.

Вам удается найти группы LVM, но не сам диск? Устройство LVM состоит из нескольких дисков SAN и затронуто только одно?

Следующий скрипт собирается пытаться для поиска правильного смещения в / dev / sdb, где начинается ваш раздел lvm. Никаких гарантий, что он что-нибудь найдет. Если это так, возможно, вы сможете восстановить свои данные.

#!/usr/bin/python
import sys
def BoyerMooreHorspool(pattern, text):
    m = len(pattern)
    n = len(text)
    if m > n: return -1
    skip = []
    for k in range(256): skip.append(m)
    for k in range(m - 1): skip[ord(pattern[k])] = m - k - 1
    skip = tuple(skip)
    k = m - 1
    while k < n:
        j = m - 1; i = k
        while j >= 0 and text[i] == pattern[j]:
            j -= 1; i -= 1
        if j == -1: return i + 1
        k += skip[ord(text[k])]
    return -1

if __name__ == '__main__':
   giveup = 1024*1024*1024*2
   lba_offset = 0
   text = ""
   disk = open('/dev/sdb', 'r')
   while disk.tell() < giveup:
      #print "Checking: %f" % (lba_offset/(1024*1024))
      text = disk.read(1048576)
      s = BoyerMooreHorspool("\x00\x00\x00LVM2", text)
      if s > -1:
         print "Try offset: %d" % ((lba_offset+int(s))-533)
         sys.exit(0)
      else:
         lba_offset += 1048576
   print "Unable to find LVM position!"

Вы можете вернуть то, что получаете?

Загрузитесь в однопользовательском режиме и закомментируйте строку, монтирующую эту файловую систему, в / etc / fstab. Это должно позволить вам загрузиться и посмотреть, почему эта файловая система не монтируется.