Re: [PATCH v3 0/7] Chunk level degradable check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Qu,

I made some tests (see table below). Basically I created a hybrid btrfs filesystem composed by a metadata "single" profile, and a data single/raid1/raid10/raid5/raid6 profile.

For each test case I tried to remove a disk (which could be used by data and or metadata), and then I checked if the filesystem was mountable.

The results were alway the ones expected: when the number of the disks was insufficient, btrfs refused to mount the filesystem. Otherwise of the mount was fine with the correct info in dmesg (with the exception if I remove a disks with the system chunk of course). The hybrid profiles ensure that btrfs checks all the chunks.

The only exception was for raid10. If I remove 2 disks the filesystem were always unmountable. I tried all the combinations and none was successful. But I suppose that some could be OK: i.e. the ones where I removed each half of raid1. This could be a possible future improvement.

Finally a little suggestion: the message showed in dmesg is something like

"chunk 20971520 missing 3 devices, max tolerance is 2 for writable mount"

I suggest 

"chunk 20971520 (RAID6/6 disks) missing 3 devices, max allowed 2 for a successful mount"

1) "max tolerance is 2" is not very clear for me (but I have to admit my English is terrific :-) )
2) the message seems to suggest that a non-writable mount could be allowed: is it the case ?
3) add (if possible) the raid profile and the number of disks, this could help the diagnosis

Anyway thanks for your effort on the multi-disk support.

BR
G.Baroncelli


Test report:

Data	Metadata	Nr disk	Test	     			ExRes	Res
----    --------	-------	-------------------		-----	----
SINGLE 	SINGLE 		4	Remove  mdata disk       	No 	Yes
SINGLE 	SINGLE 		4	Remove  unused disk       	yes	Yes
SINGLE 	SINGLE 		4	Remove  data disk       	No 	Yes
					
RAID1  	SINGLE 		4	Remove  mdata disk       	No 	yes
RAID1  	SINGLE 		4	Remove  data disk       	Yes	yes
RAID1  	SINGLE 		5	Remove  unused  disk       	yes	yes
RAID1  	SINGLE 		5	Remove  data disk  (2)		No 	yes
					
RAID10 	SINGLE 		5	Remove  mdata disk       	No 	yes
RAID10 	SINGLE 		5	Remove  data disk       	Yes	yes
RAID10 	SINGLE 		5	Remove  data disk  (2)		No 	Yes (*)
					
RAID5  	SINGLE 		5	Remove  mdata disk       	No 	yes
RAID5  	SINGLE 		5	Remove  data disk       	Yes	yes
RAID5  	SINGLE 		5	Remove  data disk  (2)		No 	yes
					
RAID6  	SINGLE 		5	Remove  mdata disk       	No 	yes
RAID6  	SINGLE 		5	Remove  data disk  		Yes	yes
RAID6  	SINGLE 		5	Remove  data disk  (2)		Yes	yes
RAID6  	SINGLE 		5	Remove  data disk  (3)		No 	yes
					
					
Note:					
ExRes: Expected result	      -> expectet mount success
Res: Result		      -> test result
Remove mdata disk             -> remove the disk which holds metadata					
Remove  data disk             -> remove the disk which holds data 
				 (and not metadata)					
Remove  data disk (2)         -> remove 2 disks which hold data (and not
 				 metadata) 
Remove  data disk (3)         -> remove 3 disks which hold data (and not
 				 metadata) 
Removed unused disk           -> removed an unused disk					




On 2017-03-08 03:41, Qu Wenruo wrote:
> Btrfs currently uses num_tolerated_disk_barrier_failures to do global
> check for tolerated missing device.
> 
> Although the one-size-fit-all solution is quite safe, it's too strict
> if data and metadata has different duplication level.
> 
> For example, if one use Single data and RAID1 metadata for 2 disks, it
> means any missing device will make the fs unable to be degraded
> mounted.
> 
> But in fact, some times all single chunks may be in the existing
> device and in that case, we should allow it to be rw degraded mounted.



> 
> Such case can be easily reproduced using the following script:
>  # mkfs.btrfs -f -m raid1 -d sing /dev/sdb /dev/sdc
>  # wipefs -f /dev/sdc
>  # mount /dev/sdb -o degraded,rw
> 
> If using btrfs-debug-tree to check /dev/sdb, one should find that the
> data chunk is only in sdb, so in fact it should allow degraded mount.
> 
> This patchset will introduce a new per-chunk degradable check for
> btrfs, allow above case to succeed, and it's quite small anyway.
> 
> And enhance kernel error message for missing device, at least kernel
> can know what's making mount failed, other than meaningless
> "failed to read system chunk/chunk tree -5".
> 
> v2:
>   Update after almost 2 years.
>   Add the last patch to enhance the kernel output, so user can know
>   it's missing devices prevent btrfs to mount.
> v3:
>   Remove one duplicated missing device output
>   Use the advice from Anand Jain, not to add new members in btrfs_device,
>   but use a new structure extra_rw_degrade_errors, to record error when
>   sending down/waiting device.
> 
> Sorry Dmitrii Tcvetkov and Adam Borowski, I'm afraid I can't add your
> tested-by tags in v3, as the 4th and 4th patches have quite a big change,
> so you may need to retest the new patchset.
> Sorry for the trouble.
> 
> Qu Wenruo (7):
>   btrfs: Introduce a function to check if all chunks a OK for degraded
>     rw mount
>   btrfs: Do chunk level rw degrade check at mount time
>   btrfs: Do chunk level degradation check for remount
>   btrfs: Introduce extra_rw_degrade_errors parameter for
>     btrfs_check_rw_degradable
>   btrfs: Allow barrier_all_devices to do chunk level device check
>   btrfs: Cleanup num_tolerated_disk_barrier_failures
>   btrfs: Enhance missing device kernel message
> 
>  fs/btrfs/ctree.h   |   2 -
>  fs/btrfs/disk-io.c |  87 ++++++------------------------
>  fs/btrfs/disk-io.h |   2 -
>  fs/btrfs/super.c   |   5 +-
>  fs/btrfs/volumes.c | 156 ++++++++++++++++++++++++++++++++++++++++++++---------
>  fs/btrfs/volumes.h |  37 +++++++++++++
>  6 files changed, 188 insertions(+), 101 deletions(-)
> 


-- 
gpg @keyserver.linux.it: Goffredo Baroncelli <kreijackATinwind.it>
Key fingerprint BBF5 1610 0B64 DAC6 5F7D  17B2 0EDA 9B37 8B82 E0B5
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux