Map LBA to File
From Attie's Wiki
http://smartmontools.sourceforge.net/badblockhowto.html
Bad LBA = 0x0a8ae67d = 176875133
$ sudo fdisk -lu /dev/sda Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Disk identifier: 0x030818eb Device Boot Start End Blocks Id System /dev/sda1 * 63 409662 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 409663 168181822 83886080 83 Linux /dev/sda3 168181823 172376126 2097152 82 Linux swap / Solaris /dev/sda4 172376127 976768064 402195969 83 Linux
therefore it's on /dev/sda4
, which is mounted on /home
(ext4)
$ sudo tune2fs -l /dev/sda4 | grep Block Block count: 100548992 Block size: 4096 Blocks per group: 32768
b = (int)(((L-S)*512)/B)
where:
b | = | File System block number |
B | = | File system block size in bytes |
L | = | LBA of bad sector |
S | = | Starting sector of partition as shown by fdisk -lu |
(int) | denotes the integer part (round it DOWN to a whole number). |
b = (int)((176875133-172376127) * 512 / 4096) b = (int)562375.75 b = 562375
$ sudo debugfs debugfs 1.41.9 (22-Aug-2009) debugfs: open /dev/sda4 debugfs: testb 562375 Block 562375 not in use debugfs: quit
** OR **
$ sudo debugfs debugfs 1.41.9 (22-Aug-2009) debugfs: open /dev/sda4 debugfs: testb 562375 Block 562375 marked in use debugfs: icheck 562375 Block Inode number 562375 132344 debugfs: ncheck 132344 Inode Pathname 132344 /attie/banner.jpg ^C debugfs: quit