Таблица разделов не зависит от размера сектора
Сюжет
У меня есть диск WD10JPVT емкостью 1 ТБ в корпусе USB / esata IcyBox IB-290StUS-B.
- Когда я подключаю диск через USB, я получаю 512 логических / 512 физических размеров сектора.
- Когда я подключаю диск через собственный порт esata компьютера, я получаю размер 512 логических / 4k физического сектора.
- Когда я подключаю диск через порт esata AKE Hidden USB 3.0 + eSATA II ExpressCard 54 мм, я получаю физический сектор размером 4 КБ / 4 КБ.
Эта проблема
Проблема заключается в том, что в таблице разделов MBR начало и конец разделов выражаются в виде числа (логических) секторов. Это означает, что если я разделю диск, когда он подключен через порт esata Expresscard, а затем подключу его к USB-порту или собственному порту esata, разделы будут иметь неправильное смещение и неправильный размер, и наоборот.
fdisk
выход
fdisk
Приведенные ниже команды выполняются с использованием Ubuntu 11.04 (natty) и дают те же результаты, что и XUbuntu 12.04 для USB и esata на expresscard, но я не могу протестировать нативный esata, поскольку именно с этого я загружаю Ubuntu 12.04.
Подключен через USB:
> sudo fdisk -l /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c2664
Device Boot Start End Blocks Id System
/dev/sdb1 1 15201 122095104 7 HPFS/NTFS
Подключен через собственный порт esata компьютера:
> sudo fdisk -l /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000c2664
Device Boot Start End Blocks Id System
/dev/sdb1 1 15201 122095104 7 HPFS/NTFS
Подключен через порт esata экспресс-карты:
> sudo fdisk -l /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 15200 cylinders
Units = cylinders of 16065 * 4096 = 65802240 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000c2664
Device Boot Start End Blocks Id System
/dev/sdb1 1 15201 976760832 7 HPFS/NTFS
Решения
- Есть ли способ сохранить "реальный" размер сектора (4 КБ) внутри таблицы разделов MBR?
- Использование таблицы разделов GPT могло бы сработать, но заголовок GPT хранится в секторе 1 диска… и размер сектора варьируется, поэтому, если нет способа сохранить заголовок GPT в фиксированной позиции, измеряемой в байтах, это бесполезно.
- Форматирование диска без каких-либо разделов работает, но в Ubuntu 11.04 мне приходится монтировать диск вручную (/dev/sdb), поскольку Хэл пытается смонтировать несуществующие разделы (/dev/sdb1, /dev/sdb2, …) Несмотря на то, что он правильно определяет метку файловой системы.
- Я могу вручную создать два перекрывающихся раздела, один из которых работает с 4k-секторами, а другой - с 512 секторами, и каждый раз, когда я подключаю диск, один раздел будет недействительным, а другой будет использоваться, но это будет уродливо и хрупко.
1 ответ
Вы провели очень глубокий анализ форматов дисков, как MBR, так и GPT, и кажется, что вы столкнулись с проблемой, о которой не думали в этих стандартах, с форматом, который не зависит от размера логического сектора.
Проблема заключается в том, что диск USB имеет внутренний размер сектора 4 КБ, но использует разные размеры секторов (как логических, так и физических) в зависимости от порта, к которому он подключен. На практике он также претендует на различные конфигурации цилиндров / секторов, хотя это отображение по меньшей мере согласованно.
Изменение этого поведения потребует либо:
- Изменения в прошивке диска
- Изменение протокола, используемого для порта, что означает изменения в драйвере диска, используемом для USB-диска
Оба эти варианта кажутся мне невозможными для себя. Я не нашел на сайте Western Digital обновлений прошивки для вашего диска, и я не искал более качественные драйверы дисков (отчасти потому, что я не знаю, что именно искать, но даже если бы знал, что меня не будет оптимистичный).
Тот же вопрос был задан в следующем посте, начиная с июня 2012 года,
Как заставить Debian использовать размер физического сектора на жестком диске?
Это обнадеживающий принятый ответ (который цитирует статью от июля 2011 года):
Согласно интервью с представителем Western Digital, опубликованным на http://www.techarp.com/showarticle.aspx?artno=734 нет возможности отключить эмуляцию 512e на современных дисках Advanced Format.
[...] будет ли Western Digital предлагать обновления встроенного программного обеспечения, которые позволят преобразовать текущие диски расширенного формата, работающие в режиме эмуляции, в собственный формат?
К сожалению нет. Текущие диски расширенного формата не могут быть преобразованы для работы в собственном формате через обновление прошивки
Я надеюсь, что кто-то другой придумал лучший ответ, но мой собственный ответ, как правило, отрицательный. Я бы не советовал пытаться сфабриковать нестандартный формат GPT/MBR, если вы хотите сохранить ваши данные в безопасности.