|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Dmitry Pryanishnikov 2:464/36 23 Nov 2006 03:23:02 To : Alexandr Baryshnyev Subject : Re: smartctl -a -------------------------------------------------------------------------------- Привет! On Tue, 21 Nov 2006, Alexandr Baryshnyev wrote: >> "Мыши кололись, плакали, но продолжали жрать кактус" ;) Откройте для себя >> badsect(8). Там описана процедура маркировки сектора, который необходимо >> вывести из обращения. В ней как раз fsck и расскажет, с чем пересекается >> плохой сектор (если только он не в служебной области - если там, badsect >> ругнется и не пометит его). > > А как вычислить номер сектора, который следует скормить badsect-ту? > Вот такое только в логах: > > kernel: ad0: TIMEOUT - READ_DMA retrying (1 retry left) LBA=8970879 > kernel: ad0: TIMEOUT - READ_DMA retrying (0 retries left) LBA=8970879 > kernel: ad0: FAILURE - READ_DMA timed out LBA=8970879 > kernel: g_vfs_done():ad0s1d[READ(offset=4056186880, length=13824)]error = 5 Это тоже в badsect(8) есть: (The sector numbers must be relative to the beginning of the file system, but this is not hard as the system reports relative sector numbers in its console error messages.) Единственная проблема - вычислить номер сектора _относительно начала файловой системы_. В данном случае, как я понимаю, fs сидит на ad0s1d, и GEOM действительно рапортует offset от начала fs. Проблема в том, что рапортует он _весь_ кусок, который пытались прочесть (13824 / 512 = 27 секторов, начиная с сектора номер 4056186880 / 512 = 7922240). ам же нужен точный номер сбойного сектора - его рапортует драйвер ad (8970879), но не относительно начала fs, а относительно начала всего носителя. Для поиска числа, которое нужно скормить badsect, нужно при помощи fdisk найти стартовое смещение слайса ad0s1: The data for partition 1 is: sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD) start 63, size 82702620 (40382 Meg), flag 80 (active) ----^^^^^^^^ затем смещение раздела ad0s1d внутри оного ad0s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 1048576 0 4.2BSD 0 0 0 b: 2097152 1048576 swap c: 82702620 0 unused 0 0 # "raw" part, don't edit d: 79556892 3145728 4.2BSD 0 0 0 ---------------^^^^^^^ сложить эти (подчеркнутые) числа - сумма и есть смещение начала fs на ad0s1d относительно начала HDD. Если вычесть из LBA=8970879 оную сумму, как раз получим относительный номер сбойного сектора, который нужно скормить badsect. Для проверки можно убедиться, что результат x будет в границах, показанных GEOM: 7922240 <= x < 7922267 Сумму удобно записать на бумажку и хранить до переразбивки или утилизации HDD. > Best regards, > Alexandr B. Baryshnyev <abb@abbon.net> > ABB1-UANIC | ABB28-RIPE | AB19026 Sincerely, Dmitry -- Atlantis ISP, System Administrator e-mail: dmitry@atlantis.dp.ua nic-hdl: LYNX-RIPE --- ifmail v.2.14.os-p7 * Origin: Atlantis ISP (2:464/36@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2452182b21514.html, оценка из 5, голосов 10
|