Размер логического сектора изменяется в зависимости от того, подключен ли он через USB или SATA напрямую
У меня есть диск WD объемом 3 ТБ (на внешнем диске My Book Essential). Я использовал parted под Linux, чтобы разбить его на метку диска GPT и загрузить данные с моего ноутбука через USB-кабель. Затем я открыл его и переключил на внутренний SATA-диск на другом компьютере (рабочем столе).
Linux (Fedora 14 на обоих компьютерах) не распознал диск. расстался, сказал нераспознанную метку диска. Он также сообщил, что размер логического сектора составляет 512 байт: "Размер сектора (логический / физический): 512 байт / 4096 байт. Когда я подключил его к ноутбуку через USB, он был указан как 4096/4096.
Я попытался перераспределить его, умножив все смещения секторов на 8, но он все еще не распознал данные. (Не то чтобы я ужасно удивился.)
Если я переключаюсь на USB-соединение на настольном компьютере, он переключается обратно на 4096 байт логических секторов. Таким образом, похоже, что плата контроллера USB использует логические сектора размером 4096 байт. Честно говоря, 4096 имеет больше смысла для меня, учитывая, что это размер аппаратного сектора, но есть ли способ заставить USB или SATA использовать другое значение?
4 ответа
Немного поздно, но у меня была похожая проблема после того, как порт USB на моем жестком диске IOMEGA сломался. Я переключился на другой корпус USB-2-SATA, чтобы обнаружить, что не могу смонтировать раздел EXT4. По какой-то причине в случае IOMEGA размер логического сектора был равен 4096, но в моем новом случае это было всего 512 байт. Это портит таблицу разделов MS-DOS.
Это сводило меня с ума, потому что с помощью testdisk
Мне удалось получить доступ к разделу при изменении размера сектора, но я не нашел способа изменить размер сектора в масштабе всей системы. Оказывается, в этом нет необходимости, поскольку EXT4 не заботится о размере сектора, вам просто нужно найти начало раздела, к которому вы хотите получить доступ.
Быстрое исправление: используйте петлевое устройство для перемещения в правильное положение раздела.
Постоянное исправление: переписать таблицу разделов, соответственно.
В моем случае поврежденный диск был /dev/sdb
,
Мое быстрое исправление было относительно легким, так как у меня был только один раздел, начинающийся в секторе 63.
$ sudo sfdisk -d /dev/sdb
# partition table of /dev/sdb
unit: sectors
/dev/sdb1 : start= 63, size=623708785, Id=83
Теперь нам нужно вычислить позицию раздела, когда размер сектора все еще составлял 4096 байт:
63 sectors * 4096 bytes = 258048 bytes
И использовать это с losetup
:
$ sudo losetup /dev/loop0 /dev/sdb -o 258048
$ sudo mount /dev/loop0 /mnt
Ваш раздел должен быть смонтирован в /mnt
,
Для долгосрочного исправления я использовал sfdisk
чтобы сбросить макет раздела:
$ sudo sfdisk -d /dev/sdb > sdb.partitions.sfdisk.text
Исправление таблицы разделов путем умножения на начальный сектор с 8, где это уместно, - здесь я понял, что моя таблица разделов была как бы прикручена с самого начала.
Я отредактировал дамп таблицы разделов с помощью nano sdb.partitions.sfdisk.text
:
/dev/sdb1 : start= 63, size=623708785, Id=83
чтобы:
/dev/sdb1 : start= 504, size=623708785, Id=83
и позже расширил раздел, чтобы использовать все доступное пространство (которое я определил другими способами):
/dev/sdb1 : start= 504, size=625141944, Id=83
Последний шаг - записать таблицу разделов с помощью:
$ sudo sh -c 'cat sdb.partitions.sfdisk.text | sfdisk /dev/sdb'
Еще один способ (фактически улучшенный упомянутый здесь) для получения временного доступа состоит в использовании losetup
а также kpartx
, Вот что я сделал:
losetup -f /dev/sdl
kpartx -a /dev/loop2
Теперь мы можем использовать /dev/mapper/loop2pX
вместо /dev/sdlX
,
Это обычная особенность современных жестких дисков большой емкости (>= 512 ГБ). Размер сектора преобразуется платой USB в корпусе внешнего жесткого диска, и этот прием, по-видимому, используется для обеспечения совместимости с широким спектром ОС (например, старой Windows XP).
Это было тщательно проверено и описано Saikee здесь: http://forums.justlinux.com/showthread.php?153881-3TB-hard-disk-used-as-external-USB-connection-or-internal-Sata-connection
Что касается вашего второго вопроса, я не нашел никого, кто мог бы изменить и исправить это поведение, даже если теоретически это кажется возможным, привод просто не примет запись.
Новые внешние жесткие диски, такие как бренды WD, используют предопределенные форматы. Таким образом, результаты не гарантируются никакими средствами. Если вы все еще хотите попробовать, я рекомендую низкоуровневый формат. Это может или не может работать.