- Вопрос или проблема
- Ответ или решение
- Исправление ошибки "Коррупция резервной таблицы GPT"
- 1. Подтверждение наличия ошибки
- 2. Резервное копирование данных
- 3. Резервное копирование схемы разделов
- 4. Тестирование жесткого диска
- 5. Анализ результатов
- 6. Проверка SMART-данных
- 7. Восстановление резервной таблицы GPT
- Заключение
Вопрос или проблема
Я пошел проверить свой диск с помощью команды fdisk -l и обнаружил одно сообщение, которое говорит, что Резервная таблица GPT повреждена, но основная выглядит нормально, поэтому она будет использована.
Я не уверен, о каком диске идет речь, но подозреваю, что это мой загрузочный USB-накопитель объемом 16 ГБ.
Что мне с этим делать?
Вот вывод терминала.
Мы уверены, что вы получили обычную лекцию от местного системного
администратора. Обычно она сводится к трем вещам:
#1) Уважайте личную жизнь других.
#2) Думайте, прежде чем печатать.
#3) С великой силой приходит великая ответственность.
[sudo] пароль для amnesia:
Диск /dev/sda: 298.1 GiB, 320072933376 байт, 625142448 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска:
Устройство Загрузка Начало Конец Секторы Размер Id Тип
/dev/sda1 * 2048 206847 204800 100M 7 HPFS/NTFS/exFAT
/dev/sda2 206848 522741759 522534912 249.2G 7 HPFS/NTFS/exFAT
Резервная таблица GPT повреждена, но основная выглядит нормально, поэтому она будет использована.
Диск /dev/sdb: 14.9 GiB, 16008609792 байт, 31266816 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска:
Устройство Начало Конец Секторы Размер Тип
/dev/sdb1 2048 16779263 16777216 8G EFI Система
/dev/sdb2 16783360 31266782 14483423 6.9G Файловая система Linux
Диск /dev/loop0: 1.1 GiB, 1181437952 байт, 2307496 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Диск /dev/loop1: 75.7 MiB, 79384576 байт, 155048 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Диск /dev/mapper/TailsData_unlocked: 6.9 GiB, 7413415424 байт, 14479327 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Диск /dev/sdc: 1.8 TiB, 2000365289472 байт, 3906963456 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска:
Устройство Начало Конец Секторы Размер Тип
/dev/sdc1 2048 1536002047 1536000000 732.4G Базовые данные Microsoft
/dev/sdc2 1536002048 3072002047 1536000000 732.4G Apple HFS/HFS+
/dev/sdc3 3072002048 3906758655 834756608 398G Файловая система Linux
amnesia@amnesia:~$```
Что ж, если бы вы запустили fdisk -l
— то есть, не указывая устройство, — это, похоже, просканировало все найденные устройства.
Когда оно просканировало /dev/sda
, оно выявило два факта о нем (среди прочего):
- Он использует таблицу разделов в так называемом формате GPT (другой вариант на (старом) оборудовании x86 — так называемый MBR).
- Оно обнаружило, что резервная копия таблицы разделов GPT повреждена, но основная в порядке.
Затем оно продолжило и считывало основную копию и выводило данные из нее. Затем оно сделало то же самое для других накопителей.
Что мне с этим делать?
На этот вопрос не совсем легко ответить.
Очевидным, поверхностным ответом будет восстановить резервную копию и закончить на этом. Вот как.
Но тот факт, что она повреждена, может быть сигналом о том, что оборудование диска выходит из строя. Хотя это не обязательно.
Я бы сделал следующее.
-
Создайте резервную копию всех данных с этого диска где-нибудь,
используя привычный способ копирования файлов,tar
или то, что вам удобно. -
Создайте резервную копию данных его разделов:
# sfdisk --dump /dev/sda > /path/to/sda.part
-
Запустите тест на нагрузку оборудования устройства;
древнийbadblocks
может подойти:# badblocks -s -w -p N /dev/sda
(Вы также можете добавить
-v
, чтобы он был более разговорчивым, хотя-s
обычно достаточно.)Обратите внимание на
-w
— “разрушающий тест на чтение/запись”, — и-p N
, который устанавливает количество проходов наN
. Выберите это число как минимум, не знаю, 4.Позвольте мне повторить: запуск тестов в режиме
-w
уничтожит все данные на диске. Но взамен этот режим максимально нагружает диск. -
После завершения
badblocks
(это может занять время — особенно с большимN
), посмотрите, что он сообщил.Если он сообщил об ошибках, ваш диск следует считать мертвым и выбросить или обменять его, если он все еще на гарантии.
-
Если
badblocks
сказал, что с диском ничего не накреплено, запуститеsmartctl
из пакетаsmartmontools
:# smartctl --all /dev/sda
и затем обратите пристальное внимание на несколько моментов:
-
Журнал ошибок; на действительно исправном диске он должен быть пустым.
-
Переменные SMART, связанные с плохими блоками:
Reallocated_Event_Count
,Current_Pending_Sector
,Offline_Uncorrectable
. Эти переменные означают, соответственно: количество секторов (блоков), переназначенных, количество блоков, в настоящее время считаемых плохими и тестируемых микропрограммным обеспечением диска, количество секторов, найденных микропрограммным обеспечением диска как плохие, но которые не могут быть переназначены, так как таблица свободных секторов для переназначения была исчерпана предыдущими плохими блоками.
(Может быть, хорошая идея ознакомиться с SMART в общем.)
Если вы видите что-то неправильное в этих показаниях, лучше не полагаться на диск.
-
-
В конце концов, если все в порядке, вы можете с определенной степенью уверенности утверждать, что повреждение резервной копии GPT было вызвано какими-то неизвестными факторами (инопланетянами, иллюминатами и т. д.) и продолжить восстановление диска:
-
Восстановите таблицу разделов:
# sfdisk /dev/sda < /path/to/sda.part
-
Убедитесь, что ОС видит новые разделы:
# blockdev –rereadpt /dev/sda
-
Воссоздайте файловые системы на восстановленных разделах, используя любые инструменты, которые вам нравятся (похоже, что оба раздела являются exFAT).
-
Восстановите файлы.
-
Ответ или решение
Исправление ошибки "Коррупция резервной таблицы GPT"
Если вы столкнулись с сообщением о том, что резервная таблица GPT повреждена, это может быть причиной серьезного беспокойства, особенно если это относится к жесткому диску или USB-накопителю, содержащему важные данные. Учитывая, что вы уже выполнили команду fdisk -l
, которая показала это предупреждение, вот пошаговый план по устранению проблемы.
1. Подтверждение наличия ошибки
Сначала убедитесь, что вы точно понимаете, к какому устройству относится предупреждение. Ваша командная строка показывает, что /dev/sda
и /dev/sdb
могут вызывать беспокойство. Что касается /dev/sdb
, это выглядит как ваш USB-накопитель, который использует таблицу разделов GPT. В этой ситуации важно знать, что первичная таблица GPT в порядке, но резервная — повреждена.
2. Резервное копирование данных
Перед выполнением каких-либо действий с диском, обязательно создайте резервную копию данных. Это самый важный шаг для предотвращения потери информации:
# Копирование данных с диска
cp -r /путь/к/данным /путь/куда/сохранить/резервное/копирование
3. Резервное копирование схемы разделов
Для восстановления или дальнейших действий полезно сохранить схемы разделов:
# Экспорт сохраненной схемы разделов
sfdisk --dump /dev/sdb > /путь/к/файлу/sdb.part
4. Тестирование жесткого диска
Коррупция резервной таблицы GPT может указывать на возможные проблемы с оборудованием, поэтому рекомендуется выполнить проверку диска. Вы можете использовать утилиту badblocks
:
# Тестирование на наличие поврежденных секторов
badblocks -s -w -p 4 /dev/sdb
Обратите внимание: Параметр -w
приведет к уничтожению всех данных на диске, поэтому используйте его с осторожностью!
5. Анализ результатов
После завершения тестов badblocks
, внимательно изучите отчеты. Если обнаружены сбойные блоки, это может свидетельствовать о том, что диск вышел из строя и его следует заменить.
6. Проверка SMART-данных
Если тестирование не выявило проблем, выполните диагностику с помощью smartctl
:
smartctl --all /dev/sdb
Обратите внимание на следующие параметры:
- Ошибки в логах: Должны быть пустыми.
- Счетчики переallocated blocks: Высокие значения могут указывать на проблемы с диском.
7. Восстановление резервной таблицы GPT
Если проверки пройдены успешно, можно восстановить резервную таблицу GPT:
- Восстановите схему разделов:
sfdisk /dev/sdb < /путь/к/файлу/sdb.part
- Убедитесь, что ОС распознала новые разделы:
blockdev --rereadpt /dev/sdb
- Воссоздайте файловые системы на восстановленных разделах (например, exFAT):
mkfs.exfat /dev/sdb1
mkfs.ext4 /dev/sdb2
- Восстановите файлы из резервной копии.
Заключение
Обязательно следите за состоянием дисков и регулярно создавайте резервные копии данных, чтобы минимизировать риск потери информации. Если возникнут любые проблемы, не стесняйтесь обращаться за помощью к профессионалам.