HDD: Продолжение темы с 746.52Gb на 3TB+ HDD

Aug 27, 2013 01:06

*** (Кратко) важно: BIOS на системе, где это будет проявляться, должен быть UEFI (сам по себе, при этом использоваться может как legacy).
Правильная формула для расчета смещения мусора.

Ну вот, наконец-то какая-то гадина опять записала в мои файлы. Из того, что я помню, что я делал "неординарного" - это запускал утилиту для просмотра SMART'а на ( Read more... )

marvell, bugs, hardware, efi, gpt, uefi, hdd

Leave a comment

avryabov August 31 2013, 22:40:31 UTC
блин...
есть такой глюк и у меня.
у меня линукс: Ubuntu precise (12.04.2 LTS), x64
диски ST3000DM001-9YN1 (sata 3tb) 10шт всего
6 - подключены к материнской плате
4 - к двум контроллерам Marvell.
lspci про эти контроллеры пишет:
01:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9123 PCIe SATA 6.0 Gb/s controller (rev 11)
01:00.1 IDE interface: Marvell Technology Group Ltd. 88SE91A4 SATA 6Gb/s Controller (rev 11)
04:00.0 SATA controller: Marvell Technology Group Ltd. 88SE9123 PCIe SATA 6.0 Gb/s controller (rev 11)
04:00.1 IDE interface: Marvell Technology Group Ltd. 88SE91A4 SATA 6Gb/s Controller (rev 11)
на 4 последних дисках (sdg,sdh,sdi,sdj) дамп первой строки того сектора дает одинаковый результат:

root@edward:~# dd if=/dev/sdj bs=1b count=1 skip=1565565871 | hexdump -C | head -1
1+0 записей получено
1+0 записей отправлено
скопировано 512 байт (512 B), 6,9673e-05 c, 7,3 MB/c
00000000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...|

на первых 6-ти дисках такого результата нет.

Reply

sporaw August 31 2013, 22:45:11 UTC
Проинформирован - значит вооружен.
Marvell - $удаки.

Reply

avryabov August 31 2013, 23:14:24 UTC
Marvell - $удаки.
именно они, без вариантов. У меня 2 таких, практически идентичных, сервера, но на втором контроллеры
SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA Controller (rev 01)
один на матери, другой - внешний.
Там такого глюка нет.
И главное, на этом тоже раньше стояли ASMedia, но я их заменил, из-за странных глюков, а потом оказалось, что виновата корзина дисков.
Вот блин!
Буду надеяться, что скоро-скоро бакап не понадобится, и по быстрому заменю контролер взад, и сделаю полный бакап заново.
у меня там файлы не пакуются/шифруются, потому не факт что я бы быстро заметил.
Надо этим уродам хорошую антирекламу сделать.

Reply

sporaw August 31 2013, 22:47:22 UTC
Учтите, что EFI PART - это последний сектор мусора. Там до этого еще много (см. точный размер всего мусора в постах)

Reply

avryabov August 31 2013, 23:16:55 UTC
это я уже понял. "EFI PART" - это просто самое надежное сочетание для поиска.

Reply

sporaw August 31 2013, 23:27:02 UTC
Да. Искать очень удобно, два dword'а и всегда на границе начала сектора. Можно выбирать опцию для поиска соответствующую (не везде есть) для ускорения поиска.

Reply

avryabov August 31 2013, 23:33:20 UTC
проблема ну точно в переполнении, ибо объем диска 5860533168 секторов
первая строка последнего сектора:

root@edward:~# dd if=/dev/sdj bs=1b count=1 skip=5860533167 | hexdump -C | head -1
1+0 записей получено
1+0 записей отправлено
скопировано 512 байт (512 B), 3,5238e-05 c, 14,5 MB/c
00000000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...|

И это как раз правильно - там оно и должно лежать, это одинаково на всех 10 дисках
теперь берём и вычитаем 5860533167 - 1565565871 = 4294967296 = 2^32
И это говорит как искать тем людям, у которых объем диска малость другой
взять номер самого последнего сектора вычесть из него 2^32 и поглядеть на первую строчку этого сектора, если там "EFI PART" - бить производителя контроллера ногами по голове.

Reply

sporaw August 31 2013, 23:47:32 UTC
Несовсем верная формула с вычитанием (для супер больших дисков). В общем виде это так: бэкап пишется в последний сектор, берем номер этого сектора и считаем остаток от деления на 2^32 (из-за переполнения). Узнаем точный сектор куда нагажено.

Reply

avryabov September 1 2013, 00:26:26 UTC
вобщем под линуксом примерно так:
root@edward:~# for sdn in /dev/sd? ; do echo -n $sdn - ; sn=$[`blockdev --getsize $sdn`-1] ; [ $sn -lt $[1<<32] ] && echo small && continue ; sn=$[$sn%(1<<32)]; st=`dd if=$sdn bs=1b count=1 skip=$sn 2>/dev/null| head -c 8` ; [ 'EFI PART' = "$st" ] && echo bad && continue; echo ok ; done
/dev/sda -ok
/dev/sdb -ok
/dev/sdc -ok
/dev/sdd -ok
/dev/sde -ok
/dev/sdf -ok
/dev/sdg -bad
/dev/sdh -bad
/dev/sdi -bad
/dev/sdj -bad

Reply

sporaw September 1 2013, 00:07:37 UTC
1. Кстати, а у вас [U]EFI BIOS? (Не обязательно загрузка именно в режиме EFI; сам по себе)
2. Скажите какая материнская плата и какой версии BIOS, если несложно.

Reply

avryabov September 1 2013, 00:47:31 UTC
судя по dmidecode ( ... )

Reply

netspyder September 2 2013, 10:50:23 UTC
Бубунта собрана с CONFIG_EFI_PARTITION?

Reply

avryabov September 2 2013, 10:59:27 UTC
я не знаю. я ядро не пересобирал. оно из пакета linux-image-3.5.0-39-generic
а /proc/config там отключен.

Reply


Leave a comment

Up