Re: smartctl -a
- From
- Dmitry Pryanishnikov (2:464/36)
- To
- Alexandr Baryshnyev
- Date
- 2006-11-23T02:23:02Z
- Area
- RU.UNIX.BSD
From: Dmitry Pryanishnikov <dmitry@atlantis.dp.ua>
Привет!
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)
SEEN-BY: 46/999 50/12 400/814 450/1024 463/68 464/0 36 66 100 128 999 465/213
SEEN-BY: 550/5068 5000/0 20 26 27 61 94 104 116 130 170 5000 5002/76 5002
SEEN-BY: 5004/75 1111 5005/14 5009/14 5010/77 275 5011/13 5012/46 5013/21
SEEN-BY: 5015/28 5019/31 5020/400 545 2238 2395 2871 4441 5021/29 5025/3
SEEN-BY: 5027/12 5029/34 5030/1080 1957 5035/38 5045/7 5054/1 4 8 9 11 28 35
SEEN-BY: 5054/36 37 45 63 66 67 70 75 84 85 5055/177 5057/119 5059/9 5062/10
SEEN-BY: 5063/3 5064/7 5070/66 5076/1 5077/70 5080/1003 5084/9 5085/13
SEEN-BY: 5090/1029 5095/20 5096/18 6001/10 6090/1
PATH: 464/36 5000/5000 5020/545 5054/1 37