Форум компании "КИЙ телеком" (www.kiytele.com)

Форум по электронной аппаратуре, телекоммуникационному оборудованию и обслуживанию систем безопасности
Текущее время: 12 дек 2018, 05:47

Часовой пояс: UTC + 2 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Жесткий диск WD10EARS с сектором 4 КБ. Подготовка в Linux
СообщениеДобавлено: 28 дек 2010, 16:46 
Не в сети
Младший волшебник
Аватара пользователя

Зарегистрирован: 23 фев 2009, 16:52
Сообщения: 3609
Взял от сюда mysuse.ucoz.ua/news/2010-06-22-5
ОЧЕНЬ полезная статейка. Великая благодарность автору.

Исходя из специфики работы автору приходится регулярно приобретать различные новые жесткие диски, как правило для сохранения посекторных копий с неисправных накопителей.
На этот раз для этих целей был приобретен терабайтный винчестер фирмы 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

_________________
bit |~ bit вот в чём вопрос
Наш партнёр "КИЙ телеком"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 2 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Русская поддержка phpBB - phpbbguru.net