* single disk reed solomon codes @ 2008-07-19 12:21 Ahmed Kamal 2008-07-19 15:18 ` Gerald Nowitzky 2008-07-19 16:50 ` David Woodhouse 0 siblings, 2 replies; 13+ messages in thread From: Ahmed Kamal @ 2008-07-19 12:21 UTC (permalink / raw) To: linux-btrfs Hi, Since btrfs is someday going to be the default FS for Linux, and will be on so many single disk PCs and laptops, I was thinking it should be a good idea to insert some redundancy in single disk deployments. Of course it can help with disk failures, since it's obviously a "single" disk, but it can help with bit-rot, and with hardware sector read errors. To get that we'd need to implement some kind of forward error correction, possibly reed solomon code. I am not sure why no filesystem seems to implement such scheme, although I believe at the hardware level, such schemes are being used (so the idea is applicable) ? Not that I am an expert on such matters, but I thought I'd drop that suggestion here, maybe at least I'll know why no one else seems to do that Regards ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-19 12:21 single disk reed solomon codes Ahmed Kamal @ 2008-07-19 15:18 ` Gerald Nowitzky 2008-07-19 22:15 ` Joe Peterson 2008-07-21 6:48 ` Tomasz Torcz 2008-07-19 16:50 ` David Woodhouse 1 sibling, 2 replies; 13+ messages in thread From: Gerald Nowitzky @ 2008-07-19 15:18 UTC (permalink / raw) To: linux-btrfs ECC codes like Reed-Solomon are very useful to recognize and locate random bit-errors. On a HDD as a unit, as it is seen from OS level, I don't think it will be of any help: When a HDD drive reads a sector from disk, it does a whole bunch of error recognition and correction measures. Usually there are, at least, two layers of error correction with different bit spreads on it. *If* this still isn't enough, it is very likely that the whole sector will come back completely spoiled, or, much more likely, won't come back at all and the drive will report a read error. So, the only thing that could be done is to add some redundancy on sector-level with something like a "Intra-Disk-RAID5" by adding a number of parity sectors. A simple parity will be enough, as error recognition and location can be done by sector checksums. However, there will be a *huge* performance penalty, as every sector write will cause an additional seek and write for the parity sector. In the end, you would add very little security by the price of -at least- cutting half your write performance. Thus, I don't think there is any point in adding redundancy to single disk systems. Just my 2 cents... (Gerald) >Hi, >Since btrfs is someday going to be the default FS for Linux, and will >be on so many single disk PCs and laptops, I was thinking it should be >a good idea to insert some redundancy in single disk deployments. Of >course it can help with disk failures, since it's obviously a "single" >disk, but it can help with bit-rot, and with hardware sector read >errors. To get that we'd need to implement some kind of forward error >correction, possibly reed solomon code. I am not sure why no >filesystem seems to implement such scheme, although I believe at the >hardware level, such schemes are being used (so the idea is >applicable) ? >Not that I am an expert on such matters, but I thought I'd drop that >suggestion here, maybe at least I'll know why no one else seems to do >that ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-19 15:18 ` Gerald Nowitzky @ 2008-07-19 22:15 ` Joe Peterson 2008-07-20 1:21 ` Bron Gondwana 2008-07-21 6:48 ` Tomasz Torcz 1 sibling, 1 reply; 13+ messages in thread From: Joe Peterson @ 2008-07-19 22:15 UTC (permalink / raw) To: Gerald Nowitzky; +Cc: linux-btrfs Gerald Nowitzky wrote: > When a HDD drive reads a sector from disk, it does a > whole bunch of error recognition and correction measures. Usually there are, > at least, two layers of error correction with different bit spreads on it. > *If* this still isn't enough, it is very likely that the whole sector will > come back completely spoiled, or, much more likely, won't come back at all > and the drive will report a read error. With larger and larger disks, it is increasingly likely we will see undetected/uncorrected errors (the drive bit error rates are not improving - 1 in 10^17 is typical). It is clear we cannot rely completely on the hardware to catch everything. Also, errors that happen in the hardware between the drive and the CPU can be caused by bad cables, interfaces, etc. For even single disk systems (even without mirroring), it is still valid to have some means of verifying integrity. It is far better to know an error occurred and which files are affected than to have it happen silently. If caught, undetected errors will be less likely to migrate onto backups over time and slowly corrupt data there too, making eventual recovery impossible. That's why btrfs's checksums are so cool! See my blog for my personal experiences with silent hard disk errors: http://planet.gentoo.org/developers/lavajoe/ -Joe ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-19 22:15 ` Joe Peterson @ 2008-07-20 1:21 ` Bron Gondwana 0 siblings, 0 replies; 13+ messages in thread From: Bron Gondwana @ 2008-07-20 1:21 UTC (permalink / raw) To: Joe Peterson; +Cc: Gerald Nowitzky, linux-btrfs On Sat, Jul 19, 2008 at 04:15:43PM -0600, Joe Peterson wrote: > Gerald Nowitzky wrote: > > When a HDD drive reads a sector from disk, it does a > > whole bunch of error recognition and correction measures. Usually there are, > > at least, two layers of error correction with different bit spreads on it. > > *If* this still isn't enough, it is very likely that the whole sector will > > come back completely spoiled, or, much more likely, won't come back at all > > and the drive will report a read error. > > With larger and larger disks, it is increasingly likely we will see > undetected/uncorrected errors (the drive bit error rates are not > improving - 1 in 10^17 is typical). It is clear we cannot rely > completely on the hardware to catch everything. Also, errors that > happen in the hardware between the drive and the CPU can be caused by > bad cables, interfaces, etc. > > For even single disk systems (even without mirroring), it is still valid > to have some means of verifying integrity. It is far better to know an > error occurred and which files are affected than to have it happen > silently. If caught, undetected errors will be less likely to migrate > onto backups over time and slowly corrupt data there too, making > eventual recovery impossible. That's why btrfs's checksums are so cool! > > See my blog for my personal experiences with silent hard disk errors: > > http://planet.gentoo.org/developers/lavajoe/ I've seen an interesting discussion elsewhere about this very issue, in the context of retrofitting some sort of checksumming support to FFS. The suggestion was to make 128th block a checksum block for the previous 127 blocks (scale to your liking). Without changing the filesystem format _at_all_ you could still checksum so long as you read in 128 blocks at a time. This isn't a major problem, since you'll probably want that sort of readahead anyway. Of course - that's just error detection, not error correction. Bron. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-19 15:18 ` Gerald Nowitzky 2008-07-19 22:15 ` Joe Peterson @ 2008-07-21 6:48 ` Tomasz Torcz 2008-07-21 7:40 ` Ahmed Kamal 1 sibling, 1 reply; 13+ messages in thread From: Tomasz Torcz @ 2008-07-21 6:48 UTC (permalink / raw) To: linux-btrfs Dnia 2008-07-19, sob o godzinie 17:18 +0200, Gerald Nowitzky pisze: > In the end, you would add very little security by the price of -at least- > cutting half your write performance. Thus, I don't think there is any point > in adding redundancy to single disk systems. ZFS can store multiple copies of data block within one disk. Using your words, it's like "Intra-Disk-RAID1". After reading data, when checksum shows it's corrupted, another copy (hopefully correct) is read from other disk location. This is adding security by the price of half storage capacity. Which seems like a fair game, given todays 1,5TB HDDs. -- Tomasz Torcz ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-21 6:48 ` Tomasz Torcz @ 2008-07-21 7:40 ` Ahmed Kamal 2008-07-21 13:03 ` Chris Mason 2008-07-21 15:03 ` Dongjun Shin 0 siblings, 2 replies; 13+ messages in thread From: Ahmed Kamal @ 2008-07-21 7:40 UTC (permalink / raw) To: Tomasz Torcz; +Cc: linux-btrfs I definitely hope btrfs has this per-object "copies" property too. However, simply replicating the whole contents of a directory, wastes too much disk space, as opposed to RS codes On Mon, Jul 21, 2008 at 9:48 AM, Tomasz Torcz <tomek@crocom.com.pl> wrote: > Dnia 2008-07-19, sob o godzinie 17:18 +0200, Gerald Nowitzky pisze: > >> In the end, you would add very little security by the price of -at least- >> cutting half your write performance. Thus, I don't think there is any point >> in adding redundancy to single disk systems. > > ZFS can store multiple copies of data block within one disk. Using > your words, it's like "Intra-Disk-RAID1". After reading data, when > checksum shows it's corrupted, another copy (hopefully correct) is read > from other disk location. > This is adding security by the price of half storage capacity. Which > seems like a fair game, given todays 1,5TB HDDs. > > -- > Tomasz Torcz > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-21 7:40 ` Ahmed Kamal @ 2008-07-21 13:03 ` Chris Mason 2008-07-21 15:03 ` Dongjun Shin 1 sibling, 0 replies; 13+ messages in thread From: Chris Mason @ 2008-07-21 13:03 UTC (permalink / raw) To: Ahmed Kamal; +Cc: Tomasz Torcz, linux-btrfs On Mon, 2008-07-21 at 10:40 +0300, Ahmed Kamal wrote: > I definitely hope btrfs has this per-object "copies" property too. > However, simply replicating the whole contents of a directory, wastes > too much disk space, as opposed to RS codes > Btrfs already has a raid level where things are duplicated on the single spindles and it is on by default for metadata. mkfs isn't currently setup to use this on data blocks, but it is certainly possible (look for BTRFS_BLOCK_GROUP_DUP). This is definitely less reliable than two physical devices, and I worry that such a feature would give people the impression that single drive raid is a good idea. As others have already said, the drives to have considerable error detection and correction already. One of the main benefits of the checksums is being able to tell which copy of the data from a group of drives is correct. In terms of detecting errors, the data checksums will do that. -chris ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-21 7:40 ` Ahmed Kamal 2008-07-21 13:03 ` Chris Mason @ 2008-07-21 15:03 ` Dongjun Shin 2008-08-04 6:52 ` Ahmed Kamal 1 sibling, 1 reply; 13+ messages in thread From: Dongjun Shin @ 2008-07-21 15:03 UTC (permalink / raw) To: Ahmed Kamal; +Cc: Tomasz Torcz, linux-btrfs On Mon, Jul 21, 2008 at 4:40 PM, Ahmed Kamal <email.ahmedkamal@googlemail.com> wrote: > I definitely hope btrfs has this per-object "copies" property too. > However, simply replicating the whole contents of a directory, wastes > too much disk space, as opposed to RS codes > Although adding redundancy mechanism will help increasing the integrity of data, I'm not sure whether repeating the same kind of mechanism twice will help. (AFAIK, RS is common in HDD and BCH is common in flash due to their own physical characteristics) I think it is better to have another redundancy mechanism (like RAID1) which is independent of the algorithm used by the underlying storage. -- Dongjun ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-21 15:03 ` Dongjun Shin @ 2008-08-04 6:52 ` Ahmed Kamal 2008-08-04 11:31 ` Ric Wheeler 0 siblings, 1 reply; 13+ messages in thread From: Ahmed Kamal @ 2008-08-04 6:52 UTC (permalink / raw) To: linux-btrfs An experiment of applying RS codes for protecting data, worth a look http://ttsiodras.googlepages.com/rsbep.html He overwrites a series of 127 sectors and still manages to correctly recover his data. We all know disks give us unreadable sectors every now and then, so at least on workstations/laptops this could really be useful ? Advantage over single-disk-raid1 is storage efficiency (4.2MB becomes 5.2MB), that means we get 80% of useable disk space, instead of 50% if I decide to raid1 everything ? On Mon, Jul 21, 2008 at 6:03 PM, Dongjun Shin <djshin90@gmail.com> wrote: > On Mon, Jul 21, 2008 at 4:40 PM, Ahmed Kamal > <email.ahmedkamal@googlemail.com> wrote: >> I definitely hope btrfs has this per-object "copies" property too. >> However, simply replicating the whole contents of a directory, wastes >> too much disk space, as opposed to RS codes >> > > Although adding redundancy mechanism will help increasing the integrity of data, > I'm not sure whether repeating the same kind of mechanism twice will help. > (AFAIK, RS is common in HDD and BCH is common in flash due to their own > physical characteristics) > > I think it is better to have another redundancy mechanism (like RAID1) > which is independent of the algorithm used by the underlying storage. > > -- > Dongjun > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-08-04 6:52 ` Ahmed Kamal @ 2008-08-04 11:31 ` Ric Wheeler 0 siblings, 0 replies; 13+ messages in thread From: Ric Wheeler @ 2008-08-04 11:31 UTC (permalink / raw) To: Ahmed Kamal; +Cc: linux-btrfs Ahmed Kamal wrote: > An experiment of applying RS codes for protecting data, worth a look > http://ttsiodras.googlepages.com/rsbep.html > > He overwrites a series of 127 sectors and still manages to correctly > recover his data. We all know disks give us unreadable sectors every > now and then, so at least on workstations/laptops this could really be > useful ? > > Advantage over single-disk-raid1 is storage efficiency (4.2MB becomes > 5.2MB), that means we get 80% of useable disk space, instead of 50% if > I decide to raid1 everything ? > > This is an interesting idea and could help recover from some types of failures (for example, single head failures) or localized bad sectors (think of dust or junk on the platter). This is almost certainly a big win for single disk systems. You would probably still need to RAID (or do other protection schemes) to get enterprise class data availability since you clearly cannot handle a full drive failure whenever you have multiple drives in a system. Thanks! ric ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-19 12:21 single disk reed solomon codes Ahmed Kamal 2008-07-19 15:18 ` Gerald Nowitzky @ 2008-07-19 16:50 ` David Woodhouse 2008-07-19 16:53 ` Ahmed Kamal 2008-07-21 13:05 ` Chris Mason 1 sibling, 2 replies; 13+ messages in thread From: David Woodhouse @ 2008-07-19 16:50 UTC (permalink / raw) To: Ahmed Kamal; +Cc: linux-btrfs On Sat, 2008-07-19 at 15:21 +0300, Ahmed Kamal wrote: > Hi, > Since btrfs is someday going to be the default FS for Linux, and will > be on so many single disk PCs and laptops, I was thinking it should be > a good idea to insert some redundancy in single disk deployments. Of > course it can help with disk failures, since it's obviously a "single" > disk, but it can help with bit-rot, and with hardware sector read > errors. To get that we'd need to implement some kind of forward error > correction, possibly reed solomon code. I am not sure why no > filesystem seems to implement such scheme, although I believe at the > hardware level, such schemes are being used (so the idea is > applicable) ? We have implementations of such schemes in lib/reed_solomon/ in the kernel already. I'm quite interested in using btrfs on flash (I mean _real_ flash not SSDs where they have their own internal pseudo-fs pretending to be a disk). For that, we'd probably want to use precisely this kind of error correction. Although it's normal to do it at the block level rather than the filesystem object level; I don't know if the failure modes on real disks are likely to be helped by this kind of scheme or not. After all, the disks already do a similar RS-based error correction for themselves. If we're unlucky in our choice of error correction, it might even be possible to end up in a situation where the only errors we'd _see_ are the ones which were uncorrectable. -- dwmw2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-19 16:50 ` David Woodhouse @ 2008-07-19 16:53 ` Ahmed Kamal 2008-07-21 13:05 ` Chris Mason 1 sibling, 0 replies; 13+ messages in thread From: Ahmed Kamal @ 2008-07-19 16:53 UTC (permalink / raw) To: David Woodhouse; +Cc: linux-btrfs > RS-based error correction for themselves. If we're unlucky in our choice > of error correction, it might even be possible to end up in a situation > where the only errors we'd _see_ are the ones which were uncorrectable. > but since at the FS level, the redundancy would be at a different place, than the hardware level redundancy, it might be correctable to you ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: single disk reed solomon codes 2008-07-19 16:50 ` David Woodhouse 2008-07-19 16:53 ` Ahmed Kamal @ 2008-07-21 13:05 ` Chris Mason 1 sibling, 0 replies; 13+ messages in thread From: Chris Mason @ 2008-07-21 13:05 UTC (permalink / raw) To: David Woodhouse; +Cc: Ahmed Kamal, linux-btrfs On Sat, 2008-07-19 at 09:50 -0700, David Woodhouse wrote: > On Sat, 2008-07-19 at 15:21 +0300, Ahmed Kamal wrote: > > Hi, > > Since btrfs is someday going to be the default FS for Linux, and will > > be on so many single disk PCs and laptops, I was thinking it should be > > a good idea to insert some redundancy in single disk deployments. Of > > course it can help with disk failures, since it's obviously a "single" > > disk, but it can help with bit-rot, and with hardware sector read > > errors. To get that we'd need to implement some kind of forward error > > correction, possibly reed solomon code. I am not sure why no > > filesystem seems to implement such scheme, although I believe at the > > hardware level, such schemes are being used (so the idea is > > applicable) ? > > We have implementations of such schemes in lib/reed_solomon/ in the > kernel already. > > I'm quite interested in using btrfs on flash (I mean _real_ flash not > SSDs where they have their own internal pseudo-fs pretending to be a > disk). For that, we'd probably want to use precisely this kind of error > correction. Although it's normal to do it at the block level rather than > the filesystem object level; > The long term goal is to have the checksum algorithm selectable between a number of choices. For metadata, you have 256 bits to use and for data you can use anything that will fit in a btree block. So, the way to do this for real flash would be to implement the selectable checksum, and then store the sum + whatever error recovery code you want in the checksum item. -chris ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2008-08-04 11:31 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-07-19 12:21 single disk reed solomon codes Ahmed Kamal 2008-07-19 15:18 ` Gerald Nowitzky 2008-07-19 22:15 ` Joe Peterson 2008-07-20 1:21 ` Bron Gondwana 2008-07-21 6:48 ` Tomasz Torcz 2008-07-21 7:40 ` Ahmed Kamal 2008-07-21 13:03 ` Chris Mason 2008-07-21 15:03 ` Dongjun Shin 2008-08-04 6:52 ` Ahmed Kamal 2008-08-04 11:31 ` Ric Wheeler 2008-07-19 16:50 ` David Woodhouse 2008-07-19 16:53 ` Ahmed Kamal 2008-07-21 13:05 ` Chris Mason
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox