* [PATCH 2.6] md: persistent (file-backed) bitmap and async writes
@ 2003-08-29 15:41 Paul Clements
2003-08-29 18:39 ` Steven Dake
0 siblings, 1 reply; 3+ messages in thread
From: Paul Clements @ 2003-08-29 15:41 UTC (permalink / raw)
To: linux-raid; +Cc: ptb, Neil Brown
At long last... I've finally got my additions to Peter T. Breuer's raid1
bitmap code (fr1 v2.14, ftp://oboe.it.uc3m.es/pub/Programs/fr1-2.14.tgz)
in decent shape and fairly well tested.
The bitmap and asynchronous write capability are primarily useful when
raid1 is employed in data replication (e.g., with a remote disk served
over nbd as the secondary device). However, the bitmap is also useful
for reducing resync times with ordinary (local) raid1 and raid5 arrays.
The additions, above and beyond the original fr1 code, are basically:
* disk storage for the bitmap (makes the bitmap persistent, so that a
full resync is never needed, even after a failure or reboot of the
primary server)
* a kernel daemon to periodically (lazily) clear bits in the bitmap file
(this reduces the number and frequency of disk writes to the bitmap
file)
* changing bits in the bitmap to 16-bit counters (this ensures that a
bit won't be cleared prematurely when there are multiple outstanding
I/Os to a block, which could result in data loss on the backup system if
a failure coincided)
* allowing the bitmap to be rescaled -- i.e., changing the amount of
data that each bit represents (currently, the 2.6 code can handle a
chunk size up to 64k)
* modifying the code so that it can be more easily leveraged by other
raid drivers (namely raid5)
I originally wrote this code for 2.4 (I have a patch vs. 2.4.19 SuSE
kernel, if anyone is interested) and recently ported it to 2.6. The code
currently allows the use of a bitmap with raid1 arrays (this could also
be extended to raid5, but I haven't put the bitmap calls into raid5.c --
if anyone would like to do that, I'd love to see it happen -- it
shouldn't be hard if you're familiar with raid5 (...I'm not :/).
I have also modified Neil's mdadm tool to allow it to configure the
additional bitmap and async parameters. The attached patch is against
the 1.2 mdadm release. Briefly, the new options are:
Creation:
mdadm -C /dev/md0 -l 1 --persistent
--bitmap=/tmp/bitmap_md0_file,65536,15 --async=512 -n 2 /dev/xxx
/dev/yyy
This creates a raid1 array with:
two disks
a persistent superblock
asynchronous writes enabled (maximum of 512 outstanding writes)
bitmap enabled (using the file /tmp/bitmap_md0_file)
a bitmap chunksize of 64k (bitmap chunksize determines how much data
each bitmap bit represents)
the bitmap daemon set to wake up every 15 seconds to clear bits in the
bitmap file (if needed)
/dev/xxx as the primary disk
/dev/yyy as the backup disk (when asynchronous writes are enabled, the
second disk in the array is labelled as a "backup", indicating that it
is remote, and thus no reads will be issued to the device)
Assembling:
mdadm -A /dev/md0 --bitmap=/tmp/bitmap_md0_file /dev/xxx /dev/yyy
This assembles an existing array and configures it to use a bitmap file.
The bitmap file pathname is not stored in the array superblock, and so
must be specified every time the array is assembled.
Details:
mdadm -D /dev/md0
This will display information about /dev/md0, including some additional
information about the bitmap and async parameters.
I've also added some information to the /proc/mdstat file:
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 loop0[0] loop1[1](B)
39936 blocks [2/2] [UU]
async: 0/256 outstanding writes
bitmap: 1/1 pages (15 cached) [64KB], 64KB chunk, file:
/tmp/bitmap_md1
unused devices: <none>
Finally, the patches are available here:
kernel patch vs. 2.6.0-test3:
http://parisc-linux.org/~jejb/md_bitmap/md_bitmap_2_28_2_6_0_TEST3.diff
mdadm patch vs. 1.2.0:
http://parisc-linux.org/~jejb/md_bitmap/mdadm_1_2_0.diff
So if you have any interest, please review, test, ask questions, etc.
(And if you're really a glutton, the gory details of the design and
implementation can be found in Section 3 of my OLS Paper:
http://archive.linuxsymposium.org/ols2003/Proceedings/All-Reprints/Reprint-Clements-OLS2003.pdf)
Thanks,
Paul
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH 2.6] md: persistent (file-backed) bitmap and async writes
2003-08-29 15:41 [PATCH 2.6] md: persistent (file-backed) bitmap and async writes Paul Clements
@ 2003-08-29 18:39 ` Steven Dake
2003-09-03 1:04 ` [PATCH 2.6] md: persistent (file-backed) bitmap and asyncwrites Paul Clements
0 siblings, 1 reply; 3+ messages in thread
From: Steven Dake @ 2003-08-29 18:39 UTC (permalink / raw)
To: Paul Clements; +Cc: linux-raid, ptb, Neil Brown
looks good
i'd like to see the 2.4 kernel patches as well
Could you post them at parisc-linux.org ?
On Fri, 2003-08-29 at 08:41, Paul Clements wrote:
> At long last... I've finally got my additions to Peter T. Breuer's raid1
> bitmap code (fr1 v2.14, ftp://oboe.it.uc3m.es/pub/Programs/fr1-2.14.tgz)
> in decent shape and fairly well tested.
>
> The bitmap and asynchronous write capability are primarily useful when
> raid1 is employed in data replication (e.g., with a remote disk served
> over nbd as the secondary device). However, the bitmap is also useful
> for reducing resync times with ordinary (local) raid1 and raid5 arrays.
>
> The additions, above and beyond the original fr1 code, are basically:
>
> * disk storage for the bitmap (makes the bitmap persistent, so that a
> full resync is never needed, even after a failure or reboot of the
> primary server)
>
> * a kernel daemon to periodically (lazily) clear bits in the bitmap file
> (this reduces the number and frequency of disk writes to the bitmap
> file)
>
> * changing bits in the bitmap to 16-bit counters (this ensures that a
> bit won't be cleared prematurely when there are multiple outstanding
> I/Os to a block, which could result in data loss on the backup system if
> a failure coincided)
>
> * allowing the bitmap to be rescaled -- i.e., changing the amount of
> data that each bit represents (currently, the 2.6 code can handle a
> chunk size up to 64k)
>
> * modifying the code so that it can be more easily leveraged by other
> raid drivers (namely raid5)
>
> I originally wrote this code for 2.4 (I have a patch vs. 2.4.19 SuSE
> kernel, if anyone is interested) and recently ported it to 2.6. The code
> currently allows the use of a bitmap with raid1 arrays (this could also
> be extended to raid5, but I haven't put the bitmap calls into raid5.c --
> if anyone would like to do that, I'd love to see it happen -- it
> shouldn't be hard if you're familiar with raid5 (...I'm not :/).
>
>
> I have also modified Neil's mdadm tool to allow it to configure the
> additional bitmap and async parameters. The attached patch is against
> the 1.2 mdadm release. Briefly, the new options are:
>
> Creation:
>
> mdadm -C /dev/md0 -l 1 --persistent
> --bitmap=/tmp/bitmap_md0_file,65536,15 --async=512 -n 2 /dev/xxx
> /dev/yyy
>
> This creates a raid1 array with:
>
> two disks
> a persistent superblock
> asynchronous writes enabled (maximum of 512 outstanding writes)
> bitmap enabled (using the file /tmp/bitmap_md0_file)
> a bitmap chunksize of 64k (bitmap chunksize determines how much data
> each bitmap bit represents)
> the bitmap daemon set to wake up every 15 seconds to clear bits in the
> bitmap file (if needed)
> /dev/xxx as the primary disk
> /dev/yyy as the backup disk (when asynchronous writes are enabled, the
> second disk in the array is labelled as a "backup", indicating that it
> is remote, and thus no reads will be issued to the device)
>
>
> Assembling:
>
> mdadm -A /dev/md0 --bitmap=/tmp/bitmap_md0_file /dev/xxx /dev/yyy
>
> This assembles an existing array and configures it to use a bitmap file.
> The bitmap file pathname is not stored in the array superblock, and so
> must be specified every time the array is assembled.
>
>
> Details:
>
> mdadm -D /dev/md0
>
> This will display information about /dev/md0, including some additional
> information about the bitmap and async parameters.
>
>
> I've also added some information to the /proc/mdstat file:
>
> # cat /proc/mdstat
> Personalities : [raid1]
> md1 : active raid1 loop0[0] loop1[1](B)
> 39936 blocks [2/2] [UU]
> async: 0/256 outstanding writes
> bitmap: 1/1 pages (15 cached) [64KB], 64KB chunk, file:
> /tmp/bitmap_md1
>
> unused devices: <none>
>
>
> Finally, the patches are available here:
>
> kernel patch vs. 2.6.0-test3:
>
> http://parisc-linux.org/~jejb/md_bitmap/md_bitmap_2_28_2_6_0_TEST3.diff
>
> mdadm patch vs. 1.2.0:
>
> http://parisc-linux.org/~jejb/md_bitmap/mdadm_1_2_0.diff
>
>
> So if you have any interest, please review, test, ask questions, etc.
>
> (And if you're really a glutton, the gory details of the design and
> implementation can be found in Section 3 of my OLS Paper:
> http://archive.linuxsymposium.org/ols2003/Proceedings/All-Reprints/Reprint-Clements-OLS2003.pdf)
>
>
> Thanks,
> Paul
> -
> To unsubscribe from this list: send the line "unsubscribe linux-raid" 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] 3+ messages in thread
* Re: [PATCH 2.6] md: persistent (file-backed) bitmap and asyncwrites
2003-08-29 18:39 ` Steven Dake
@ 2003-09-03 1:04 ` Paul Clements
0 siblings, 0 replies; 3+ messages in thread
From: Paul Clements @ 2003-09-03 1:04 UTC (permalink / raw)
To: sdake; +Cc: linux-raid, ptb, Neil Brown
Steven Dake wrote:
>
> looks good
> i'd like to see the 2.4 kernel patches as well
>
> Could you post them at parisc-linux.org ?
Sure, here's my latest bitmap patch (v2.24) for 2.4.19-340 (SuSE):
http://parisc-linux.org/~jejb/md_bitmap/md_bitmap_2_24_2_4_19_SUSE_340.diff
It should apply with minimal difficulties to any recent 2.4 kernel.
--
Paul
> On Fri, 2003-08-29 at 08:41, Paul Clements wrote:
> > At long last... I've finally got my additions to Peter T. Breuer's raid1
> > bitmap code (fr1 v2.14, ftp://oboe.it.uc3m.es/pub/Programs/fr1-2.14.tgz)
> > in decent shape and fairly well tested.
> >
> > The bitmap and asynchronous write capability are primarily useful when
> > raid1 is employed in data replication (e.g., with a remote disk served
> > over nbd as the secondary device). However, the bitmap is also useful
> > for reducing resync times with ordinary (local) raid1 and raid5 arrays.
> >
> > The additions, above and beyond the original fr1 code, are basically:
> >
> > * disk storage for the bitmap (makes the bitmap persistent, so that a
> > full resync is never needed, even after a failure or reboot of the
> > primary server)
> >
> > * a kernel daemon to periodically (lazily) clear bits in the bitmap file
> > (this reduces the number and frequency of disk writes to the bitmap
> > file)
> >
> > * changing bits in the bitmap to 16-bit counters (this ensures that a
> > bit won't be cleared prematurely when there are multiple outstanding
> > I/Os to a block, which could result in data loss on the backup system if
> > a failure coincided)
> >
> > * allowing the bitmap to be rescaled -- i.e., changing the amount of
> > data that each bit represents (currently, the 2.6 code can handle a
> > chunk size up to 64k)
> >
> > * modifying the code so that it can be more easily leveraged by other
> > raid drivers (namely raid5)
> >
> > I originally wrote this code for 2.4 (I have a patch vs. 2.4.19 SuSE
> > kernel, if anyone is interested) and recently ported it to 2.6. The code
> > currently allows the use of a bitmap with raid1 arrays (this could also
> > be extended to raid5, but I haven't put the bitmap calls into raid5.c --
> > if anyone would like to do that, I'd love to see it happen -- it
> > shouldn't be hard if you're familiar with raid5 (...I'm not :/).
> >
> >
> > I have also modified Neil's mdadm tool to allow it to configure the
> > additional bitmap and async parameters. The attached patch is against
> > the 1.2 mdadm release. Briefly, the new options are:
> >
> > Creation:
> >
> > mdadm -C /dev/md0 -l 1 --persistent
> > --bitmap=/tmp/bitmap_md0_file,65536,15 --async=512 -n 2 /dev/xxx
> > /dev/yyy
> >
> > This creates a raid1 array with:
> >
> > two disks
> > a persistent superblock
> > asynchronous writes enabled (maximum of 512 outstanding writes)
> > bitmap enabled (using the file /tmp/bitmap_md0_file)
> > a bitmap chunksize of 64k (bitmap chunksize determines how much data
> > each bitmap bit represents)
> > the bitmap daemon set to wake up every 15 seconds to clear bits in the
> > bitmap file (if needed)
> > /dev/xxx as the primary disk
> > /dev/yyy as the backup disk (when asynchronous writes are enabled, the
> > second disk in the array is labelled as a "backup", indicating that it
> > is remote, and thus no reads will be issued to the device)
> >
> >
> > Assembling:
> >
> > mdadm -A /dev/md0 --bitmap=/tmp/bitmap_md0_file /dev/xxx /dev/yyy
> >
> > This assembles an existing array and configures it to use a bitmap file.
> > The bitmap file pathname is not stored in the array superblock, and so
> > must be specified every time the array is assembled.
> >
> >
> > Details:
> >
> > mdadm -D /dev/md0
> >
> > This will display information about /dev/md0, including some additional
> > information about the bitmap and async parameters.
> >
> >
> > I've also added some information to the /proc/mdstat file:
> >
> > # cat /proc/mdstat
> > Personalities : [raid1]
> > md1 : active raid1 loop0[0] loop1[1](B)
> > 39936 blocks [2/2] [UU]
> > async: 0/256 outstanding writes
> > bitmap: 1/1 pages (15 cached) [64KB], 64KB chunk, file:
> > /tmp/bitmap_md1
> >
> > unused devices: <none>
> >
> >
> > Finally, the patches are available here:
> >
> > kernel patch vs. 2.6.0-test3:
> >
> > http://parisc-linux.org/~jejb/md_bitmap/md_bitmap_2_28_2_6_0_TEST3.diff
> >
> > mdadm patch vs. 1.2.0:
> >
> > http://parisc-linux.org/~jejb/md_bitmap/mdadm_1_2_0.diff
> >
> >
> > So if you have any interest, please review, test, ask questions, etc.
> >
> > (And if you're really a glutton, the gory details of the design and
> > implementation can be found in Section 3 of my OLS Paper:
> > http://archive.linuxsymposium.org/ols2003/Proceedings/All-Reprints/Reprint-Clements-OLS2003.pdf)
> >
> >
> > Thanks,
> > Paul
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
> >
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-raid" 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] 3+ messages in thread
end of thread, other threads:[~2003-09-03 1:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-29 15:41 [PATCH 2.6] md: persistent (file-backed) bitmap and async writes Paul Clements
2003-08-29 18:39 ` Steven Dake
2003-09-03 1:04 ` [PATCH 2.6] md: persistent (file-backed) bitmap and asyncwrites Paul Clements
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).