<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          牛批,Ceph RBD 備份與恢復(fù)完全指南

          共 17848字,需瀏覽 36分鐘

           ·

          2022-03-16 06:50


          一、RBD 回收機制

          ceph RBD 默認(rèn)提供回收站機制trash,也就是我們可以把塊數(shù)據(jù)放在回收站,在回收站中保持一定的存儲周期,當(dāng)我們后期還需要使用的時候可以在回收站在拿回來。

          同樣,在公有云也有硬盤的回收站,作用和 RBD 回收站類似,當(dāng)我們后不確定是否后期還會使用,回收站會為我們保留一定時間的周期

          到期 7 天后仍未續(xù)費的云硬盤,會在回收站中保留 7 天,這期間您可以續(xù)費進行恢復(fù)。7 天后,這些云硬盤會被徹底釋放,不可恢復(fù)。

          回收站有兩個好處

          • 可以有效的防止誤刪除操作 (正常情況下數(shù)據(jù)就會銷毀掉了,但是有了回收站,數(shù)據(jù)是存放在回收站中)
          • 還有一種情況多發(fā)生的云存儲中,例如我們的服務(wù)器忘記續(xù)費,過期后默認(rèn)情況下是直接被釋放了,但是有了回收站,數(shù)據(jù)就會在回收站在為我們保留一段時間

          接下來我們將 rbd 文件刪除,并演示如何從回收站中刪除和恢復(fù) rbd 文件

          [root@ceph-01?~]#?ceph?osd?lspools??????????#首先我們查看一下我們的pool
          1?abcdocker
          2?.rgw.root
          3?default.rgw.control
          4?default.rgw.meta
          5?default.rgw.log
          6?default.rgw.buckets.index
          7?default.rgw.buckets.data
          8?cephfs_data
          9?cephfs_metadata

          [root@ceph-01?~]#?rbd?-p?abcdocker?ls???????????????#這里可以找到之前創(chuàng)建的rbd文件
          abcdocker-rbd.img

          #這里我們在創(chuàng)建一塊rbd文件,為我們rbd創(chuàng)建一個10G的rbd塊存儲
          [root@ceph-01?~]#?rbd?create?abcdocker/ceph-trash.img?--size?10G????????#創(chuàng)建名稱為ceph-trash的rbd文件,大小為10G
          [root@ceph-01?~]#?rbd?-p?abcdocker?ls
          abcdocker-rbd.img
          ceph-trash.img

          #rbd文件大小
          [root@ceph-01?~]#?rbd?info?abcdocker/ceph-trash.img
          rbd?image?'ceph-trash.img':
          ????size?10?GiB?in?2560?objects
          ????order?22?(4?MiB?objects)
          ????snapshot_count:?0
          ????id:?32109b54fb476
          ????block_name_prefix:?rbd_data.32109b54fb476
          ????format:?2
          ????features:?layering
          ????op_features:
          ????flags:
          ????create_timestamp:?Wed?Mar??9?15:47:10?2022
          ????access_timestamp:?Wed?Mar??9?15:47:10?2022
          ????modify_timestamp:?Wed?Mar??9?15:47:10?2022

          rbd 刪除操作

          默認(rèn)情況下,刪除 rbd 鏡像文件是直接刪除,沒有保留到回收站。在回收站中也沒有進行保留

          #第一種:?直接刪除,不存放到回收站
          [root@ceph-01?~]#?rbd?rm?abcdocker/ceph-trash.img
          Removing?image:?100%?complete...done.
          [root@ceph-01?~]#?rbd?-p?abcdocker?ls
          abcdocker-rbd.img

          #第二種:?將RBD文件移動到回收站
          [root@ceph-01?~]#?rbd?trash?move?abcdocker/ceph-trash.img?--expires-at?20220310
          #trash?表示存放到回收站
          #move?移動操作
          #abcdocker/ceph-trash.img?pool為abcdocker,rbd文件為ceph-trash.img
          #--expires-at?表示釋放時間,日期只可以精確到日

          #移動到回收站后,在正常的資源池已經(jīng)看不到。但是在回收站中還可以看到
          [root@ceph-01?~]#?rbd?-p?abcdocker?ls
          abcdocker-rbd.img
          [root@ceph-01?~]#?rbd?trash?-p?abcdocker?ls
          32142766bcf53?ceph-trash.img

          rbd 回收站找回操作

          前面說我們通過trash move將 rbd 文件移動到回收站,例如后面我們想把 rbd 文件找回,可以通過下面的方式進行找回操作

          [root@ceph-01?~]#?rbd?trash?-p?abcdocker?ls?????????#查看回收站中的rbd文件
          32142766bcf53?ceph-trash.img
          [root@ceph-01?~]#?rbd?trash?restore?-p?abcdocker?32142766bcf53???#恢復(fù)到abcdocker?pool中
          [root@ceph-01?~]#?rbd?trash?-p?abcdocker?ls???#再次查看回收站中的rbd文件
          [root@ceph-01?~]#?rbd?-p?abcdocker?ls??#查看pool中的rbd文件已經(jīng)恢復(fù)
          abcdocker-rbd.img
          ceph-trash.img

          二、RBD 鏡像制作快照

          和云硬盤一樣,RBD 也是支持快照的功能,對某個時刻的 RBD 文件進行保留生成快照。

          RBD 是塊存儲基于文件系統(tǒng)上的,我們在生成快照時需要確保文件系統(tǒng)正常。否則生成的快照也出現(xiàn)損壞

          云硬盤也屬于塊存儲,和 RBD 一樣支持快照。 (同時,公有云還可以定期為云硬盤做快照)

          我們使用之前創(chuàng)建的 rbd 文件,將 rbd 掛載到本地的文件系統(tǒng)中,寫入文件并做快照

          [root@ceph-01?~]#?rbd?-p?abcdocker?ls???????????????????????#首先查看rbd文件中的設(shè)備
          abcdocker-rbd.img
          ceph-trash.img

          [root@ceph-01?~]#?rbd?device?map?abcdocker/ceph-trash.img???#將rbd文件掛載到本地
          /dev/rbd0

          [root@ceph-01?~]#?mkfs.ext4?/dev/rbd0???????????????????#格式化ceph-trash.img設(shè)備
          mke2fs?1.42.9?(28-Dec-2013)
          Discarding?device?blocks:?done
          Filesystem?label=
          OS?type:?Linux
          Block?size=4096?(log=2)
          Fragment?size=4096?(log=2)
          Stride=1024?blocks,?Stripe?width=1024?blocks
          655360?inodes,?2621440?blocks
          131072?blocks?(5.00%)?reserved?for?the?super?user
          First?data?block=0
          Maximum?filesystem?blocks=2151677952
          80?block?groups
          32768?blocks?per?group,?32768?fragments?per?group
          8192?inodes?per?group
          Superblock?backups?stored?on?blocks:
          ????32768,?98304,?163840,?229376,?294912,?819200,?884736,?1605632

          Allocating?group?tables:?done
          Writing?inode?tables:?done
          Creating?journal?(32768?blocks):?done
          Writing?superblocks?and?filesystem?accounting?information:
          done

          [root@ceph-01?~]#?mount?/dev/rbd0?/mnt/?????????????????#將/dev/rbd0設(shè)備掛載到/mnt下
          [root@ceph-01?~]#?echo?"i4t.com"?>/mnt/abcdocker.txt???????#寫入測試文件查看
          [root@ceph-01?~]#?cat?/mnt/abcdocker.txt
          i4t.com

          [root@ceph-01?~]#?df?-h?????????????????#df?-h已經(jīng)可以看到掛載點了
          Filesystem????????????Size??Used?Avail?Use%?Mounted?on
          /dev/sda3??????????????50G??2.3G???48G???5%?/
          devtmpfs??????????????1.9G?????0??1.9G???0%?/dev
          tmpfs?????????????????1.9G?????0??1.9G???0%?/dev/shm
          tmpfs?????????????????1.9G???33M??1.9G???2%?/run
          tmpfs?????????????????1.9G?????0??1.9G???0%?/sys/fs/cgroup
          tmpfs?????????????????1.9G???24K??1.9G???1%?/var/lib/ceph/osd/ceph-0
          tmpfs?????????????????1.9G???24K??1.9G???1%?/var/lib/ceph/osd/ceph-3
          192.168.31.20:6789:/??180G???35G??146G??20%?/abcdocker
          tmpfs?????????????????380M?????0??380M???0%?/run/user/1000
          /dev/rbd0?????????????9.8G???37M??9.2G???1%?/mnt

          通過device ls可以看到鏡像名稱和對應(yīng)的掛載點

          [root@ceph-01?mnt]#?rbd?device?ls
          id?pool??????namespace?image?????????????snap?device
          0??abcdocker???????????ceph-trash.img????-????/dev/rbd0
          1??abcdocker???????????ceph-test-01.img??-????/dev/rbd1
          2??abcdocker???????????ceph-temp.img?????-????/dev/rbd2
          3??abcdocker???????????abcdocker-rbd.img?-????/dev/rbd3
          4??abcdocker???????????ceph-trash.img????-????/dev/rbd4

          取消 device 映射

          [root@ceph-01?new]#?rbd?device?ls
          id?pool??????namespace?image????????????snap?device
          0??abcdocker???????????ceph-temp.img????-????/dev/rbd0
          1??abcdocker???????????ceph-bak.img?????-????/dev/rbd1
          2??abcdocker???????????ceph-bak-new.img?-????/dev/rbd2
          [root@ceph-01?new]#?rbd?device?unmap?/dev/rbd0???#后面參數(shù)為device目錄
          [root@ceph-01?new]#?rbd?device?ls
          id?pool??????namespace?image????????????snap?device
          1??abcdocker???????????ceph-bak.img?????-????/dev/rbd1
          2??abcdocker???????????ceph-bak-new.img?-????/dev/rbd2

          接下來我們創(chuàng)建快照,將現(xiàn)在的狀態(tài)進行保存

          [root@ceph-01?~]#?rbd?-p?abcdocker?ls???????????????#查看pool下的rbd文件
          abcdocker-rbd.img
          ceph-trash.img

          [root@ceph-01?~]#?rbd?snap?create?abcdocker/ceph-trash.img@snap_test_2022-03-09?????????????#執(zhí)行快照備份
          #snap為快照參數(shù)
          #abcdocker為pool名稱
          #ceph-trash.img?為rbd文件
          #@snap_test_2022-03-09為快照名稱

          [root@ceph-01?~]#?rbd?snap?ls?abcdocker/ceph-trash.img??????????#使用ls命令可以查看快照列表,以及創(chuàng)建時間
          SNAPID?NAME?????????????????SIZE???PROTECTED?TIMESTAMP
          ?????4?snap_test_2022-03-09?10?GiB???????????Wed?Mar??9?16:36:23?2022

          刪除快照可以通過下面的命令

          [root@ceph-01?~]#?rbd?snap?remove?abcdocker/ceph-trash.img@snap_test_2022-03-09???#格式和創(chuàng)建的格式相同,命令替換為remove?(相當(dāng)于rm)
          Removing?snap:?100%?complete...done.
          [root@ceph-01?~]#?rbd?snap?ls?abcdocker/ceph-trash.img

          ##如果我們鏡像沒有在使用了,可以通過purge直接刪除所有快照
          [root@ceph-01?~]#?rbd?snap?purge?abcdocker/ceph-trash.img
          Removing?all?snapshots:?100%?complete...done.
          [root@ceph-01?~]#?rbd?snap?ls?abcdocker/ceph-trash.img

          三、RBD 快照數(shù)據(jù)恢復(fù)

          當(dāng)我們做好備份后,后續(xù)有需求需要回滾。 可以通過下面的命令進行回滾操作。將 rbd 文件恢復(fù)到之前創(chuàng)建好快照的位置

          #首先我們刪除現(xiàn)在rbd掛載中的文件
          [root@ceph-01?~]#?rm?/mnt/abcdocker.txt
          rm:?remove?regular?file?‘/mnt/abcdocker.txt’??y
          [root@ceph-01?~]#?ls?/mnt/
          lost+found

          使用快照進行恢復(fù)

          #首先我們執(zhí)行rollback命令,進行數(shù)據(jù)恢復(fù)
          [root@ceph-01?~]#?rbd?snap?rollback?abcdocker/ceph-trash.img@snap_test_2022-03-09
          Rolling?back?to?snapshot:?100%?complete...done.

          #參數(shù)解釋
          #snap?為快照參數(shù)
          #rollback?為恢復(fù)快照
          #abcdocker?為pool名稱
          #ceph-trash.img?為rbd文件名稱
          #@snap_test_2022-03-09?為快照名稱(需要恢復(fù)的快照名稱)

          恢復(fù)完成后,文件系統(tǒng)不能馬上識別出來,需要我們重新掛載塊設(shè)備進行恢復(fù)

          [root@ceph-01?~]#?umount?/mnt/
          [root@ceph-01?~]#?mount?/dev/rbd0?/mnt/
          [root@ceph-01?~]#?ls?/mnt/
          abcdocker.txt??lost+found
          [root@ceph-01?~]#?cat?/mnt/abcdocker.txt
          i4t.com

          四、RBD 鏡像克隆

          Ceph 支持為塊設(shè)備快照創(chuàng)建許多寫時復(fù)制COW克隆??煺辗謱邮?Ceph 塊設(shè)備客戶端能夠非常快速的創(chuàng)建映射。例如,我們創(chuàng)建一個塊設(shè)備鏡像,其中寫入一個 Linux;然后對鏡像進行快照、保護快照并創(chuàng)建寫時克隆??煺帐侵蛔x的,寫入將寫入到新的位置--進行快速克隆

          • 完整克隆
          • 快速克隆 (快速克隆使用的就是寫時復(fù)制)

          每個克隆鏡像子級存儲對父級鏡像為引用作用,子級會讀取父級別的數(shù)據(jù)

          parent 代表鏡像父級 Child 代表克隆的子級

          COW 克隆和 Ceph 塊設(shè)備完全相同,可以進行讀取、寫入和調(diào)整鏡像大小??寺$R像沒用特殊限制。但是,寫時復(fù)制克隆是指快照,因此必須在克隆快照之前對其保護

          Ceph 目前只支持 format 2 鏡像的克隆,內(nèi)核 rbd create --image-format 2 還不支持。rbd 因此必須使用 QEMU/KVM 或者 librbd 直接訪問版本中的克隆

          4.1 RBD 分層概念

          Ceph 塊設(shè)備分層是一個簡單的過程,首先我們必須創(chuàng)建鏡像的快照,并且需要保護快照,保護完成就可以開始克隆快照

          克隆的鏡像有對父快照的引用,包括池 ID、鏡像 ID 和快照 ID。

          1.鏡像模板: 塊設(shè)備分層的一個常見用例是創(chuàng)建一個主鏡像和一個用做克隆模板的快照。2.擴展模板: 提供比基礎(chǔ)鏡像更多的信息,例如用戶可以克隆鏡像并按照其他軟件,然后對擴展鏡像進行快照,該擴展鏡像本身可以更新就像基本鏡像一樣3.模板池: 使用塊設(shè)備分層的一個方法是創(chuàng)建一個 pool,其中包含充當(dāng)模板的主鏡像以及這些模板的快照。然后可以將只讀權(quán)限擴展到用戶,以便可以直接克隆快照,但是無法在池中寫入和執(zhí)行4.鏡像遷移/恢復(fù): 使用塊設(shè)備分層的一個方法是將數(shù)據(jù)從一個 pool 遷移或者恢復(fù)到另一個 pool 中

          4.2 RBD 快照保護

          如果用戶不小心刪除了父快照,所有的克隆都會終端。為了防止克隆的鏡像丟失,必須保護快照才可以進行克隆

          [root@ceph-01?~]#?rbd?create?abcdocker/ceph-temp.img?--size?10G???#為了掩飾數(shù)據(jù),我們創(chuàng)建一個新的鏡像,大小為10G
          [root@ceph-01?~]#?rbd?-p?abcdocker?ls
          abcdocker-rbd.img
          ceph-temp.img
          ceph-trash.img

          下面為鏡像制作一個快照

          [root@ceph-01?~]#?rbd?snap?create?abcdocker/ceph-temp.img@temp???#創(chuàng)建名稱為temp的快照
          [root@ceph-01?~]#?rbd?snap?ls?abcdocker/ceph-temp.img????#查看一下快照
          SNAPID?NAME?SIZE???PROTECTED?TIMESTAMP
          ?????8?temp?10?GiB???????????Thu?Mar?10?15:03:39?2022

          制作完快照后,我們將快照保護起來

          [root@ceph-01?~]#?rbd?snap?protect?abcdocker/ceph-temp.img@temp???#通過protect保護

          [root@ceph-01?~]#?rbd?snap?rm?abcdocker/ceph-temp.img@temp??????#這里我們就可以看到,已經(jīng)無法刪除了
          Removing?snap:?0%?complete...failed.
          rbd:?snapshot?'temp'?is?protected?from?removal.
          2022-03-10?15:06:10.564?7f39f6a09c80?-1?librbd::Operations:?snapshot?is?protected

          取消保護,如果我們想取消保護,可以通過 unproject 參數(shù)

          [root@ceph-01?~]#?rbd?snap?unprotect?abcdocker/ceph-temp.img@temp

          4.3 RBD 克隆快照

          這會我們的父鏡像已經(jīng)制作好了,開始克隆子鏡像

          克隆可以選擇 pool,可以和父鏡像不在一個 pool 中

          [root@ceph-01?~]#?rbd?clone?abcdocker/ceph-temp.img@temp?abcdocker/ceph-test-01.img???#使用clone克隆參數(shù)
          [root@ceph-01?~]#?rbd?clone?abcdocker/ceph-temp.img@temp?abcdocker/ceph-test-02.img
          [root@ceph-01?~]#?rbd?clone?abcdocker/ceph-temp.img@temp?abcdocker/ceph-test-03.img
          [root@ceph-01?~]#?rbd?-p?abcdocker?ls???#查看克隆后的鏡像
          abcdocker-rbd.img
          ceph-temp.img
          ceph-test-01.img????????????#這里就是我們剛剛克隆完畢的
          ceph-test-02.img
          ceph-test-03.img
          ceph-trash.img
          [root@ceph-01?~]#

          掛載測試,因為里面沒有數(shù)據(jù)實際上掛載的都一樣

          [root@ceph-01?~]#?rbd?-p?abcdocker?ls????#查看當(dāng)前rbd文件
          abcdocker-rbd.img
          ceph-temp.img
          ceph-test-01.img
          ceph-test-02.img
          ceph-test-03.img
          ceph-trash.img
          [root@ceph-01?~]#?rbd?device?map?abcdocker/ceph-test-01.img??#將rbd文件映射到本地
          /dev/rbd1
          [root@ceph-01?~]#?mkdir?/mnnt???#創(chuàng)建掛載目錄
          [root@ceph-01?~]#?mkfs.ext4?/dev/rbd1???#因為我們是新建的鏡像,需要做格式化操作,我們可以將格式化后的狀態(tài)在做一個快照,在重新保護起來使用

          [root@ceph-01?~]#?mount?/dev/rbd1?/mnnt
          [root@ceph-01?~]#?ls?/mnnt/
          lost+found

          4.4 RBD 取消父級

          使用 flatten 取消依賴關(guān)系,此時我們在刪除 temp 模板鏡像,下面的 ceph-test-03 就不受影響

          [root@ceph-01?~]#?rbd?children?abcdocker/ceph-temp.img@temp???#使用children查看當(dāng)前快照下面創(chuàng)建的鏡像
          abcdocker/ceph-test-01.img
          abcdocker/ceph-test-02.img
          abcdocker/ceph-test-03.img

          [root@ceph-01?~]#?rbd?flatten?abcdocker/ceph-test-03.img????#執(zhí)行flatten取消父級依賴,默認(rèn)就會修改為完整克隆
          Image?flatten:?100%?complete...done.

          五、RBD 備份與恢復(fù)

          5.1 RBD 全備

          RBD 備份分為兩種,一種是全備,另外一個是增量備份

          全備操作 export

          這里我創(chuàng)建一個快照,并且將快照導(dǎo)出成一個單獨的鏡像。然后我們在掛載上去使用

          [root@ceph-01?mnt]#?rbd?-p?abcdocker?ls???#查看我們所有的鏡像
          abcdocker-rbd.img
          ceph-temp.img
          ceph-test-01.img
          ceph-test-02.img
          ceph-test-03.img
          ceph-trash.img
          [root@ceph-01?mnt]#?rbd?snap?ls?abcdocker/ceph-temp.img????#查看當(dāng)前快照列表
          SNAPID?NAME?SIZE???PROTECTED?TIMESTAMP
          ?????8?temp?10?GiB?yes???????Thu?Mar?10?15:03:39?2022

          [root@ceph-01?mnt]#?rbd?snap?create?abcdocker/ceph-temp.img@bak_2022-03-10??????#創(chuàng)建快照
          [root@ceph-01?mnt]#?rbd?export?abcdocker/ceph-temp.img@bak_2022-03-10?/root/ceph-bak.img????#執(zhí)行export導(dǎo)出
          Exporting?image:?100%?complete...done.

          此時我們數(shù)據(jù)已經(jīng)備份完畢

          5.2 RBD 全量數(shù)據(jù)恢復(fù)

          首先我們需要將原來的掛載點進行卸載

          [root@ceph-01?mnt]#?umount?/mnnt???#卸載點

          恢復(fù) RBD 備份 import

          [root@ceph-01?mnt]#?rbd?import?/root/ceph-bak.img?abcdocker/ceph-bak.img
          Importing?image:?100%?complete...done.
          [root@ceph-01?mnt]#?rbd?-p?abcdocker?ls
          abcdocker-rbd.img
          ceph-bak.img

          剛剛已經(jīng)在 rbd 中可以看到對應(yīng)的 ceph-bak.img 文件,我們在進行掛載即可

          [root@ceph-01?mnt]#?rbd?device?map?abcdocker/ceph-bak.img
          /dev/rbd5
          [root@ceph-01?mnt]#?mount?/dev/rbd5?/mnnt

          針對掛載提示 rbd: map failed: (6) No such device or address 解決方案可以參考下面文章 https://www.cnblogs.com/zphj1987/p/13575352.html 或者臨時解決 rbd feature disable abcdocker/ceph-bak.img object-map fast-diff deep-flatten

          5.3 RBD 增量備份

          對于增量備份,常用于 ceph 異地備份,或者 kvm、OpenStack 相關(guān)備份??梢詼p少空間占用大小 可以寫成定時腳本,定時基于全備添加增量的備份

          增量備份

          增量備份使用的參數(shù)為export-diff

          #首先我們先創(chuàng)建增量的快照
          [root@ceph-01?~]#?rbd?device?map?abcdocker/ceph-bak.img??#添加鏡像映射
          /dev/rbd1
          [root@ceph-01?~]#?mount?/dev/rbd1?/mnnt???#掛載
          [root@ceph-01?~]#?cd?/mnnt/
          [root@ceph-01?mnnt]#?ls
          1????110??122??134??146??158??17???181??193??24??36??48??6???71??83??95
          10???111??123??135??147??159??170??182??194??25??37??49??60??72??84??96
          100??112??124??136??148??16???171??183??195??26??38??5???61??73??85??97
          101??113??125??137??149??160??172??184??196??27??39??50??62??74??86??98
          102??114??126??138??15???161??173??185??197??28??4???51??63??75??87??99
          103??115??127??139??150??162??174??186??198??29??40??52??64??76??88??lost+found
          104??116??128??14???151??163??175??187??199??3???41??53??65??77??89??seq
          105??117??129??140??152??164??176??188??2????30??42??54??66??78??9
          106??118??13???141??153??165??177??189??20???31??43??55??67??79??90
          107??119??130??142??154??166??178??19???200??32??44??56??68??8???91
          108??12???131??143??155??167??179??190??21???33??45??57??69??80??92
          109??120??132??144??156??168??18???191??22???34??46??58??7???81??93
          11???121??133??145??157??169??180??192??23???35??47??59??70??82??94

          接下來為 rbd 文件添加全量備份

          [root@ceph-01?mnnt]#?rbd?snap?create?abcdocker/ceph-bak.img@all_bak_2022-03-10???#創(chuàng)建名稱為all_bak_2022-03-10的快照
          [root@ceph-01?mnnt]#?rbd?snap?ls?abcdocker/ceph-bak.img???#查看快照
          SNAPID?NAME???????????????SIZE???PROTECTED?TIMESTAMP
          ????10?all_bak_2022-03-10?10?GiB???????????Mon?Mar?14?14:04:33?2022
          [root@ceph-01?mnnt]#?rbd?export?abcdocker/ceph-bak.img@all_bak_2022-03-10?/root/ceph-bak_all_bak_2022-03-10.img???#導(dǎo)出快照
          Exporting?image:?100%?complete...done.

          [root@ceph-01?mnnt]#?ll?/root/ceph-bak_all_bak_2022-03-10.img?-h??#查看快照大小,目前快照大寫10個G
          -rw-r--r--?1?root?root?10G?Mar?14?14:05?/root/ceph-bak_all_bak_2022-03-10.img

          全量備份添加完畢后,我們在創(chuàng)建新數(shù)據(jù),充當(dāng)增量備份

          #上面是我們之前的數(shù)據(jù),現(xiàn)在我們在創(chuàng)建200個文件
          [root@ceph-01?mnnt]#?for?i?in?`seq?200`;do?touch?$i.log;done

          接下來做增量的備份 (增量備份恢復(fù)的時候也是要基于全量做備份)

          #增量備份也是要添加快照,我們在創(chuàng)建一個快照
          [root@ceph-01?mnnt]#?rbd?snap?ls?abcdocker/ceph-bak.img
          SNAPID?NAME???????????????SIZE???PROTECTED?TIMESTAMP
          ????10?all_bak_2022-03-10?10?GiB???????????Mon?Mar?14?14:04:33?2022
          [root@ceph-01?mnnt]#?rbd?snap?create?abcdocker/ceph-bak.img@new_v1???#新new_v1快照
          [root@ceph-01?mnnt]#?rbd?snap?ls?abcdocker/ceph-bak.img???#查看所有快照
          SNAPID?NAME???????????????SIZE???PROTECTED?TIMESTAMP
          ????10?all_bak_2022-03-10?10?GiB???????????Mon?Mar?14?14:04:33?2022
          ????11?new_v1?????????????10?GiB???????????Mon?Mar?14?14:09:20?2022

          目前all_bak_2022-03-10為全量的快照,new_v1為增量備份的快照

          接下來導(dǎo)出快照

          [root@ceph-01?mnnt]#?rbd?export-diff?abcdocker/ceph-bak.img@new_v1?/root/ceph_new_v1.img???#導(dǎo)出增量備份文件
          Exporting?image:?100%?complete...done.
          [root@ceph-01?mnnt]#?ls?-lh?/root/ceph_new_v1.img???#查看增量備份文件
          -rw-r--r--?1?root?root?44M?Mar?14?14:10?/root/ceph_new_v1.img

          目前可以看到增量備份文件只有大概 44M,全量備份文件為 10G

          對于增量備份,常用于 ceph 異地備份,或者 kvm、OpenStack 相關(guān)備份??梢詼p少空間占用大小

          5.4 RBD 增量數(shù)據(jù)恢復(fù)

          前面已經(jīng)說了 RBD 的增量備份,增量備份完成我們就需要考慮如何進行增量恢復(fù)數(shù)據(jù)

          首先 RBD 增量數(shù)據(jù)恢復(fù)需要安裝順序進行恢復(fù),即 v1,v2,v3,v4 按照順序進行恢復(fù)即如果全量數(shù)據(jù)有影響,首先恢復(fù)全量數(shù)據(jù) 在恢復(fù)增量 v1、增量 v2、增量 v3 以此類推

          數(shù)據(jù)恢復(fù)可以恢復(fù)新的鏡像中,也可以在原有的鏡像恢復(fù)

          下面我們將**6.3 RBD增量備份** 生成的.log 文件刪除,然后使用import-diff命令實現(xiàn)增量恢復(fù)

          我這里演示的是在全量數(shù)據(jù)沒有受影響的情況下,只刪除增量備份前的數(shù)據(jù)進行恢復(fù)

          #前往掛載點,刪除*.log文件
          [root@ceph-01?mnnt]#?rm?-rf?*.log

          執(zhí)行增量恢復(fù)

          [root@ceph-01?~]#?rbd?-p?abcdocker?ls???#確認(rèn)需要恢復(fù)鏡像
          abcdocker-rbd.img
          ceph-bak.img
          ceph-temp.img
          ceph-test-01.img
          ceph-test-02.img
          ceph-test-03.img
          ceph-trash.img
          [root@ceph-01?~]#?rbd?snap?ls?abcdocker/ceph-bak.img???#查看鏡像快照
          SNAPID?NAME???????????????SIZE???PROTECTED?TIMESTAMP
          ????10?all_bak_2022-03-10?10?GiB???????????Mon?Mar?14?14:04:33?2022
          ????11?new_v1?????????????10?GiB???????????Mon?Mar?14?14:09:20?2022

          #我剛剛已經(jīng)把new_v1備份前的數(shù)據(jù)刪除,也就是目前是缺少new_v1的快照數(shù)據(jù)

          使用import-diff恢復(fù)到 abcdocker/ceph-bak.img 鏡像中

          目前的文件夾

          恢復(fù)的時候我們需要把快照名稱刪除

          [root@ceph-01?mnnt]#?rbd?snap?rm?abcdocker/ceph-bak.img@new_v1
          Removing?snap:?100%?complete...done.
          [root@ceph-01?mnnt]#?rbd?snap?ls?abcdocker/ceph-bak.img
          SNAPID?NAME???????????????SIZE???PROTECTED?TIMESTAMP
          ????10?all_bak_2022-03-10?10?GiB???????????Mon?Mar?14?14:04:33?2022

          #如果不刪除快照名稱,會提示我們恢復(fù)的快照已經(jīng)存在
          [root@ceph-01?mnnt]#?rbd?import-diff?/root/ceph_new_v1.img?abcdocker/ceph-bak.img???#執(zhí)行恢復(fù)
          Importing?image?diff:?100%?complete...done.
          [root@ceph-01?mnnt]#?rbd?snap?ls?abcdocker/ceph-bak.img
          SNAPID?NAME???????????????SIZE???PROTECTED?TIMESTAMP
          ????10?all_bak_2022-03-10?10?GiB???????????Mon?Mar?14?14:04:33?2022
          ????13?new_v1?????????????10?GiB???????????Mon?Mar?14?14:36:36?2022

          #接下來我們重新mount
          [root@ceph-01?~]#?umount?-lf?/mnnt/
          [root@ceph-01?~]#?mount?/dev/rbd1?/mnnt
          [root@ceph-01?~]#?cd?/mnnt/

          數(shù)據(jù)如下圖


          下面說一下如何恢復(fù)到新的鏡像名稱中

          目前我們將 ceph-bak.img 鏡像做了全備和增量備份,我們現(xiàn)在需要將這塊鏡像恢復(fù)到一個名為 ceph-bak-new.img 中

          [root@ceph-01?mnnt]#?rbd?snap?ls?abcdocker/ceph-bak.img
          SNAPID?NAME???????????????SIZE???PROTECTED?TIMESTAMP
          ????10?all_bak_2022-03-10?10?GiB???????????Mon?Mar?14?14:04:33?2022
          ????13?new_v1?????????????10?GiB???????????Mon?Mar?14?14:36:36?2022

          #導(dǎo)出文件我們依舊采用之前的
          [root@ceph-01?mnnt]#?ll?-h?/root/ceph-bak_all_bak_2022-03-10.img
          -rw-r--r--?1?root?root?10G?Mar?14?14:05?/root/ceph-bak_all_bak_2022-03-10.img
          [root@ceph-01?mnnt]#?ll?-h?/root/ceph_new_v1.img
          -rw-r--r--?1?root?root?44M?Mar?14?14:10?/root/ceph_new_v1.img

          開始恢復(fù)數(shù)據(jù),需要先恢復(fù)全量數(shù)據(jù)

          [root@ceph-01?mnnt]#?rbd?import?/root/ceph-bak_all_bak_2022-03-10.img?abcdocker/ceph-bak-new.img???#恢復(fù)全備文件
          Importing?image:?100%?complete...done.

          #接下來開始恢復(fù)增量備份
          [root@ceph-01?mnnt]#?rbd?import-diff?/root/ceph_new_v1.img?abcdocker/ceph-bak-new.img
          Importing?image?diff:?100%?complete...done.

          此時我們可以看一下新鏡像的快照

          [root@ceph-01?mnnt]#?rbd?snap?ls?abcdocker/ceph-bak-new.img
          SNAPID?NAME???SIZE???PROTECTED?TIMESTAMP
          ????14?new_v1?10?GiB???????????Mon?Mar?14?14:43:31?2022

          #這里只包含一個增量的備份,因為這個系統(tǒng)是基于全量備份,所以看不到全量的鏡像

          接下來我們進行映射掛載

          [root@ceph-01?mnnt]#?rbd?device?map?abcdocker/ceph-bak-new.img
          /dev/rbd2
          [root@ceph-01?mnnt]#
          [root@ceph-01?mnnt]#?mkdir?/new
          [root@ceph-01?mnnt]#?mount?/dev/rbd2?/new

          數(shù)據(jù)如下

          我們可以看一下掛載點,數(shù)據(jù)是一模一樣的

          [root@ceph-01?new]#?df?-h
          Filesystem??????Size??Used?Avail?Use%?Mounted?on
          /dev/sda3????????50G??2.6G???48G???6%?/
          devtmpfs????????1.9G?????0??1.9G???0%?/dev
          tmpfs???????????1.9G?????0??1.9G???0%?/dev/shm
          tmpfs???????????1.9G??8.6M??1.9G???1%?/run
          tmpfs???????????1.9G?????0??1.9G???0%?/sys/fs/cgroup
          tmpfs???????????1.9G???24K??1.9G???1%?/var/lib/ceph/osd/ceph-0
          tmpfs???????????1.9G???24K??1.9G???1%?/var/lib/ceph/osd/ceph-3
          tmpfs???????????380M?????0??380M???0%?/run/user/1000
          /dev/rbd1???????9.8G???37M??9.2G???1%?/mnnt????#舊鏡像
          /dev/rbd2???????9.8G???37M??9.2G???1%?/new????#新鏡像

          [root@ceph-01?new]#?rbd?device?ls
          id?pool??????namespace?image????????????snap?device
          1??abcdocker???????????ceph-bak.img?????-????/dev/rbd1?????#舊
          2??abcdocker???????????ceph-bak-new.img?-????/dev/rbd2???#新

          原文鏈接:https://i4t.com/5309.html


          你可能還喜歡

          點擊下方圖片即可閱讀

          Calico 網(wǎng)絡(luò)策略深度解析

          云原生是一種信仰???

          關(guān)注公眾號

          后臺回復(fù)?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!



          點擊?"閱讀原文"?獲取更好的閱讀體驗!


          發(fā)現(xiàn)朋友圈變“安靜”了嗎?

          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产一区二区三区四区五区六区七区 | 欧洲视频一区 | 欧美福利在线 | 天躁夜夜躁狼狠躁 | 国产婷婷欧美 |