From: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
To: Stefan Behrens <sbehrens@giantdisaster.de>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 00/26] Btrfs: Add device replace code
Date: Wed, 07 Nov 2012 11:14:36 +0900 [thread overview]
Message-ID: <5099C40C.6030003@jp.fujitsu.com> (raw)
In-Reply-To: <cover.1352214751.git.sbehrens@giantdisaster.de>
(2012/11/07 1:38), Stefan Behrens wrote:
> This patch series adds support for replacing disks at runtime.
>
> It replaces the following steps in case a disk was lost:
> mount ... -o degraded
> btrfs device add new_disk
> btrfs device delete missing
>
> Or in case a disk just needs to be replaced because the error rate
> is increasing:
> btrfs device add new_disk
> btrfs device delete old_disk
>
> Instead just run:
> btrfs replace mountpoint old_disk new_disk
>
> The device replace operation takes place at runtime on a live
> filesystem, you don't need to unmount it or stop active tasks.
> It is safe to crash or lose power during the operation, the
> process resumes with the next mount.
>
> The copy usually takes place at 90% of the available platter
> speed if no additional disk I/O is ongoing during the copy
> operation, thus the degraded state without redundancy can be
> left quickly.
>
> The copy process is started manually. It is a different project
> to react on an increased device I/O error rate with an automatic
> start of this procedure.
>
> The patch series is based on btrfs-next and also available here:
> git://btrfs.giantdisaster.de/git/btrfs device-replace
>
> The user mode part is the top commit of
> git://btrfs.giantdisaster.de/git/btrfs-progs master
>
>
> replace start [-Bfr] <path> <srcdev>|<devid> <targetdev>
I think that
"btrfs replace start [-Bfr] <srcdev>|<devid> <targetdev> <path>"
of the same synopsis as other subcommands is better.
- Tsutomu
> Replace device of a btrfs filesystem. On a live filesystem,
> duplicate the data to the target device which is currently
> stored on the source device. If the source device is not avail-
> able anymore, or if the -r option is set, the data is built only
> using the RAID redundancy mechanisms. After completion of the
> operation, the source device is removed from the filesystem. If
> the srcdev is a numerical value, it is assumed to be the device
> id of the filesystem which is mounted at mount_point, otherwise
> is is the path to the source device. If the source device is
> disconnected, from the system, you have to use the devid parame-
> ter format. The targetdev needs to be same size or larger than
> the srcdev.
>
> Options
>
> -r only read from srcdev if no other zero-defect mirror
> exists (enable this if your drive has lots of read
> errors, the access would be very slow)
>
> -f force using and overwriting targetdev even if it looks
> like containing a valid btrfs filesystem. A valid
> filesystem is assumed if a btrfs superblock is found
> which contains a correct checksum. Devices which are cur-
> rently mounted are never allowed to be used as the tar-
> getdev
>
> -B do not background
>
>
> replace status [-1] <path>
> Print status and progress information of a running device
> replace operation.
>
> Options
>
> -1 print once instead of print continously until the replace
> operation finishes (or is canceled)
>
>
> replace cancel <path>
> Cancel a running device replace operation.
>
>
> Stefan Behrens (26):
> Btrfs: rename the scrub context structure
> Btrfs: remove the block device pointer from the scrub context struct
> Btrfs: make the scrub page array dynamically allocated
> Btrfs: in scrub repair code, optimize the reading of mirrors
> Btrfs: in scrub repair code, simplify alloc error handling
> Btrfs: cleanup scrub bio and worker wait code
> Btrfs: add two more find_device() methods
> Btrfs: Pass fs_info to btrfs_num_copies() instead of mapping_tree
> Btrfs: pass fs_info to btrfs_map_block() instead of mapping_tree
> Btrfs: add btrfs_scratch_superblock() function
> Btrfs: pass fs_info instead of root
> Btrfs: avoid risk of a deadlock in btrfs_handle_error
> Btrfs: enhance btrfs structures for device replace support
> Btrfs: introduce a btrfs_dev_replace_item type
> Btrfs: add a new source file with device replace code
> Btrfs: disallow mutually exclusiv admin operations from user mode
> Btrfs: disallow some operations on the device replace target device
> Btrfs: handle errors from btrfs_map_bio() everywhere
> Btrfs: add code to scrub to copy read data to another disk
> Btrfs: change core code of btrfs to support the device replace
> operations
> Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block()
> Btrfs: changes to live filesystem are also written to replacement
> disk
> Btrfs: optionally avoid reads from device replace source drive
> Btrfs: increase BTRFS_MAX_MIRRORS by one for dev replace
> Btrfs: allow repair code to include target disk when searching
> mirrors
> Btrfs: add support for device replace ioctls
>
> fs/btrfs/Makefile | 2 +-
> fs/btrfs/check-integrity.c | 29 +-
> fs/btrfs/compression.c | 6 +-
> fs/btrfs/ctree.h | 127 ++-
> fs/btrfs/dev-replace.c | 843 ++++++++++++++++++++
> fs/btrfs/dev-replace.h | 44 ++
> fs/btrfs/disk-io.c | 79 +-
> fs/btrfs/extent-tree.c | 5 +-
> fs/btrfs/extent_io.c | 28 +-
> fs/btrfs/extent_io.h | 4 +-
> fs/btrfs/inode.c | 39 +-
> fs/btrfs/ioctl.c | 117 ++-
> fs/btrfs/ioctl.h | 45 ++
> fs/btrfs/print-tree.c | 3 +
> fs/btrfs/reada.c | 31 +-
> fs/btrfs/scrub.c | 1822 ++++++++++++++++++++++++++++++++------------
> fs/btrfs/super.c | 30 +-
> fs/btrfs/transaction.c | 7 +-
> fs/btrfs/volumes.c | 624 +++++++++++++--
> fs/btrfs/volumes.h | 26 +-
> 20 files changed, 3244 insertions(+), 667 deletions(-)
> create mode 100644 fs/btrfs/dev-replace.c
> create mode 100644 fs/btrfs/dev-replace.h
>
next prev parent reply other threads:[~2012-11-07 2:14 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-06 16:38 [PATCH 00/26] Btrfs: Add device replace code Stefan Behrens
2012-11-06 16:38 ` [PATCH 01/26] Btrfs: rename the scrub context structure Stefan Behrens
2012-11-06 16:38 ` [PATCH 02/26] Btrfs: remove the block device pointer from the scrub context struct Stefan Behrens
2012-11-06 16:38 ` [PATCH 03/26] Btrfs: make the scrub page array dynamically allocated Stefan Behrens
2012-11-06 16:38 ` [PATCH 04/26] Btrfs: in scrub repair code, optimize the reading of mirrors Stefan Behrens
2012-11-06 16:38 ` [PATCH 05/26] Btrfs: in scrub repair code, simplify alloc error handling Stefan Behrens
2012-11-06 16:38 ` [PATCH 06/26] Btrfs: cleanup scrub bio and worker wait code Stefan Behrens
2012-11-06 16:38 ` [PATCH 07/26] Btrfs: add two more find_device() methods Stefan Behrens
2012-11-08 14:24 ` Liu Bo
2012-11-12 16:50 ` Stefan Behrens
2012-11-06 16:38 ` [PATCH 08/26] Btrfs: Pass fs_info to btrfs_num_copies() instead of mapping_tree Stefan Behrens
2012-11-06 16:38 ` [PATCH 09/26] Btrfs: pass fs_info to btrfs_map_block() " Stefan Behrens
2012-11-06 16:38 ` [PATCH 10/26] Btrfs: add btrfs_scratch_superblock() function Stefan Behrens
2012-11-06 16:38 ` [PATCH 11/26] Btrfs: pass fs_info instead of root Stefan Behrens
2012-11-06 16:38 ` [PATCH 12/26] Btrfs: avoid risk of a deadlock in btrfs_handle_error Stefan Behrens
2012-11-06 16:38 ` [PATCH 13/26] Btrfs: enhance btrfs structures for device replace support Stefan Behrens
2012-11-06 16:38 ` [PATCH 14/26] Btrfs: introduce a btrfs_dev_replace_item type Stefan Behrens
2012-11-06 16:38 ` [PATCH 15/26] Btrfs: add a new source file with device replace code Stefan Behrens
2012-11-08 14:50 ` Liu Bo
2012-11-08 17:24 ` Stefan Behrens
2012-11-09 0:44 ` Liu Bo
2012-11-09 10:19 ` Stefan Behrens
2012-11-09 14:45 ` Liu Bo
2012-11-12 17:21 ` Stefan Behrens
2012-11-06 16:38 ` [PATCH 16/26] Btrfs: disallow mutually exclusiv admin operations from user mode Stefan Behrens
2012-11-06 16:38 ` [PATCH 17/26] Btrfs: disallow some operations on the device replace target device Stefan Behrens
2012-11-06 16:38 ` [PATCH 18/26] Btrfs: handle errors from btrfs_map_bio() everywhere Stefan Behrens
2012-11-06 16:38 ` [PATCH 19/26] Btrfs: add code to scrub to copy read data to another disk Stefan Behrens
2012-11-07 0:30 ` Tsutomu Itoh
2012-11-07 10:30 ` Stefan Behrens
2012-11-06 16:38 ` [PATCH 20/26] Btrfs: change core code of btrfs to support the device replace operations Stefan Behrens
2012-11-06 16:38 ` [PATCH 21/26] Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() Stefan Behrens
2012-11-06 16:38 ` [PATCH 22/26] Btrfs: changes to live filesystem are also written to replacement disk Stefan Behrens
2012-11-06 16:38 ` [PATCH 23/26] Btrfs: optionally avoid reads from device replace source drive Stefan Behrens
2012-11-06 16:38 ` [PATCH 24/26] Btrfs: increase BTRFS_MAX_MIRRORS by one for dev replace Stefan Behrens
2012-11-09 10:47 ` David Pottage
2012-11-09 11:23 ` Stefan Behrens
2012-11-06 16:38 ` [PATCH 25/26] Btrfs: allow repair code to include target disk when searching mirrors Stefan Behrens
2012-11-06 16:38 ` [PATCH 26/26] Btrfs: add support for device replace ioctls Stefan Behrens
[not found] ` <CAGy7UtjR+kZoBYWaeg=-jHbJHQh4pe3Jt5cwX-rTQEBHFkQ-YQ@mail.gmail.com>
2012-11-06 18:57 ` [PATCH 00/26] Btrfs: Add device replace code Stefan Behrens
2012-11-06 19:20 ` Hugo Mills
2012-11-06 22:48 ` Zach Brown
2012-11-07 10:29 ` Stefan Behrens
2012-11-07 2:14 ` Tsutomu Itoh [this message]
2012-11-07 13:12 ` Stefan Behrens
2012-11-08 12:50 ` Goffredo Baroncelli
2012-11-08 17:31 ` Stefan Behrens
2012-11-08 18:41 ` Goffredo Baroncelli
2012-11-09 10:02 ` Michael Kjörling
2012-11-13 16:25 ` Bart Noordervliet
2012-11-14 11:42 ` Stefan Behrens
2012-11-08 0:59 ` Chris Mason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5099C40C.6030003@jp.fujitsu.com \
--to=t-itoh@jp.fujitsu.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=sbehrens@giantdisaster.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).