https://aznot.com/index.php?title=Linux/Btrfs&feed=atom&action=history
Linux/Btrfs - Revision history
2024-03-28T21:17:28Z
Revision history for this page on the wiki
MediaWiki 1.41.0
https://aznot.com/index.php?title=Linux/Btrfs&diff=3757&oldid=prev
Kenneth: /* Test JBOD Failure Recovery */
2016-10-08T19:54:19Z
<p><span dir="auto"><span class="autocomment">Test JBOD Failure Recovery</span></span></p>
<p><b>New page</b></p><div>== Btrfs ==<br />
<br />
http://btrfs.wiki.kernel.org <br />
<br />
== Installation ==<br />
<br />
# centos<br />
yum install btrfs-progs<br />
# WARNING! - Btrfs Btrfs v0.20-rc1 IS EXPERIMENTAL<br />
<br />
# ubuntu:<br />
apt-get install btrfs-tools<br />
# WARNING! - Btrfs v3.12 IS EXPERIMENTAL<br />
<br />
<br />
== Test JBOD Failure Recovery ==<br />
<br />
<pre><br />
# create image file<br />
dd if=/dev/urandom of=img0 bs=1M count=20<br />
dd if=/dev/urandom of=img1 bs=1M count=20<br />
dd if=/dev/urandom of=img2 bs=1M count=20<br />
<br />
# create loopback devices<br />
losetup /dev/loop0 img0<br />
losetup /dev/loop1 img1<br />
losetup /dev/loop2 img2<br />
# show loop back devices<br />
losetup -a<br />
<br />
# verify btrfs module is loaded<br />
lsmod | grep btrfs<br />
<br />
# make btrfs file system<br />
mkfs.btrfs -L "btrfs-test" /dev/loop0 /dev/loop1 /dev/loop2<br />
<br />
# btrfs device scan<br />
btrfs device scan<br />
btrfs filesystem show # should show the devices<br />
<br />
# see that the block id label is picked up<br />
blkid | grep btrfs-test<br />
<br />
# mount btrfs file system<br />
mount /dev/loop0 /mnt<br />
<br />
#traffic<br />
cd /mnt<br />
for i in 1 2 3 4 5 ; do mkdir $i ; cd $i ; dd if=/dev/urandom of=$i.dat bs=1M count=20 ; md5sum $i.dat> $i.dat.md5 ; cd .. ; done<br />
cd ~<br />
<br />
# umount btrfs file system<br />
umount /mnt<br />
<br />
# simulate destroying one drive<br />
#losetup -d /dev/loop0<br />
losetup -d /dev/loop1<br />
<br />
# btrfs device scan<br />
btrfs device scan<br />
btrfs filesystem show # should show the devices<br />
<br />
# try mounting remaining device<br />
#mount /dev/loop1 /mnt # <-- fails - expected<br />
#mount /dev/loop1 /mnt -oro,degraded # <-- fails!<br />
#mount /dev/loop1 /mnt -oro,degraded,recovery # <-- fails!<br />
mount /dev/loop2 /mnt -oro,degraded<br />
<br />
# verify data<br />
cd /mnt<br />
for i in 1 2 3 4 5 ; do cd $i ; echo "$i:" ; md5sum -c $i.dat.md5 ; cd .. ; done<br />
<br />
# cleanup<br />
umount /mnt # should already be done<br />
losetup -d /dev/loop0 # should already be done<br />
losetup -d /dev/loop1<br />
losetup -d /dev/loop2<br />
rm -f img0 img1 img2<br />
</pre><br />
<br />
<br />
Note: Failing the first drive fails the to mount at all, but failing a different drive seems to work.<br />
<br />
<br />
Test mentioned here: https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices#Filesystem_creation</div>
Kenneth