Thanks for the reply! Indeed I should back up more properly, that was actually what I was in the process of doing but yeah. I'll check out the pointers, and I guess I'll just read the papers describing the whole btrfs system to see how it works. I would like to make an automatic scrubbing application that you can just point to a block device where partitions are not even correct and it tries to find as many files as possible.
On 7 August 2018 at 00:40, Duncan <1i5t5.dun...@cox.net> wrote: > Marijn Stollenga posted on Sat, 04 Aug 2018 12:14:44 +0200 as excerpted: > >> Hello btrfs experts, I need your help trying to recover an external HDD. >> I accidentally created a zfs partition on my external HD, which of >> course screw up the whole partition. I quickly unplugged it and it being >> a 1TB drive is assume there is still data on it. > > Just a user and list regular here, not a dev, so my help will be somewhat > limited, but as I've seen no other replies yet, perhaps it's better than > nothing... > >> With some great help on IRC I searched for tags using grep and found >> many positions: >> https://paste.ee/p/xzL5x >> >> Now I would like to scan all these positions for their information and >> somehow piece it together, I know there is supposed to be a superblock >> around 256GB but I'm not sure where the partition started (the search >> was run from a manually created partition starting at 1MB). > > There's a mention of the three superblock copies and their addresses in > the problem FAQ (wrapped link due to posting-client required hoops I > don't want to jump thru to post it properly ATM, unwrap manually): > > https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#What_if_I_don. > 27t_have_wipefs_at_hand.3F > >> In general I would be happy if someone can point me to a library that >> can do low level reading and piecing together of these pieces of meta >> information and see what is left. > > There are multiple libraries in various states available, but being more > a sysadmin than a dev I'd consume them as dependencies of whatever app I > was installing that required them, so I've not followed the details. > However, here's a bit of what I found just now with a quick look: > > The project ideas FAQ on the wiki has a (somewhat outdated) library entry > (wrapped link...): > > https://btrfs.wiki.kernel.org/index.php/ > Project_ideas#Provide_a_library_covering_.27btrfs.27_functionality > > That provides further links to a couple python projects as well as a > haskell lib. > > But I added the "somewhat dated" parenthetical due to libtrfsutil by Omar > Sandoval, which appeared in btrfs-progs 4.16. So there's now an official > library. =:^) Tho not being a dev I've not the foggiest whether it'll > provide the functionality you're after. > > I also see a rust lib mentioned on-list (Oct 2016). > > https://gitlab.wellbehavedsoftware.com/well-behaved-software/rust-btrfs > >> I know there is btrfs-check etc. but these need the superblock to be >> known. Also on another messed up drive (I screwed up two btrfs drives in >> the same way at the same time) I was able to find the third superblock, >> but it seems they in the end pointed to other parts in the file system >> in the beginning of the drive which were broken. > > OK, this may seem like rubbing salt in the wound ATM, but there's a > reason they did that back in the day before modern disinfectants, it > helped stop infection before it started. Likewise, the following policy > should help avoid the problem in the first place. > > A sysadmin's first rule of data value and backups is that the real value > placed on data isn't defined by arbitrary claims, but rather by the > number and quality of backups those who control that data find it > worthwhile to make of it. If it's worth a lot, there will be multiple > backups, likely stored in multiple locations, some offsite in ordered to > avoid loss in the event of fire/flood/bombing/etc. Only data that's of > trivial value, less than that of the time/trouble/resources necessary to > do that backup, will have no backup at all. > > (Of course, age of backups is simply a sub-case of the above, since in > that case the data in question is simply the data in the delta between > the last backup and the current working state. By definition, as soon as > it is considered worth more than the time/trouble/resources necessary to > update the backup, an updated or full new backup will be made.) > > (The second rule of backups is that it's not a backup until it has been > tested to actually be usable under conditions similar to those in which > the backup would actually be needed. In many cases that'll mean booting > to rescue media and ensuring they can access and restore the backup from > there using only the resources available from that rescue media. In > other cases it'll mean booting directly to the backup and ensuring that > normal operations can resume from there. Etc. And if it hasn't been > tested yet, it's not a backup, only a potential backup still in progress.) > > So the above really shouldn't be a problem at all, because you either: > > 1) Defined the data as worth having a backup, in which case you can just > restore from it, > > OR > > 2) Defined the data as of such limited value that it wasn't worth the > hassle/time/resources necessary for that backup, in which case you saved > what was of *real* value, that time/hassle/resources, before you ever > lost the data, and the data loss isn't a big deal because it, by > definition of not having a backup, can be of only trivial value not worth > the hassle. > > There's no #3. The data was either defined as worth a backup by virtue > of having one, and can be restored from there, or it wasn't, but no big > deal because the time/trouble/resources that would have otherwise gone > into that backup was defined as more important, and was saved before the > data was ever lost in the first place. > > Thus, while the loss of the data due to fat-fingering (which all > sysadmins come to appreciate the real risk of, after a few events of > their own) the placement of that ZFS might be a bit of a bother, it's not > worth spending huge amounts of time trying to recover, because it was > either worth having a backup, in which case you simply recover from it, > or it wasn't, in which case it's not worth spending huge amounts to time > trying to recover, either. > > Of course there's still the pre-disaster weighed risk that something will > go wrong vs. the post-disaster it DID go wrong, now how do I best get > back to normal operation question, but in the context of the backups rule > above resolving that question is more a matter of whether it's most > efficient to spend a little time trying to recover the existing data with > no guarantee of full success, or to simply jump directly into the wipe > and restore from known-good (because tested!) backups, which might take > more time, but has a (near) 100% chance at recovery to the point of the > backup. (The slight chance of failure to recover from tested backups is > what multiple levels of backups covers for, with the the value of the > data and the weighed risk balanced against the value of the time/hassle/ > resources necessary to do that one more level of backup.) > > So while it might be worth a bit of time to quick-test recovery of the > damaged data, it very quickly becomes not worth the further hassle, > because either the data was already defined as not worth it due to not > having a backup, or restoring from that backup will be faster and less > hassle, with a far greater chance of success, than diving further into > the data recovery morass, with ever more limited chances of success. > > Live by that sort of policy from now on, and the results of the next > failure, whether it be hardware, software, or wetware (another fat- > fingering, again, this is coming from someone, me, who has had enough of > their own!), won't be anything to write the list about, unless of course > it's a btrfs bug and quite apart from worrying about your data, you're > just trying to get it fixed so it won't continue to happen. > > -- > Duncan - List replies preferred. No HTML msgs. > "Every nonfree program has a lord, a master -- > and if you use the program, he is your master." Richard Stallman > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html