Сюжет
У меня есть диск 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 в фиксированной позиции, измеряемой в байтах, это бесполезно.
- Форматирование raw-диска без каких-либо разделов работает, но в Ubuntu 11.04 мне приходится вручную монтировать диск (/dev/sdb), так как Hal пытается монтировать несуществующие разделы (/dev/sdb1, /dev/sdb2,…) Несмотря на то, что он правильно определяет метку файловой системы.
- Я могу вручную создать два перекрывающихся раздела, один из которых работает с 4k-секторами, а другой - с 512 секторами, и каждый раз, когда я подключаю диск, один раздел будет недействительным, а другой будет использоваться, но это будет уродливо и хрупко.