mount :/new _root :неправильный тип файловой системы, неверный суперблок в /dev/nvme0n1p4, отсутствующая кодовая страница или вспомогательная программа или другая ошибка

Использование ddiffиз GNU dateutilsиbash:

#!/bin/bash

paste STARTED COMPLETED |
while IFS=$'\t' read start compl; do
    if [ "$start" = "INVALID" ] || [ "$compl" = "INVALID" ]; then
        echo 'INVALID'
    else
        ddiff -f '%0H:%0M:%0S' "$start" "$compl"
    fi
done

Предполагая, что входные файлы называются STARTEDи COMPLETED, это создает ввод с разделителями табуляции -для цикла whileс временем начала в первом поле и временем завершения во втором поле. Он читает их и проверяет, соответствует ли какое-либо из двух значений времени INVALID. Если нет, он вызывает ddiffвместе с ними.

Вывод этого может быть сохранен в файл с перенаправлением после doneв конце или после имени скрипта в командной строке при вызове скрипта.

Запуск на предоставленных данных:

$ bash script.sh
00:02:13
01:00:55
07:01:36
INVALID
INVALID
0
08.03.2021, 10:41
1 ответ

Если вы не использовали resize2fsдля сжатия файловой системы перед использованием cfdiskдля сжатия раздела, в котором она расположена, вы обрезаете хвостовую часть файловой системы. Теперь система обнаруживает, что файловая система претендует на больший размер, чем раздел, в котором она расположена, что является ошибкой.

В то время как файловая система ext2/3/4 может быть увеличена во время ее использования, сжатие по-прежнему требует ее предварительного размонтирования. И похоже, что /dev/nvme0n1p4— это ваша корневая файловая система, которую нельзя легко размонтировать из /и требуются специальные шаги для монтирования, чтобы/(смонтировать ее куда-то еще, свести к минимуму количество запущенных процессов и использовать pivot_rootдля переключитесь на новую корневую файловую систему ), так что высока вероятность того, что вы не использовали надлежащую процедуру для изменения размера вашей корневой файловой системы.

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

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

Вам потребуется загрузить систему с живого носителя, а затем использовать его для монтирования и резервного копирования содержимого нового созданного вами раздела (, если таковой имеется ), затем удалить этот раздел и восстановить /dev/nvme0n1p4раздел вернуться к исходному размеру. Затем вы сможете запустить на нем e2fsck -C0 /dev/nvme0n1p4, чтобы проверить наличие ошибок (и, надеюсь, исправить все, что могло быть вызвано частичной перезаписью хвостовой части файловой системы ).

Затем, все еще находясь в среде live media, смонтируйте корневую файловую систему во временное расположение с помощью

mkdir /media/nvme
mount /dev/nvme0n1p4 /media/nvme

и используйте его для редактирования /etc/fstabустановленной ОС (теперь в /media/nvme/etc/fstab), чтобы временно закомментировать любую ссылку на новый раздел, который вы создали.

Затем вы можете выйти из живого носителя и убедиться, что установленная ОС снова нормально загружается.

Затем снова загрузитесь с живого носителя, чтобы правильно изменить размер корневой файловой системы:

1. )Сначала используйте resize2fs /dev/nvme0n1p4 <new-size>для изменения размера файловой системы внутри раздела. Если вы знаете точное количество секторов, которое будет иметь раздел после изменения размера, вы можете использовать его как значение <new-size>. В противном случае вы должны сжать файловую систему до немного меньшего размера, чем вы собираетесь сжать раздел, чтобы защититься от ошибок округления (и базы -2 по сравнению с базой -10 ). в единицах преобразования.

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

3.)Выйдите из живого носителя и загрузитесь в установленную ОС, чтобы убедиться, что она по-прежнему работает нормально. Если вы изменили размер файловой системы до размера, меньшего, чем новый размер раздела, теперь вы можете использовать resize2fs /dev/nvme0n1p4для автоматического -определения текущего размера раздела и расширения файловой системы, чтобы точно соответствовать ему. (Да, это можно сделать во время монтирования файловой системы.)

4. )Теперь вы можете приступить к созданию файловой системы на новом разделе, раскомментировать/добавить для нее строку /etc/fstabи смонтировать новую файловую систему.

0
18.03.2021, 22:27

Теги

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