Date: Sat, 02 Dec 2006 15:21:12 -0800 From: Garrett Cooper <youshi10@u.washington.edu> To: freebsd-questions@freebsd.org Subject: Re: Soft Updates Help Message-ID: <45720A68.8020205@u.washington.edu> In-Reply-To: <4570EAF7.4060400@u.washington.edu> References: <4570C4D6.5030708@calarts.edu> <20061201203509.444401d9.wmoran@collaborativefusion.com> <4570EAF7.4060400@u.washington.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
Garrett Cooper wrote: > Bill Moran wrote: >> Sean Murphy <smurphy@calarts.edu> wrote: >>> I have read up on soft updates and have some questions. >>> >>> The way that I am understanding soft updates purpose is to allow file >>> systems to be mounted dirty after an unclean shutdown of the system. >> >> That's not the purpose. The purpose is to improve performance by taking >> advantage of delayed writes much the way an asynchronous filesystem does, >> while preventing horrendous data corruption by ordering those writes, >> much >> the way a journalling filesystem does. >> >> The fact that you can generate filesystem snapshots is a >> side-benefit. The >> fact that you can use filesystem snapshots to validate the filesystem >> after >> it's been mounted is a further side-benefit. >> >>> If this is a safe way to restore consistency why is it not used on /? >> >> Because writes are delayed, it's possible for data to be lost in the >> event of >> a crash -- it acts like a database, either the entire transaction is >> committed >> or it's rolled back, either way, the data is guaranteed not to be >> corrupt. >> >> Also, on heavily used filesystems, softupdates can lead to the filesystem >> temporarily having less space available than it really does. I.e. you >> update >> /kernel, softupdates completely replaces the file with a new one, but the >> blocks for the old file haven't been reclaimed yet. For a short >> period, you >> might have 1 kernel file, but there's 2x that being allocated for it. >> >> For these two reasons, / is traditionally _not_ mounted with softupdates >> enabled, since it's critical to system startup. >> >>> If a file system is not heavily written to is it better not to use >>> soft updates? >> >> Weigh the good vs. the bad: >> *) synchronous mounted filesystem is almost guaranteed to keep your >> data safe >> at all times, but is abysmally slow. >> *) softupdates _may_ lose some data if your system crashes before all >> writes >> are flushed, but will never _corrupt_ it. Additionally, you get a LOT >> better speed. >> *) Asynchronous is a little faster than softupdates, but it's damn near >> guaranteed to be corrupt in the event of a crash. >> >>> When file systems are mounted dirty and our being used while the >>> backgound fsck is running on the file systems how does it prevent >>> files from being lost? >> >> It doesn't. It guarantees that your filesystem will always be >> mountable and >> never corrupt, but it doesn't guarantee against data loss. >> >> Here's a simplified example: >> Let's say you're saving a big file and the power goes out. When the >> power comes >> back on, there are basically 3 states that file can be in: >> A) It was fully written to disk -- you got lucky. >> B) Nothing had been written to disk yet -- "data loss" >> C) It was partially written to disk -- your filesystem is corrupt, you >> either >> need to allow a filesystem repair program to fix it (fsck -- or >> chkdsk on >> Windows, for example) or you'll have weird problems with it until >> you do so. >> >> Softupdates guarantees against C. It does this by (essentially) >> writing the >> file "backwards": >> 1) it writes all the data to data blocks, and once that's done >> 2) _then_ it creates a directory entry for the file. >> >> If the system crashes between #1 and #2, it looks like B happened, but >> you never >> get in scenario C where the filesystem is corrupt and gets more >> corrupt as you >> continue to use it. Instead, when fsck runs (in the background) it >> realizes >> that there are data blocks in use that don't belong to any file, and >> it can >> free them up for the filesystem to use. >> >> That's somewhat simplified, but it gives you the basic idea. >> >> HTH >> Bill > > Just for future reference, a more brief-although not > complete-explanation of softupdates can be found on Wikipedia > <http://en.wikipedia.org/wiki/Softupdates>. > The article does link some other documents which discuss softupdates > in more detail though. From what I skimmed it appears that the documents > describe softupdates as a system, but perhaps not all of the features > that you are looking for (asynchronous softupdating, for instance). > -Garrett More information about softupdates straight from the Handbook (see the bottom of the page): <http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-disk.html> -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45720A68.8020205>