栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kubevirt 虚拟机基于ceph rbd的导出导入和数据恢复(五)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kubevirt 虚拟机基于ceph rbd的导出导入和数据恢复(五)

目录

1.ceph rbd数据恢复思路:

2.kubevrit虚拟机pvc导出(全量):

3.修改rook toolbox.yaml将本地目录挂载到pod中:

4.全量导出 rbd export

5.全量导入:

6.将新的rbd image 恢复到虚拟机中


1.ceph rbd数据恢复思路:

1、为rbd image创建快照:rbd snap create

2、将快照导出成文件备份

        (1)全量导出:rbd export 

        (2)增量导出:rbd export-diff

3、将备份文件导入为新的rbd image

        (1)全量导入:rbd import (与 “全量导出” 相对应)

         (2)增量导入:rbd import-diff(与“增量导出”相对应)

2.kubevrit虚拟机pvc导出(全量):

1.查看虚拟机 pvc 使用的是哪个 rbd image : 虚拟机pvcpvrbd image

 # kubectl describe pv pvc-f144141a-771c-404c-9559-698dfc6c5da7

Name:            pvc-f144141a-771c-404c-9559-698dfc6c5da7
Labels:          
Annotations:     pv.kubernetes.io/provisioned-by: rook-ceph.rbd.csi.ceph.com
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    rook-ceph-block
Status:          Bound
Claim:           default/win10-vm1
Reclaim Policy:  Delete
Access Modes:    RWX
VolumeMode:      Block
Capacity:        100Gi
Node Affinity:  
Message:         
Source:
    Type:              CSI (a Container Storage Interface (CSI) volume source)
    Driver:            rook-ceph.rbd.csi.ceph.com
    FSType:            
    VolumeHandle:      0001-0009-rook-ceph-0000000000000002-5d17ef16-d002-11ec-81db-00000071e21a
    ReadOnly:          false
    VolumeAttributes:      clusterID=rook-ceph
                           csi.storage.k8s.io/pv/name=pvc-f144141a-771c-404c-9559-698dfc6c5da7
                           csi.storage.k8s.io/pvc/name=win10-vm1
                           csi.storage.k8s.io/pvc/namespace=default
                           imageFeatures=layering
                           imageFormat=2
                           imageName=csi-vol-5d17ef16-d002-11ec-81db-00000071e21a
                           journalPool=replicapool
                           pool=replicapool
                           storage.kubernetes.io/csiProvisionerIdentity=1651892876408-8081-rook-ceph.rbd.csi.ceph.com
Events:                
详解:

Source.VolumeAttributes.pool:是ceph pool的名字

Source.VolumeAttributes.imageName:是ceph rbd image的名称

3.修改rook toolbox.yaml将本地目录挂载到pod中:

# mkdir -p /data/vms-backup

# chmod 777 vms-backup

# kubectl apply -f toolbox.yaml

在原有的yaml文件中增加:

- name: vms-disk
  mountPath: /etc/ceph/vms

- name: vms-disk
  hostPath:
       path: /data/vms-backup
        type: Directory

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rook-ceph-tools
  namespace: rook-ceph # namespace:cluster
  labels:
    app: rook-ceph-tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rook-ceph-tools
  template:
    metadata:
      labels:
        app: rook-ceph-tools
    spec:
      dnsPolicy: ClusterFirstWithHostNet
      containers:
        - name: rook-ceph-tools
          image: rook/ceph:v1.8.7
          command: ["/bin/bash"]
          args: ["-m", "-c", "/usr/local/bin/toolbox.sh"]
          imagePullPolicy: IfNotPresent
          tty: true
          securityContext:
            runAsNonRoot: true
            runAsUser: 2016
            runAsGroup: 2016
          env:
            - name: ROOK_CEPH_USERNAME
              valueFrom:
                secretKeyRef:
                  name: rook-ceph-mon
                  key: ceph-username
            - name: ROOK_CEPH_SECRET
              valueFrom:
                secretKeyRef:
                  name: rook-ceph-mon
                  key: ceph-secret
          volumeMounts:
            - mountPath: /etc/ceph
              name: ceph-config
            - name: mon-endpoint-volume
              mountPath: /etc/rook
            - name: vms-disk
              mountPath: /etc/ceph/vms
      volumes:
        - name: mon-endpoint-volume
          configMap:
            name: rook-ceph-mon-endpoints
            items:
              - key: data
                path: mon-endpoints
        - name: ceph-config
          emptyDir: {}
        - name: vms-disk
          hostPath:
            path: /data/vms-backup
            type: Directory
      tolerations:
        - key: "node.kubernetes.io/unreachable"
          operator: "Exists"
          effect: "NoExecute"
          tolerationSeconds: 5

4.全量导出 rbd export

# kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash

查看的pool

$ ceph osd lspools
1 device_health_metrics
2 replicapool
$ rbd ls replicapool 
csi-snap-b8999bb0-cdc8-11ec-81db-00000071e21a
csi-vol-32acd0e4-cdb4-11ec-81db-00000071e21a
csi-vol-41f4dcc5-cf84-11ec-81db-00000071e21a
csi-vol-5d17ef16-d002-11ec-81db-00000071e21a
csi-vol-88b12812-cdc8-11ec-81db-00000071e21a
csi-vol-88b12812-cdc8-11ec-81db-00000071e21a-temp
csi-vol-b91dad6e-d055-11ec-81db-00000071e21a
csi-vol-c5c18a0b-cdc8-11ec-81db-00000071e21a
全量导出:

$ rbd export replicapool/csi-vol-5d17ef16-d002-11ec-81db-00000071e21a vms/win10-full.img
Exporting image: 100% complete...done.

在物理机上查看导出镜像:
[root@worker01 vms-backup]# ls
win10-full.img

本地使用镜像启动,并在虚拟机中添加文件:

5.全量导入:

将本地修改过的虚拟机镜像导入ceph存储中:$ rbd import vms/win10-full.img replicapool/resume-full
Importing image: 100% complete...done.
$ rbd ls replicapool
csi-snap-b8999bb0-cdc8-11ec-81db-00000071e21a
csi-vol-32acd0e4-cdb4-11ec-81db-00000071e21a
csi-vol-41f4dcc5-cf84-11ec-81db-00000071e21a
csi-vol-5d17ef16-d002-11ec-81db-00000071e21a
csi-vol-88b12812-cdc8-11ec-81db-00000071e21a
csi-vol-88b12812-cdc8-11ec-81db-00000071e21a-temp
csi-vol-b91dad6e-d055-11ec-81db-00000071e21a
csi-vol-c5c18a0b-cdc8-11ec-81db-00000071e21a
resume-full

6.将新的rbd image 恢复到虚拟机中

关闭使用的虚拟机:

$ rbd snap purge replicapool/csi-vol-5d17ef16-d002-11ec-81db-00000071e21a

$ rbd rm replicapool/csi-vol-5d17ef16-d002-11ec-81db-00000071e21a
Removing image: 100% complete...done.

$ rbd rename replicapool/resume-full replicapool/csi-vol-5d17ef16-d002-11ec-81db-00000071e21a

$ rbd ls replicapool
csi-snap-b8999bb0-cdc8-11ec-81db-00000071e21a
csi-vol-32acd0e4-cdb4-11ec-81db-00000071e21a
csi-vol-41f4dcc5-cf84-11ec-81db-00000071e21a
csi-vol-5d17ef16-d002-11ec-81db-00000071e21a
csi-vol-88b12812-cdc8-11ec-81db-00000071e21a
csi-vol-88b12812-cdc8-11ec-81db-00000071e21a-temp
csi-vol-b91dad6e-d055-11ec-81db-00000071e21a
csi-vol-c5c18a0b-cdc8-11ec-81db-00000071e21a
到此步骤已经恢复完成,需要启动虚拟机验证:

注意:

 如果在启动虚拟机时出现如下报错:

分析原因为:OS kernel不支持块设备镜像的一些特性,所以映射失败。

解决版本:

查看镜像支持了那些特性:

$ rbd info replicapool/csi-vol-5d17ef16-d002-11ec-81db-00000071e21a
rbd image 'csi-vol-5d17ef16-d002-11ec-81db-00000071e21a':
    size 100 GiB in 25600 objects
    order 22 (4 MiB objects)
    snapshot_count: 0
    id: 13d6f4a9adffd
    block_name_prefix: rbd_data.13d6f4a9adffd
    format: 2
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
    op_features: 
    flags: 
    create_timestamp: Thu May 12 03:10:18 2022
    access_timestamp: Thu May 12 03:10:18 2022
    modify_timestamp: Thu May 12 03:12:26 2022
直接disable rbd镜像不支持的特性:

$ rbd  feature disable replicapool/csi-vol-5d17ef16-d002-11ec-81db-00000071e21a  exclusive-lock object-map fast-diff deep-flatten
$ rbd info replicapool/csi-vol-5d17ef16-d002-11ec-81db-00000071e21a
rbd image 'csi-vol-5d17ef16-d002-11ec-81db-00000071e21a':
    size 100 GiB in 25600 objects
    order 22 (4 MiB objects)
    snapshot_count: 0
    id: 13d6f4a9adffd
    block_name_prefix: rbd_data.13d6f4a9adffd
    format: 2
    features: layering
    op_features: 
    flags: 
    create_timestamp: Thu May 12 03:10:18 2022
    access_timestamp: Thu May 12 03:10:18 2022
    modify_timestamp: Thu May 12 03:12:26 2022
参考文档:

cephRBD的导出导入和数据恢复 - 百度文库

映射块设备提示rbd: sysfs write failed的解决方法 - sisimi_2017 - 爱码网

总结:

       这种方式是利用ceph的特性来对虚拟机进行本地导出进行备份和利用本地备份进行恢复,为了虚拟机数据安全可以定期使用rbd snap create 创建快照。后期恢复kubevirt创建虚拟机快照和恢复。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号