Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
63b4b2f3
T
tp-qemu
项目概览
openeuler
/
tp-qemu
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tp-qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
63b4b2f3
编写于
8月 19, 2020
作者:
Y
YongxueHong
提交者:
GitHub
8月 19, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2351 from zhencliu/incbk_inc_success
Incremental backup with sync:incremental,bitmap-mode:on-success
上级
2544cbe4
aa08769e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
172 addition
and
0 deletion
+172
-0
qemu/tests/blockdev_inc_backup_inc_success.py
qemu/tests/blockdev_inc_backup_inc_success.py
+121
-0
qemu/tests/cfg/blockdev_inc_backup_inc_success.cfg
qemu/tests/cfg/blockdev_inc_backup_inc_success.cfg
+51
-0
未找到文件。
qemu/tests/blockdev_inc_backup_inc_success.py
0 → 100644
浏览文件 @
63b4b2f3
from
provider
import
backup_utils
from
provider
import
blockdev_base
from
provider
import
block_dirty_bitmap
from
virttest
import
utils_misc
class
BlockdevIncbkIncSyncSuccBitmapTest
(
blockdev_base
.
BlockdevBaseTest
):
def
__init__
(
self
,
test
,
params
,
env
):
super
(
BlockdevIncbkIncSyncSuccBitmapTest
,
self
).
__init__
(
test
,
params
,
env
)
self
.
source_images
=
[]
self
.
full_backups
=
[]
self
.
inc_backups
=
[]
self
.
inc_backup_tags
=
[]
self
.
bitmaps
=
[]
self
.
src_img_tags
=
params
.
objects
(
"source_images"
)
self
.
inc_sync_mode
=
params
[
"inc_sync_mode"
]
self
.
inc_bitmap_mode
=
params
[
"inc_bitmap_mode"
]
list
(
map
(
self
.
_init_arguments_by_params
,
self
.
src_img_tags
))
def
_init_arguments_by_params
(
self
,
tag
):
image_params
=
self
.
params
.
object_params
(
tag
)
image_chain
=
image_params
.
objects
(
"image_backup_chain"
)
self
.
source_images
.
append
(
"drive_%s"
%
tag
)
self
.
full_backups
.
append
(
"drive_%s"
%
image_chain
[
0
])
self
.
inc_backups
.
append
(
"drive_%s"
%
image_chain
[
1
])
self
.
inc_backup_tags
.
append
(
image_chain
[
1
])
self
.
bitmaps
.
append
(
"bitmap_%s"
%
tag
)
def
do_full_backup
(
self
):
extra_options
=
{
"sync"
:
"full"
,
"auto_disable_bitmap"
:
False
}
backup_utils
.
blockdev_batch_backup
(
self
.
main_vm
,
self
.
source_images
,
self
.
full_backups
,
self
.
bitmaps
,
**
extra_options
)
def
generate_inc_files
(
self
):
return
list
(
map
(
self
.
generate_data_file
,
self
.
src_img_tags
))
def
do_incremental_backup
(
self
):
extra_options
=
{
"sync"
:
self
.
inc_sync_mode
,
"bitmap-mode"
:
self
.
inc_bitmap_mode
,
"auto_disable_bitmap"
:
False
}
backup_utils
.
blockdev_batch_backup
(
self
.
main_vm
,
self
.
source_images
,
self
.
inc_backups
,
self
.
bitmaps
,
**
extra_options
)
def
get_bitmaps_info
(
self
):
out
=
[]
for
idx
,
bitmap
in
enumerate
(
self
.
bitmaps
):
node
=
self
.
source_images
[
idx
]
info
=
block_dirty_bitmap
.
get_bitmap_by_name
(
self
.
main_vm
,
node
,
bitmap
)
out
.
append
(
info
)
return
out
def
do_test
(
self
):
self
.
do_full_backup
()
self
.
generate_inc_files
()
self
.
do_incremental_backup
()
self
.
check_bitmaps
()
self
.
clone_main_vm
()
self
.
check_images
()
def
check_bitmaps
(
self
):
def
_check_bitmaps
():
bitmaps
=
self
.
get_bitmaps_info
()
if
not
bitmaps
:
return
False
for
info
in
bitmaps
:
if
info
[
"count"
]
!=
0
:
return
False
else
:
return
True
refresh_timeout
=
self
.
params
.
get_numeric
(
'refresh_timeout'
,
10
)
if
not
utils_misc
.
wait_for
(
lambda
:
_check_bitmaps
(),
refresh_timeout
,
0
,
1
):
self
.
test
.
fail
(
'count of bitmap should be 0 '
'after incremental backup'
)
def
check_images
(
self
):
self
.
verify_data_files
()
def
clone_main_vm
(
self
):
self
.
main_vm
.
destroy
()
imgs
=
[
self
.
params
[
'images'
].
split
()[
0
]]
+
self
.
inc_backup_tags
self
.
params
[
'images'
]
=
' '
.
join
(
imgs
)
self
.
prepare_main_vm
()
self
.
clone_vm
=
self
.
main_vm
def
run
(
test
,
params
,
env
):
"""
Blockdev incremental backup test
test steps:
1. boot VM with a 2G data disk
2. format data disk and mount it, create a file
3. add target disks for backup to VM via qmp commands
4. do full backup and add non-persistent bitmap
5. create another file
6. do inc bakcup(sync: incremental, bitmap-mode: on-success)
7. check bitmap, count should be 0
8. shutdown VM
9. start VM with inc image, check md5
:param test: test object
:param params: test configuration dict
:param env: env object
"""
inc_test
=
BlockdevIncbkIncSyncSuccBitmapTest
(
test
,
params
,
env
)
inc_test
.
run_test
()
qemu/tests/cfg/blockdev_inc_backup_inc_success.cfg
0 → 100644
浏览文件 @
63b4b2f3
# Storage backends:
# filesystem, iscsi_direct, ceph, nbd, gluster_direct
# The following testing scenario is covered:
# Do incremental backup with sync:incremental and bitmap:on-success
# The backup images are local images(filesystem)
- blockdev_inc_backup_inc_success:
only Linux
no libcurl, libssh
start_vm = no
qemu_force_use_drive_expression = no
type = blockdev_inc_backup_inc_success
virt_test_type = qemu
images += " data"
source_images = "data"
image_backup_chain_data = "base inc"
backing_inc = base
remove_image_data = yes
force_create_image_data = yes
storage_pools = default
storage_pool = default
image_size_data = 2G
image_size_base = 2G
image_size_inc = 2G
image_format_data = qcow2
image_format_base = qcow2
image_format_inc = qcow2
image_name_data = data
image_name_base = base
image_name_inc = inc
inc_sync_mode = incremental
inc_bitmap_mode = on-success
rebase_mode = unsafe
# For local target inc image
enable_iscsi_inc = no
enable_ceph_inc = no
enable_gluster_inc = no
enable_nbd_inc = no
image_raw_device_inc = no
storage_type_default = "directory"
nbd:
force_create_image_data = no
nbd_port_data = 10822
image_create_support_data = no
iscsi_direct:
lun_data = 1
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录