Posted: Mon Apr 20, 2015 4:09 Post subject: Corrupted files after a power failure
We had a brief power failure last night and when things came back online I found that a couple of data files for my YAMon script were left in a bad state.
The files were on an 8GB USB drive (formatted ext2).
`fsck` identified the corrupted files but the messages from that utility say that running it against a mounted drive will cause more damage and I could not figure out how to properly `umount` the drive...
Eventually I opted for a brute force solution - i.e.,
- pulled the USB drive out of the back of the modem,
- plugged it into my laptop,
- backed things up
- wiped the partition
- reformatted the drive
- restored the data
- plugged the drive back into the router
- rebooted the router
That got me up and running again but I figure that there has to be a better way to do this.
I saw the same thing a couple of times, on power outage. The only difference: the USB stick was formatted FAT32. Had to unplug it forcefully (couldn't unmount first with the USB unmount button), plug it into laptop, run Check Disk, things got fixed, unmount properly from laptop, connect it back into router, things look fine. I didn't have to format it. _________________ THERE ARE NO STRANGERS HERE; ONLY FRIENDS YOU HAVEN'T YET MET.
________________________________________________________________________________________________________
DD-WRT CHANGELOG | DEVICES | DD-WRT BUILDS | KONG BUILDS | UNOFFICIAL BUILDS | DD-WRT in VIRTUALBOX
Posted: Mon Jun 01, 2015 3:54 Post subject: OK... it happened again
We had another power failure today and once again two of my YAMon data files were corrupted on my router.
The corrupted files were not visible in the directory and would report an input/output error if I tried to access or delete them. I struggled for some time to figure out how to umount the USB drive so that I could repair the corrupted files.
It was much easier this time...
1. I opened the DD-WRT GUI and changed to the Services-->USB tab
2. I disabled the `Automatic Drive Mount` radio button and then saved & applied the settings (and just to be safe, rebooted the router)
3. When the router was back online, I opened a PuTTY window and performed a `fsck` on my USB drive - in particular, I entered `fsck -y /dev/sda5` (the -y option automatically selects yes when prompted to fix an issue)
4. to be safe, I then ran that command again.
5. I returned to the DD-WRT GUI-->Services-->USB and enabled the `Automatic Drive Mount` radio button; saved & applied the settings (and, rebooted the router)
Fortunately, this found and fixed a whole mess of issues (check the Lost & Found directory on your USB drive because there might be a mess of recovered files in that directory).
Hopefully this helps if you encounter a similar issue.
Al
Last edited by al_c on Sat Apr 16, 2016 15:14; edited 2 times in total
Thanks Al. I've had this scenario a few times as well, and once recently, when I discovered my YAMon had been offline for a few weeks due to a missing users.js. My router doesn't have fsck (I suppose it could be added), so I've used an Ubuntu flash drive to access YAMon's drive on a PC. Unfortunately most of my PC's won't boot that Ubuntu disk but that's another story.
Anyway, fsck got things running again but my users.js changed from corrupted to entirely missing. Apparently fsck couldn't salvage it. Fortunately I found a prior copy under the www folder and was able to recover by copying that file back to the standard location.
My assumption is that these files get corrupted during power loss because they are in the midst of being written to. I'm not sure what you can really do about that, other than perhaps limiting the frequency of writes to the filesystem.
The other thing is the filesystem type. I'd chosen ext2 because it is supposed to make the drive last longer due to less frequent writes. But now I'm reading that this is much less stable and likely to corrupt during power loss. A journaled filesystem is recommended for that reason. Maybe ext4? It seems like setting a different recommended filesystem could be key here, and probably the closest thing to a real solution.
The other thing is the filesystem type. I'd chosen ext2 because it is supposed to make the drive last longer due to less frequent writes. But now I'm reading that this is much less stable and likely to corrupt during power loss. A journaled filesystem is recommended for that reason. Maybe ext4? It seems like setting a different recommended filesystem could be key here, and probably the closest thing to a real solution.
I'd shied away from ext3 for the same reasons that you've mentioned above.
But, my router was rebooted unexpected again yesterday and when it came back up, my user.js and hourly date files were corrupted.
I figured I'd bite the bullet and change the FS. I backed everything up and reformatted my 8GB USB drive to ext4 (using MiniTool Partition Wizard - the free home use version http://goo.gl/xhGaX0) .
Apparently you can turn-off the journalling in ext4 although I was not able to find a switch for that in the MiniTool UI so AFAIK, I have journalling.
Anyone know how to turn it off?
I've reattached the drive to my router and I'll let you know how it goes.
Just a quick question: Why aren't you using FAT32 or NTFS ? I know FAT32 limits the max file size to 4GB, but still... _________________ THERE ARE NO STRANGERS HERE; ONLY FRIENDS YOU HAVEN'T YET MET.
________________________________________________________________________________________________________
DD-WRT CHANGELOG | DEVICES | DD-WRT BUILDS | KONG BUILDS | UNOFFICIAL BUILDS | DD-WRT in VIRTUALBOX
Just a quick question: Why aren't you using FAT32 or NTFS ? I know FAT32 limits the max file size to 4GB, but still...
I haven't had a chance to check this out but apparently Fat32 does not support symlinks... to minimize file movements, etc. YAMon creates a number of symlinks so if the initial statement is correct, you cannot use a Fat32 drive for YAMon.