Недавно я купил новый sshd, чтобы заменить старый на моем ноутбуке, но у меня проблема . Я установил Ubuntu 15.10 на новый и поставил старый на USB-футляр, который у меня есть, но на USB-диске нет раздела (я кричал 5 минут, потому что не могу потерять данные).
Я переместил свой старый диск обратно в отсек для дисков и поместил новый в футляр для USB-накопителя, и все мои данные были здесь нетронутыми, но на USB-диске нет раздела.
Оба диска при подключении к usb правильно показывают модель и завод, но не разделы. Корпус в порядке, протестирован со старым жестким диском, у которого нет раздела GPT / EFI.
Как смонтировать внешний диск, чтобы передавать файлы?
Вывод команд:
$ sudo blkid /dev/sdb
/dev/sdb: PTTYPE="PMBR"
$ sudo parted /dev/sdb print
Error: /dev/sdb: unrecognised disk label
Model: ST1000LM 014-1EJ164 (scsi)
Disk /dev/sdb: 1000GB Sector size (logical/physical): 4096B/4096B
Partition Table: unknown Disk Flags:
$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.0
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: not present
Обратите внимание на эту часть:
Sector size (logical/physical): 4096B/4096B
Этот диск может использовать блоки размером 4 КБ. Я предполагаю, что корпус USB и внутренний контроллер SATA в ноутбуке используют разные стратегии для работы с этим :: один переводит их в традиционные блоки по 512 -байт, а другой может изначально использовать новый размер блока.
Я предполагаю, что когда диск находится в дисковом отсеке ноутбука, вместо этого вы получите этот вывод:
Sector size (logical/physical): 512B/4096B
При использовании схемы разделов GPT это становится проблемой. :Спецификация GPT говорит, что таблица разделов должна начинаться с блока #1. Блок #0 зарезервирован для «защитной MBR», которая просто позволяет более старым системам идентифицировать диск как используемый, даже если они понимают только разметку в стиле MBR -.
Но если вы разбиваете диск, используя эмулированные 512 -байтовые блоки, а затем переключаетесь в собственный режим (, например. при перемещении диска с внутреннего контроллера на USB-накопитель размером 4 КиБ -)блок размером 512 -байтов #1 становится второй восьмой блока размером 4 КиБ -#0.
Соответственно, если вы изначально использовали собственные блоки размером 4 КиБ при разбиении диска, а затем переключились на эмулированные блоки размером 512 -байт, таблица разделов GPT теперь начинается с блока #8.
К сожалению, единственный способ исправить вашу ситуацию без переразметки — это найти более старый внешний USB-адаптер жесткого диска, который специально не может использовать блоки по 4 КиБ, поэтому это приведет к срабатыванию встроенного -диска в 512 -эмуляция байтовых секторов, как это делает внутренний контроллер SATA ноутбука.
С ядром Linux версии 4.14 или новее (или с более ранним ядром, с этим исправлением ), возможно переключение размера логического блока. Если у вас также есть версия losetup
с этим патчем , вы сможете подключить диск к существующему USB-адаптеру,а затем скажите:
losetup -P -b 512 /dev/loop0 /dev/sdb
, чтобы вы могли получить доступ от /dev/sdb
до /dev/loop0
, используя другой размер логического блока. Разделы будут отображаться как /dev/loop0pN
с номером раздела N, или, если эта схема еще не поддерживается вашим дистрибутивом, вы можете опустить параметр -P
и использовать инструмент kpartx
из устройства сопоставления --многолучевой пакет:
kpartx -a /dev/loop0
... для автоматического создания сопоставлений для каждого раздела на вашем петлевом устройстве с именем вроде /dev/mapper/loop0pN
.
Затем вы можете монтировать эти разделы как обычно, только с другим именем устройства.
После размонтирования разделов, процедура отмены этого набора -такова:
kpartx -d /dev/loop0 # only if the use of kpartx was needed
losetup -d /dev/loop0