Не может смонтировать RAID после обновления

-type f говорит находят, чтобы только распечатать файлы типа f т.е. простые файлы, не каталоги, не символьные ссылки и не файлы устройств. man find затем поиск -f опция.

3
25.05.2014, 02:36
1 ответ

плохая геометрия: количество блоков 61034935 превышает размер устройства (61034912 блоков)

Согласно этим сообщениям об ошибке, кажется, что ваш RAID сократился на несколько блоков; что является необычной проблемой, учитывая, что [118298]0.90[118299] метаданные находятся в конце, а [118300]ext3[118301] метаданные находятся в начале раздела, так что размер раздела сам по себе не мог измениться, так как такое изменение на обоих концах привело бы к отсутствию метаданных.

C:\Python27\python
Я не могу представить, как это произошло; чтобы сломать все это намеренно, вам пришлось бы сделать что-то вроде запуска [118302]resize2fs[118303] на дисках-членов вместо самого RAID; или начать без RAID и добавлять его только после.

Так как это [118304]RAID1[118305] и метаданные рейда находятся в конце диска, вы должны быть в состоянии смонтировать любой из дисков напрямую. Простой способ проверить это - с помощью устройства с циклом только для чтения. При условии, что файловая система не имеет дефектного/грязного суперблока, это должно сделать:

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

Если файловая система также требует [118306]fsck[118307], самый безопасный способ сделать это - скопировать весь раздел с помощью [118308]dd[118309], а затем [118310]fsck[118311] образа.

Если это сработает, вы, возможно, сможете исправить ваш RAID на месте, используя следующие шаги:

Function SearchReplace()
    Dim db As DAO.Database, rs As DAO.Recordset, sSQL As String, sData As String

    'Get the record set we wish to modify
    Set db = CurrentDb
    sSQL = "SELECT * FROM Table1"                     '[replace table name]
    Set rs = db.OpenRecordset(sSQL)

    'iterate through each record
    While Not rs.EOF

        'check for the matching sub string in the field "data"
        sData = rs![Data]                             '[replace target field]
        If InStr(1, sData, "~~") Then

            'modify the data string, replacing "~~" with a line break
            sData = Replace(sData, "~~", vbCrLf)

            'escape any ' characters to avoid errors and/or injection
            sData = Replace(sData, "'", "''")

            'update the table with the modified string'
            sSQL = "UPDATE Table1" & _                '[replace table name]
                   " SET data='" & sData & "'" & _     '[replace target field]
                   " WHERE [ID] = " & rs![ID]          '[replace PK field]
            db.Execute sSQL

        End If

        rs.MoveNext
    Wend

    'destroy record set to be tidy
    rs.Close
    Set rs = Nothing

End Function
извлеките другой диск:
# mdadm /dev/md0 --fail /dev/sdb7. # mdadm /dev/md0 --remove /dev/sdb7

исправить и изменить размер файловой системы на оставшемся диске. размер блока взят из сообщения об ошибке, которое вы предоставили

UPDATE Table1 
SET data = Replace([data],"~~",Chr(13) + Chr(10));

# fsck /dev/sdc7 # resize2fs /dev/sdc7 61034912 # синхронизация

проверка, работало ли оно

# echo 3 > /proc/sys/vm/drop_caches # " mount /dev/md0 /mnt/somewhere считывание и повторная синхронизация другого диска

# mdadm /dev/md0 --add /dev/sdb7

Однако, вы можете рассмотреть возможность воссоздания RAID с нуля с помощью текущих метаданных ([118320]1.2[118321]) и переделать файловую систему и скопировать файлы обратно на нее.[117988].

3
27.01.2020, 21:23

Теги

Похожие вопросы