|
|
|
@ -16,32 +16,42 @@ dd if=/dev/urandom of=./testdata/img1.bin bs=1M count=$IMG_SIZE |
|
|
|
|
|
|
|
|
|
dd if=./testdata/img1.bin of=$NBD_DEV bs=1M count=$IMG_SIZE oflag=direct |
|
|
|
|
|
|
|
|
|
$ETCDCTL put /vitastor/config/inode/1/1 '{"name":"testimg0","size":'$((IMG_SIZE*1024*1024))'}' |
|
|
|
|
$ETCDCTL put /vitastor/config/inode/1/2 '{"name":"testimg","size":'$((IMG_SIZE*1024*1024))',"parent_id":1}' |
|
|
|
|
sleep 1 |
|
|
|
|
verify() { |
|
|
|
|
echo "Verifying before rebalance" |
|
|
|
|
dd if=$NBD_DEV of=./testdata/img2.bin bs=1M count=$IMG_SIZE iflag=direct |
|
|
|
|
diff ./testdata/img1.bin ./testdata/img2.bin |
|
|
|
|
|
|
|
|
|
echo "Verifying before rebalance" |
|
|
|
|
dd if=$NBD_DEV of=./testdata/img2.bin bs=1M count=$IMG_SIZE iflag=direct |
|
|
|
|
diff ./testdata/img1.bin ./testdata/img2.bin |
|
|
|
|
$ETCDCTL put /vitastor/config/osd/1 '{"reweight":'$1'}' |
|
|
|
|
$ETCDCTL put /vitastor/config/osd/2 '{"reweight":'$1'}' |
|
|
|
|
$ETCDCTL put /vitastor/config/osd/3 '{"reweight":'$1'}' |
|
|
|
|
sleep 1 |
|
|
|
|
|
|
|
|
|
$ETCDCTL put /vitastor/config/osd/1 '{"reweight":0}' |
|
|
|
|
$ETCDCTL put /vitastor/config/osd/2 '{"reweight":0}' |
|
|
|
|
$ETCDCTL put /vitastor/config/osd/3 '{"reweight":0}' |
|
|
|
|
sleep 1 |
|
|
|
|
for i in {1..10000}; do |
|
|
|
|
O=$(((RANDOM*RANDOM) % (IMG_SIZE*128))) |
|
|
|
|
dd if=$NBD_DEV of=./testdata/img2.bin bs=4k seek=$O skip=$O count=1 iflag=direct conv=notrunc |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
echo "Verifying during rebalance" |
|
|
|
|
diff ./testdata/img1.bin ./testdata/img2.bin |
|
|
|
|
|
|
|
|
|
# Wait for the rebalance to finish |
|
|
|
|
wait_finish_rebalance 60 |
|
|
|
|
|
|
|
|
|
for i in {1..10000}; do |
|
|
|
|
O=$(((RANDOM*RANDOM) % (IMG_SIZE*128))) |
|
|
|
|
dd if=$NBD_DEV of=./testdata/img2.bin bs=4k seek=$O skip=$O count=1 iflag=direct conv=notrunc |
|
|
|
|
done |
|
|
|
|
echo "Verifying after rebalance" |
|
|
|
|
dd if=$NBD_DEV of=./testdata/img2.bin bs=1M count=$IMG_SIZE iflag=direct |
|
|
|
|
diff ./testdata/img1.bin ./testdata/img2.bin |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
echo "Verifying during rebalance" |
|
|
|
|
diff ./testdata/img1.bin ./testdata/img2.bin |
|
|
|
|
# Verify with regular reads |
|
|
|
|
|
|
|
|
|
# Wait for the rebalance to finish |
|
|
|
|
wait_finish_rebalance 60 |
|
|
|
|
verify 0 |
|
|
|
|
|
|
|
|
|
# Same with chained reads |
|
|
|
|
|
|
|
|
|
$ETCDCTL put /vitastor/config/inode/1/1 '{"name":"testimg0","size":'$((IMG_SIZE*1024*1024))'}' |
|
|
|
|
$ETCDCTL put /vitastor/config/inode/1/2 '{"name":"testimg","size":'$((IMG_SIZE*1024*1024))',"parent_id":1}' |
|
|
|
|
sleep 1 |
|
|
|
|
|
|
|
|
|
echo "Verifying after rebalance" |
|
|
|
|
dd if=$NBD_DEV of=./testdata/img2.bin bs=1M count=$IMG_SIZE iflag=direct |
|
|
|
|
diff ./testdata/img1.bin ./testdata/img2.bin |
|
|
|
|
verify 1 |
|
|
|
|
|
|
|
|
|
format_green OK |
|
|
|
|