Жесткий диск WD10EARS с сектором 4 КБ. Подготовка к эксплуатации в Linux.

Аватар пользователя rlab

Исходя из специфики работы автору приходится регулярно приобретать различные новые жесткие диски, как правило для сохранения посекторных копий с неисправных накопителей.
На этот раз для этих целей был приобретен терабайтный винчестер фирмы Western Digital, модель WD10EARS-00Y5B1. В винчестере используется технология «Advanced Format», что в переводе на русский означает новый внутренний (низкоуровневый) формат с размером сектора 4096 байт (4 КБ) вместо устоявшегося за десятки лет стандартного 512-байтного сектора.
Теоретически, никаких особых нюансов в работе с этим винчестером быть не должно, т. к. он представляется как обычный НЖМД со стандартным сектором 512 Байт (разумеется, это эмулируется самим накопителем), что видно из его идентификационных данных, обозначенных на наклейке - LBA: 1953525168. Подверждение этому получаем и (забегая немного наперед) программно:

root@tazik001:~# hdparm -I /dev/sdb | grep LBA48 
        LBA48 user addressable sectors: 1953525168 
root@tazik001:~# hdparm -I /dev/sdb | grep Sector\ size 
        Logical/Physical Sector size:          512 bytes 

Тем не менее, производитель почему-то настойчиво акцентирует внимание на предварительной подготовке накопителя для работы в «устаревших» системах, о чем пишет на крышке самого накопителя и дополнительно дублирует на наклейке на упаковочном кульке. Причем явно указана только Windows XP. Для остальных ОС «drive is ready for use as is», что можно интерпретировать как «подготовки не требует», так и «ешьте, что дают Улыбка ».
Разумеется, мы зададимся вопросом, есть ли особенности в работе этого HDD в Linux, раз ни прямо ни косвенно об этом не упоминается.
Исследования ведутся на IBM-PC совместимом компьютере, собранном на базе материнской платы ECS KV2 Extreme (чипсет VIA K8T880+VT8237R с дополнительным контроллером PATA+SATA на SiS 180, к которому и подключается испытуемый винчестер), процессор Athlon64 3700+, 1ГБ ОЗУ. Установлен частично русифицированный Slackware-12.1, проапгрейжен hdparm с 8.6 до 9.27.

Как издавна на Руси повелось, перво-наперво ориентируемся в пространстве:

root@tazik001:~# fdisk -l 
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт 
255 heads, 63 sectors/track, 121601 cylinders 
Units = цилиндры of 16065 * 512 = 8225280 bytes 
Disk identifier: 0x000945ef 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sda1                 1          127      1020096     b   W95 FAT32
/dev/sda2               128         5099     39937590    83   Linux
/dev/sda3    *         5100        10071     39937590     7   HPFS/NTFS
/dev/sda4             10072       121601    895864725     7   HPFS/NTFS
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт 
255 heads, 63 sectors/track, 121601 cylinders 
Units = цилиндры of 16065 * 512 = 8225280 bytes 
Disk identifier: 0x00000000 
На диске /dev/sdb отсутствует верная таблица разделов 

Уточняем устройство для экспериментов:

root@tazik001:~# hdparm -i /dev/sdb | grep Model
 Model=WDC WD10EARS-00Y5B1, FwRev=80.00A80, SerialNo=WD-WCAV55974950 

Тест скорости чтения:

root@tazik001:~# hdparm -t /dev/sdb 
/dev/sdb:
 Timing buffered disk reads: 302 MB in 3.01 seconds = 100.48 MB/sec 

Тест скорости чтения посредством dd:

root@tazik001:~# dd if=/dev/sdb of=/dev/null bs=128K count=20000
20000+0 записей считано
20000+0 записей написано
 скопировано 2621440000 байт (2,6 GB), 24,372 c, 108 MB/c 
Тест скорости записи посредством dd: 
root@tazik001:~# dd if=/dev/zero of=/dev/sdb bs=128K count=20000
20000+0 записей считано
20000+0 записей написано
 скопировано 2621440000 байт (2,6 GB), 24,2364 c, 108 MB/c 

Теперь создаём один основной раздел на всю «поляну»:

root@tazik001:~# fdisk /dev/sdb 
Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 1
Первый цилиндр (1-121601, по умолчанию 1):
Используется значение по умолчанию 1
Последний цилиндр или +size или +sizeM или +sizeK (1-121601, по умолчанию 121601):
Используется значение по умолчанию 121601
Команда (m для справки): p
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x15f317bf 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sdb1                 1       121601    976760001    83   Linux
Команда (m для справки): w
Таблица разделов была изменена!
Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

Форматируем новый раздел:

root@tazik001:~# mkfs.reiserfs /dev/sdb1

Монтируем файловую систему раздела:

root@tazik001:~# mount /dev/sdb1 /mnt/hd

Проверяем скорость записи данных в файловую систему.
(Для наблюдения за скоростью здесь и в последующих аналогичных случаях на втором терминале вводим watch -n60 killall -SIGUSR1 dd, либо, чтоб не топтать лишний раз клавиши, запишем команду в файл и сделаем его исполняемым.)

root@tazik001:~# dd if=/dev/zero of=/mnt/hd/000.dd bs=128K count=100000
16140+0 записей считано
16140+0 записей написано
 скопировано 2115502080 байт (2,1 GB), 56,9052 c, 37,2 MB/c
32379+0 записей считано
32379+0 записей написано
 скопировано 4243980288 байт (4,2 GB), 117,056 c, 36,3 MB/c
46439+0 записей считано
46439+0 записей написано
 скопировано 6086852608 байт (6,1 GB), 177,719 c, 34,2 MB/c
65859+0 записей считано
65859+0 записей написано
 скопировано 8632270848 байт (8,6 GB), 237,151 c, 36,4 MB/c
75811+0 записей считано
75811+0 записей написано
 скопировано 9936699392 байта (9,9 GB), 297,219 c, 33,4 MB/c
90639+0 записей считано
90639+0 записей написано
 скопировано 11880235008 байт (12 GB), 357,965 c, 33,2 MB/c
100000+0 записей считано
100000+0 записей написано
 скопировано 13107200000 байт (13 GB), 399,318 c, 32,8 MB/c

Оба-на! Скорость записи втрое ниже ожидаемой.
(Между делом замечу, что скорость чтения этого же файла вполне на уровне - около 100 МБ/сек. Баг вылазит только на записи.)
Может ReiserFS «глючная» Улыбка ? Проверим «грязным хаком» Улыбка .
Сначала отмонтируемся:

root@tazik001:~# umount /dev/sdb1

Потом сотрем содержимое нулевого сектора:

root@tazik001:~# dd if=/dev/zero of=/dev/sdb count=1

А потом создадим новую файловую систему прямо на жестком диске как на дискете (ключ -f - форсировать выполнение ни о чем не предупреждая):

root@tazik001:~# root@tazik001:~# mkfs.reiserfs -f /dev/sdb

Монтируем:

root@tazik001:~# mount /dev/sdb /mnt/hd

Пишем:

root@tazik001:~# dd if=/dev/zero of=/mnt/hd/000.dd bs=128K count=100000
17877+0 записей считано
17877+0 записей написано
 скопировано 2343174144 байта (2,3 GB), 27,8018 c, 84,3 MB/c 
53827+0 записей считано 
53827+0 записей написано 
 скопировано 7055212544 байта (7,1 GB), 87,8909 c, 80,3 MB/c 
89724+0 записей считано 
89724+0 записей написано 
 скопировано 11760304128 байт (12 GB), 148,018 c, 79,5 MB/c 
100000+0 записей считано 
100000+0 записей написано 
 скопировано 13107200000 байт (13 GB), 165,614 c, 79,1 MB/c 

Совсем другое дело! Видим, что проблема не в файловой системе. Видим также, что винчестеру совершенно не нравится традиционная MS-DOS MBR совместимая разметка с началом раздела на 63-м стандартном 512-байтном секторе, с номером, не кратным размеру нового «хардверного» сектора в 4 КБ (8 «традиционных» секторов по 512 Б). Попробуем обойти это. Отмонтируем файловую, очищаем 0-й сектор для дальнейшей работы:

root@tazik001:~# umount /dev/sdb 
root@tazik001:~# dd if=/dev/zero of=/dev/sdb count=1 

Попробуем создать fdisk'ом раздел с началом на 64-м секторе. Для ввода границ раздела в секторах (LBA), а не в стандартном LCHS применим ключ -u. Акцентирую внимание на том, что fdisk по умолчанию предлагает сектор 63!

root@tazik001:~# fdisk -u /dev/sdb 
Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 1
Первый сектор (63-1953525167, по умолчанию 63): 64
Последний сектор или +size или +sizeM или +sizeK (64-1953525167, по умолчанию 1953525167):
Используется значение по умолчанию 1953525167
Команда (m для справки): p
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders, всего 1953525168 секторов
Units = секторы of 1 * 512 = 512 bytes
Disk identifier: 0x5e5c7cb9 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sdb1                64  19535251671    976762552    83   Linux
Команда (m для справки): w
Таблица разделов была изменена!
Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

Форматируем, монтируем:

root@tazik001:~# mkfs.reiserfs /dev/sdb1
root@tazik001:~# mount /dev/sdb1 /mnt/hd

Проверяем скорость записи на раздел:

root@tazik001:~# dd if=/dev/zero of=/mnt/hd/000.dd bs=128K count=100000
2889+0 записей считано 
2889+0 записей написано
 скопировано 378667008 байт (379 MB), 4,32944 c, 87,5 MB/c 
42386+0 записей считано 
42386+0 записей написано 
 скопировано 5555617792 байта (5,6 GB), 64,369 c, 86,3 MB/c 
87304+0 записей считано 
87304+0 записей написано 
 скопировано 11443109888 байт (11 GB), 124,384 c, 92,0 MB/c 
100000+0 записей считано 
100000+0 записей написано 
 скопировано 13107200000 байт (13 GB), 140,365 c, 93,4 MB/c 

В целом недурно и значительно ближе к максимально возможной скорости записи.
При организации 2-х и более первичных разделов придерживаемся того же правила: начало каждого раздела должно быть на секторе с номером, кратным как минимум 8-ми. Для этого рассчитываем на калькуляторе кратным 8-ми (минус 1 сектор) номер последнего сектора предыдущего раздела и вводим его fdisk'ом . Требуемый «правильный» номер начального сектора следующего раздела fdisk предложит по умолчанию сам.
В этом примере номер сектора второго раздела я подобрал кратным 64-м:

root@tazik001:~# fdisk -u /dev/sdb 
Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 1
Первый сектор (63-1953525167, по умолчанию 63): 64
Последний сектор или +size или +sizeM или +sizeK (64-1953525167, по умолчанию 1953525167): 976639999
Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 2
Первый сектор (976640000-1953525167, по умолчанию 976640000):
Используется значение по умолчанию 976640000 
Последний сектор или +size или +sizeM или +sizeK (976640000-1953525167, по умолчанию 1953525167): 
Используется значение по умолчанию 1953525167 
Команда (m для справки): p
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders, всего 1953525168 секторов
Units = секторы of 1 * 512 = 512 bytes
Disk identifier: 0x17d66173 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sdb1                64    976639999    488319968    83   Linux
/dev/sdb2         976640000   1953525167    488442584    83   Linux
Команда (m для справки): w
Таблица разделов была изменена!
Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

Форматируем, монтируем, проверяем скрость записи:

root@tazik001:~# mkfs.reiserfs /dev/sdb2
root@tazik001:~# mount /dev/sdb2 /mnt/hd
root@tazik001:~# dd if=/dev/zero of=/mnt/hd/000.dd bs=128K count=100000
33765+0 записей считано 
33765+0 записей написано 
 скопировано 4425646080 байт (4,4 GB), 51,3811 c, 86,1 MB/c 
72486+0 записей считано 
72486+0 записей написано 
 скопировано 9500884992 байта (9,5 GB), 111,47 c, 85,2 MB/c 
100000+0 записей считано 
100000+0 записей написано 
 скопировано 13107200000 байт (13 GB), 153,375 c, 85,5 MB/c 

Working good!

Рассмотрим совсем запущенный случай для логического тома в расширенном разделе.

Т. к. во времена господства MS-DOS расширенный раздел был придуман для программной эмуляции еще одного (второго) жесткого диска на свободном пространстве уже имеющегося накопителя, то для организации первого логического тома в расширенном разделе fdisk предложит нам создать его начальный сектор с номером n+63, где n - начальный сектор расширенного раздела. Нам же необходимо для соблюдения условия кратности 8-ми сектор n+64.
Т. е., сначала нам надо организовать расширенный раздел с номером начального сектора, кратным 8-ми. После чего будем создавать логический том в расширенном разделе также с начальным сектором, кратным восьми.
Отмонтируем и удалим fdisk'ом 2-й основной раздел.
После чего на его месте создадим расширенный со вложенным логическим томом.

root@tazik001:~# fdisk -u /dev/sdb
Команда (m для справки): p
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт 
255 heads, 63 sectors/track, 121601 cylinders, всего 1953525168 секторов 
Units = секторы of 1 * 512 = 512 bytes 
Disk identifier: 0x00054d40 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sdb1                64    976639999    488319968    83   Linux
Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
e
Первый сектор (976640000-1953525167, по умолчанию 976640000): 
Используется значение по умолчанию 976640000 
Последний сектор или +size или +sizeM или +sizeK (976640000-1953525167, по умолчанию 1953525167): 
Используется значение по умолчанию 1953525167 
Команда (m для справки): p
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт 
255 heads, 63 sectors/track, 121601 cylinders, всего 1953525168 секторов 
Units = секторы of 1 * 512 = 512 bytes 
Disk identifier: 0x00054d40 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sdb1                64    976639999    488319968    83   Linux
/dev/sdb2         976640000   1953525167    488442584     5   Расширенный 
Команда (m для справки): n
Действие команды
   l   логический (5 или более)
   p   основной раздел (1-4)
l
Первый сектор (976640063-1953525167, по умолчанию 976640063): 976640064 
Последний сектор или +size или +sizeM или +sizeK (976640064-1953525167, по умолчанию 1953525167): 
Используется значение по умолчанию 1953525167 
Команда (m для справки): p
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт 
255 heads, 63 sectors/track, 121601 cylinders, всего 1953525168 секторов 
Units = секторы of 1 * 512 = 512 bytes 
Disk identifier: 0x00054d40 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sdb1                64    976639999    488319968    83   Linux
/dev/sdb2         976640000    1953525167   488442584     5   Расширенный 
/dev/sdb5         976640064    1953525167   488442552    83   Linux 
Команда (m для справки): w
Таблица разделов была изменена!
Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.
root@tazik001:~# mkfs.reiserfs /dev/sdb5
root@tazik001:~# mount /dev/sdb5 /mnt/hd
root@tazik001:~# dd if=/dev/zero of=/mnt/hd/000.dd bs=128K count=100000
6585+0 записей считано 
6585+0 записей написано 
 скопировано 863109120 байт (863 MB), 11,2747 c, 76,6 MB/c 
37947+0 записей считано 
37947+0 записей написано 
 скопировано 4973789184 байта (5,0 GB), 72,3125 c, 68,8 MB/c 
68410+0 записей считано 
68410+0 записей написано 
 скопировано 8966635520 байт (9,0 GB), 131,587 c, 68,1 MB/c 
99030+0 записей считано 
99030+0 записей написано 
 скопировано 12980060160 байт (13 GB), 191,798 c, 67,7 MB/c 
100000+0 записей считано 
100000+0 записей написано 
 скопировано 13107200000 байт (13 GB), 193,386 c, 67,8 MB/c 

Working very good! Что и требовалось доказать.

Отмонтируем раздел для дальнейших экспериментов:

root@tazik001:~# umount /dev/sdb5

В свою очередь WD предлагает нам свой вариант согласования старой разметки с новым низкоуровневым форматом путем установки перемычки на контакты 7-8. В этом случае винчестер сдвигает трансляцию на 1 сектор (512 Б), «подсовывая» под начало раздела свой «родной» 64-й сектор, вместо 63-го. Для пущей понятности наглядно продемонстируем, что в этом случае происходит.
Очистим первые 500 секторов для дальнейшей работы:

root@tazik001:~# dd if=/dev/zero of=/dev/sdb count=500

Создадим новый раздел классическим методом и отформатируем:

root@tazik001:~# fdisk /dev/sdb
root@tazik001:~# mkfs.reiserfs /dev/sdb1

Посмотрим содержимое сектора 0:

root@tazik001:~# hdparm --read-sector 0 /dev/sdb
/dev/sdb: 
reading sector 0: succeeded 
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 8ba4 c746 0000 0100
0001 fe83 ffff 003f 0000 5982 7470 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 aa55

Визуально напоминает Улыбка живую таблицу разделов (сигнатура aa55) с одним разделом Линукс (тип 83).
Почитаем сектор 191 - в нем живет рейзерэфэсный суперблок:

root@tazik001:~# hdparm --read-sector 191 /dev/sdb
/dev/sdb: 
reading sector 191: succeeded 
0b30 0e8e ce00 0e8d 2013 0000 0012 0000
0000 0000 2000 0000 0400 0000 0f87 3caf
0384 0000 001e 0000 0000 0000 1000 03cc
0002 0001 6552 7349 7245 4632 0073 0000
0003 0000 0002 1d1d 0002 0000 0000 0000
0001 0000 d748 2bfc fd2a bd4f 9d95 4612
4d4c 605d 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0001 0000
0003 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000

Прошу поверить на слово - это именно он Улыбка .
Выключаем тазик:

root@tazik001:~# halt

Cтавим перемычку на контакты 7-8. Включаемся.

root@tazik001:~# fdisk -l
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт 
255 heads, 63 sectors/track, 121601 cylinders 
Units = цилиндры of 16065 * 512 = 8225280 bytes 
Disk identifier: 0x000945ef 
  Устр-во  Загр      Начало        Конец        Блоки    Id   Система
/dev/sdb1                 1          127      1020096     b   W95 FAT32
/dev/sdb2               128         5099     39937590    83   Linux 
/dev/sdb3    *         5100        10071     39937590     7   HPFS/NTFS 
/dev/sdb4             10072       121601    895864725     7   HPFS/NTFS 
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт 
255 heads, 63 sectors/track, 121601 cylinders 
Units = цилиндры of 16065 * 512 = 8225280 bytes 
Disk identifier: 0x00000000 

На диске /dev/sdb отсутствует верная таблица разделов
Раздел как ветром сдуло. Куда ж он делся? «Пошукаем псису»:

root@tazik001:~# hdparm --read-sector 0 /dev/sdb
/dev/sdb: 
reading sector 0: succeeded 
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
root@tazik001:~# hdparm --read-sector 191 /dev/sdb
/dev/sdb: 
reading sector 191: succeeded 
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000

Пусто. Поищем суперблок в окрестностях:

root@tazik001:~# hdparm --read-sector 190 /dev/sdb
reading sector 190: succeeded 
0b30 0e8e ce00 0e8d 2013 0000 0012 0000
0000 0000 2000 0000 0400 0000 0f87 3caf
0384 0000 001e 0000 0000 0000 1000 03cc
0002 0001 6552 7349 7245 4632 0073 0000
0003 0000 0002 1d1d 0002 0000 0000 0000
0001 0000 d748 2bfc fd2a bd4f 9d95 4612
4d4c 605d 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0001 0000
0003 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000

Вот он! Оказался на 190-м секторе. Соответственно, таблица разделов сейчас находится на секторе -1 (минус 1), т. е. не в пользовательской зоне и она недоступна штатными средствами.
Если сейчас в таком виде, с установленной перемычкой 7-8, создать классическую разметку и отформатировать новоиспеченный раздел, то таблица разделов окажется на «заводском» 1-м секторе. Но начало раздела - на «удобном» винчестеру «заводском» 64-м, суперблок - на 192-м. Т. е. логика раздела и ФС будет кратна «хардверному» сектору в 4 КБ и ничего тормозить не будет. Разумеется, перемычку после этих операций снимать будет нельзя!
Это есть весьма оригинальное «хардверное» решение проблемы от WD, и для создания единственного основного раздела вполне успешно заменяет «пляски с бубном» в fdisk. К сожалению, трюк с перемычкой работает только для одного основного раздела на весь объем устройства, либо же только для первого основного раздела. Если всё делать «по умолчанию», то для следующих после первого основных разделов, либо логических томов в расширенном разделе, кратность будет опять переломана, и работа в рамках всех разделов, кроме первого, будет идти с тормозами, и никакие перемычки здесь уже не помогут.
В целом мы убедились, что проявленная багофича связана с тяжелым наследием разметки дисков по умолчанию, совместимым с классическим MS-DOS MBR.
При создании же посекторных копий других дисков на исследуемый диск тем же dd, либо отказоустойчивыми ddrescue и dd_rescue, без учёта имеющихся логических структур, в связи со вполне приемлемой эмуляцией 512-байтного сектора, никаких критических сбоев в работе замечено не было. Вкупе с демократичной ценой, винчестер демонстрирует приличные скоростные характеристики при последовательных записи и чтении и низкую рабочую температуру, характерную для всех накопителей WD Green. И после внимательного ознакомления с написанным материалом может однозначно быть рекомендован к эксплуатации в Линукс.

Автор: Виталий Розизнаный AKA Rozik

Перепечатка или цитирование разрешены при условии сохранения ссылки на первоисточник: R.LAB, восстановление информации.

ВложениеРазмер
WD10EARS_Linux_new.html40.2 КБ
Your rating: Нет Average: 10 (2 votes)

Комментарии

Аватар пользователя Adelina

Re: Жесткий диск WD10EARS с сектором 4 ...

С линуксом всегда все так трудно?

Аватар пользователя Boryusya

Re: Жесткий диск WD10EARS с сектором 4 ...

Зато в надежности Линукс намного превосходит другие платформы!

Аватар пользователя intel

Re: Жесткий диск WD10EARS с сектором 4 ...

Boryusya писал(а):
Зато в надежности Линукс намного превосходит другие платформы!

Безопасность этой системы на высоте!

Аватар пользователя Mimino

Re: Жесткий диск WD10EARS с сектором 4 ...

Boryusya писал(а):
Зато в надежности Линукс намного превосходит другие платформы!

Ага, особенно Мандрива 2010.
Прочтите прочтите здесь:

http://poplinux.ru/node/288
http://poplinux.ru/node/299
http://poplinux.ru/node/297
http://poplinux.ru/node/292

Аватар пользователя Αρρεν

Re: Жесткий диск WD10EARS с сектором 4 ...

купил → принес → воткнул

загрузил ubuntu 10.10 → System/Administration/Disk Utility → создал GPT/1 раздел

открыл консоль:

mount /dev/sda1 /mnt/hd
dd if=/dev/zero of=/mnt/hd/000.dd bs=128K count=100000

73904+0 records in
73903+0 records out
9686704128 bytes (9.7 GB) copied, 96.3333 s, 101 MB/s

в чем прикол??? все 100 выдает нормально, только страху нагнали что придется трахаться с этими секторами

RSS-материал