Gentoo Archives: gentoo-user

From: Bryan Gardiner <bog@××××××.net>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Diagnosing file corruption
Date: Sun, 16 Aug 2015 15:17:55
Message-Id: 20150816151746.GA5227@mikasa
In Reply to: Re: [gentoo-user] Diagnosing file corruption by wraeth
1 On Thu, Aug 06, 2015 at 12:00:30PM +1000, wraeth wrote:
2 > On 06/08/15 10:34, Bryan Gardiner wrote:
3 > > After I make a fresh backup of my files, how would you recommend
4 > > troubleshooting this? Run memtest or a hard drive tester? Since
5 > > the files seemingly corrupted themselves after install without
6 > > being touched, I'm highly suspicious of the hard drive, but would
7 > > like to rule other things out (if say for example that
8 > > CONFIG_X86_INTEL_PSTATE CPU clock booster is dangerous, or
9 > > nvidia-drivers, or ...). Haven't checked for corruption on /home
10 > > yet.
11 >
12 > One key question that doesn't seem to have been asked yet: have you
13 > performed an fsck on the partition? You could try booting to a livecd
14 > environment and running
15 >
16 > fsck -fc /dev/sdXY
17 >
18 > (adjusting for your device schema accordingly) on your apparently
19 > failing partition(s) to see if there is a filesystem corruption...
20
21 Thanks very much for the suggestions, everyone. I ended up using fsck
22 -fc and -fcc, which resulted in no bad blocks being detected. I also
23 wanted to make sure no other files in that range of disk were
24 corrupted, so I extracted the extents used by the bad files:
25
26 cat bad-files | while read file; do
27 echo ">>> ${file} <<<"
28 debugfs -R "dump_extents ${file}" /dev/mikasa-vg/gentoo
29 done >bad-extents
30
31 found the files in the regions between the bad files:
32
33 for block in $(seq 5302485 5302486) $(seq 5302489 5302498) $(seq 5302504 5302508); do
34 inode="$(debugfs -R "icheck ${block}" /dev/mikasa-vg/gentoo 2>/dev/null | perl -ne 'if (/^\d+\s+(\d+)$/) {print $1, "\n"}')"
35 if [[ -n $inode ]]; then
36 echo "${block} ${inode} $(debugfs -R "ncheck ${inode}" /dev/mikasa-vg/gentoo 2>/dev/null | awk 'NR==2 {print $2}')"
37 else
38 echo "${block}"
39 fi
40 done
41
42 and file'd those to make sure that they were okay. This is only a
43 personal computer, so I'm going to call this a one-off issue and move
44 on, and leave the stronger approaches for another day.
45
46 Thanks again!
47 Bryan
48
49 --
50 If people do not believe that mathematics is simple, it is only
51 because they do not realize how complicated life is - von Neumann

Attachments

File name MIME type
signature.asc application/pgp-signature