Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: smartctl -a   Dmitry Pryanishnikov   23 Nov 2006 03:23:02 
Архивное /ru.unix.bsd/2452182b21514.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional