Вопрос или проблема
Недавно я купил новый SSHD, чтобы заменить старый в своем ноутбуке, но у меня возникли проблемы. Я установил Ubuntu 15.10 на новый диск и поместил старый в USB-корпус, который у меня есть, но диск на USB не имеет раздела (я кричал 5 минут, потому что не могу потерять данные).
Итак, я вернул старый диск в отсек для дисков и поставил новый в USB-корпус, и все мои данные были на месте, но диск на USB не показывает разделов.
Оба диска в USB-корпусе показывают модель и производителя правильно, но не показывают разделы. Корпус в порядке, проверен со старым HDD, который не имеет GPT/EFI раздела.
Как я могу смонтировать внешний диск, чтобы перенести файлы?
Вывод команд:
$ sudo blkid /dev/sdb
/dev/sdb: PTTYPE="PMBR"
$ sudo parted /dev/sdb print
Error: /dev/sdb: нераспознанная метка диска
Model: ST1000LM 014-1EJ164 (scsi)
Disk /dev/sdb: 1000GB Размер сектора (логический/физический): 4096B/4096B
Partition Table: unknown Disk Flags:
$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.0
Сканирование таблицы разделов:
MBR: защитный
BSD: отсутствует
APM: отсутствует
GPT: отсутствует
Попробуйте поискать в гугле восстановление потерянных разделов. Одним из продуктов является http://findandmount.com/. Он утверждает, что может находить файловые системы, даже если главный загрузочный блок потерял разделы. Я также помню, что использовал продукт на http://www.ultimatebootcd.com/ для этого же, но не могу вспомнить, какой именно.
Попробуйте эту команду
sudo apt-get install exfat-fuse exfat-utils
Обратите внимание на эту часть:
Размер сектора (логический/физический): 4096B/4096B
Этот диск поддерживает использование блоков размером 4KiB. Я предполагаю, что USB-корпус и внутренний SATA-контроллер в ноутбуке используют разные стратегии для работы с этим: один преобразует их в традиционные блоки размером 512 байт, а другой может использовать новый размер блоков нативно.
Я предполагаю, что когда диск находится во внутреннем отсеке ноутбука, вы получите следующий вывод:
Размер сектора (логический/физический): 512B/4096B
С использованием GPT-схемы разбиения это становится проблемой: спецификация GPT предполагает, что таблица разделов должна начинаться с блока №1. Блок №0 зарезервирован для “защитного MBR”, который просто позволяет старым системам идентифицировать диск как используемый, даже если они понимают только MBR-стиль разбиения.
Но если вы разбиваете диск, используя эмулированные 512-байтные блоки, а затем переключаетесь в нативный режим (например, перемещая диск из внутреннего контроллера к USB, поддерживающему 4 KiB), 512-байтный блок №1 становится второй восьмой частью 4 KiB-блока №0.
Соответственно, если вы изначально используете нативные 4 KiB блоки при разбиении диска, а затем переключаетесь на эмулированные 512-байтные блоки, таблица разделов GPT теперь начинается с блока №8.
К сожалению, единственный способ исправить вашу ситуацию без переразбиения – это найти старый внешний USB-адаптер HDD, который специально не может использовать 4 KiB-блоки, чтобы он вызвал бы эмуляцию сектора размером 512 байт, как это делает внутренний SATA-контроллер ноутбука.
С версией ядра Linux 4.14 или новее (или с более старой версией, где есть эта исправленная версия), можно переключить логический размер блока. Если у вас также есть версия losetup
, содержащая эту заплатку, вы сможете иметь свой диск в вашем USB-адаптере и затем выполнить:
losetup -P -b 512 /dev/loop0 /dev/sdb
чтобы получить доступ к /dev/sdb
через /dev/loop0
с использованием другого логического размера блока. Разделы появятся как /dev/loop0pN
, где N – номер раздела, или, если эта схема еще не поддерживается вашей дистрибуцией, вы можете опустить опцию -P
и использовать инструмент kpartx
из пакета device-mapper-multipath:
kpartx -a /dev/loop0
… чтобы автоматически создать отображения для каждого раздела на вашем loop-устройстве, названные вроде /dev/mapper/loop0pN
.
Затем вы можете смонтировать эти устройства разделов обычным образом, просто с другим именем устройства.
После демонтирования устройств разделов процедура для отмены этой настройки такова:
kpartx -d /dev/loop0 # только если использование kpartx было необходимо
losetup -d /dev/loop0
Ответ или решение
Недавно вы приобрели новый SSHD для замены старого диска в вашем ноутбуке, столкнувшись с проблемой монтирования вашего диска, связанной с различиями в способах обработки диска различными интерфейсами. Новый диск был установлен с Ubuntu 15.10, а старый перенесен в USB-кейс, где были замечены проблемы с распознаванием разделов.
При подключении к USB-кейсу ваш диск не отображается должным образом, что вызвано вероятным несоответствием в размере логического сектора, так как USB-кейс использует черновые 4KiB блоки, в то время как внутренний SATA-контроллер ноутбука, вероятно, эмулирует 512-байтовые сектора.
Шаги для решения проблемы:
-
Проблема с распознаванием диска: Ваш старый диск не отображает разделы, когда подключен через USB-кейс, но функционирует корректно при установке внутрь ноутбука. Это возникает из-за различий в стратегии обработки блоков между USB-кейсом и SATA-контроллером.
-
Использование
losetup
: В современных версиях ядра Linux (начиная с версии 4.14) возможно изменение логического размера сектора с помощьюlosetup
. Это позволит вам обойти проблему, создав петлевой (loop) устройство с 512-байтовыми секторами:losetup -P -b 512 /dev/loop0 /dev/sdb
Это создаст устройство
/dev/loop0
, через которое доступ к диску будет осуществляться с нужным размером блока. Разделы будут доступны как/dev/loop0pN
. -
Использование
kpartx
: Если схема именования/dev/loop0pN
не поддерживается в вашей системе, увеличьте поддержку разделов с помощьюkpartx
:kpartx -a /dev/loop0
Это создаст устройства разделов с именами по образцу
/dev/mapper/loop0pN
. -
Монтирование и демонтаж: После монтирования необходимых разделов для копирования данных, завершите процесс, демонтировав все монтированные файловые системы. При необходимости, удалите петлевой интерфейс:
kpartx -d /dev/loop0 # если использовался kpartx losetup -d /dev/loop0
Эти действия должны помочь вам получить доступ к вашим данным без необходимости перепартироваться или рисковать потерей информации. Важно помнить, что эти решения требуют понимания работы с системной утилитой и могут варьироваться в зависимости от конфигурации вашей системы. Убедитесь, что вы создали резервные копии до начала каких-либо манипуляций, чтобы защитить важные данные.