從 Azure 虛擬機器備份復原檔案

警告

本文參考 CentOS,亦即接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據此考量您的使用方式和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

Azure 備份 提供還原功能Azure 虛擬機(VM)和來自 Azure VM 備份的磁碟,也稱為恢復點。 本文說明如何從 Azure VM 備份復原檔案和資料夾。 還原檔案和資料夾僅適用於使用 Resource Manager 模型部署並保護至復原服務保存庫的 Azure VM。

注意

這項功能適用於使用 Resource Manager 模型部署並保護至復原服務保存庫的 Azure VM。 不支援從加密的 VM 備份進行檔案復原。

檔案資料夾復原工作流程

步驟 1:產生和下載腳本以瀏覽和復原檔案

若要從恢復點還原檔案或資料夾,請移至虛擬機,然後執行下列步驟:

  1. 登入 Azure 入口網站,然後在左窗格中選取 [虛擬機]。 從虛擬機清單中,選取虛擬機以開啟該虛擬機的儀錶板。

  2. 在虛擬機的功能表中,選取 [備份 ] 以開啟 [備份] 儀錶板。

    開啟復原服務保存庫備份專案

  3. 在 [備份儀錶板] 功能表單中,選取 [ 檔案復原]。

    選取 [檔案復原]32

    [ 檔案復原] 功能表隨即開啟。

    檔案復原功能表

重要

用戶應該注意這項功能的效能限制。 如上述刀鋒視窗的腳注區段所述,當復原總大小為 10 GB 或更少時,應該使用此功能。 預期的數據傳輸速度約為每小時 1 GB。

  1. 從 [ 選取恢復點 ] 下拉功能表中,選取保留所需檔案的恢復點。 依預設會選取最新的復原點。

  2. 選取 [下載可執行檔 ](適用於 Windows Azure VM)或 [下載腳本 ] (針對 Linux Azure VM 產生 Python 腳本),以下載用來從恢復點複製檔案的軟體。

    下載可執行檔

    Azure 會將可執行檔或腳本下載到本機電腦。

    下載可執行檔或腳本的訊息

    若要以系統管理員身分執行可執行檔或腳本,建議您將下載的檔案儲存到您的計算機。

  3. 可執行檔或指令碼受到密碼保護,因此需要密碼。 在 [ 檔案復原] 功能表中,選取 [複製] 按鈕以將密碼載入記憶體中。

    產生的密碼

步驟 2:在執行腳本之前,請確定機器符合需求

成功下載文稿之後,請確定您有執行此腳本的正確計算機。 您打算執行文稿的 VM 不應該有下列任何不支援的組態。 如果這樣做,請選擇符合需求的替代計算機。

動態磁碟

您無法在具有下列任何特性的 VM 上執行可執行文稿:選擇替代電腦

  • 跨越多個磁碟的磁碟區(跨越和等量磁碟區)。
  • 動態磁碟上的容錯磁碟區(鏡像和RAID-5磁碟區)。

Windows 儲存空間

如果備份的 VM 具有 Windows 儲存空間,則無法在相同的備份 VM 上執行下載的可執行檔。 選擇替代計算機。

具有大型磁碟的虛擬機備份

如果備份的計算機有大量磁碟(16 個)或大型磁碟(>>每個磁碟 4 TB),則不建議在同一部計算機上執行腳本以進行還原,因為它會對 VM 產生重大影響。 相反地,建議只有個別的 VM 進行檔案復原(Azure VM D2v3 VM),然後在不需要時將其關機。

請參閱使用大型磁碟從備份 VM 還原檔案的需求:
Windows OS
Linux OS

選擇正確的計算機來執行 ILR 腳本之後,請確定它符合 OS 需求存取需求

步驟 3:成功執行腳本的 OS 需求

您要執行所下載文稿的 VM 必須符合下列需求。

針對 Windows OS

下表顯示伺服器與電腦作業系統之間的相容性。 復原檔案時,您無法將檔案還原到先前或未來的作業系統版本。 例如,您無法將 Windows Server 2016 虛擬機器的檔案還原至 Windows Server 2012 或 Windows 8 電腦。 您可以將 VM 的檔案還原至相同的伺服器作業系統,或相容的用戶端作業系統。

伺服器作業系統 相容的用戶端OS
Windows Server 2022 Windows 11 和 Windows 10
Windows Server 2019 Windows 10
Windows Server 2016 Windows 10
Windows Server 2012 R2 Windows 8.1
Windows Server 2012 Windows 8
Windows Server 2008 R2 Windows 7

針對 Linux OS

在 Linux 中,用來還原檔案的電腦作業系統必須支援受保護虛擬機器的檔案系統。 選取要執行指令碼的電腦時,請確認該電腦具有相容的作業系統,且使用下表中列出的其中一個版本:

Linux 作業系統 版本
Ubuntu 12.04 和更新版本
CentOS 6.5 和更新版本
RHEL 6.7 和更新版本
Debian 7 和更新版本
Oracle Linux 6.4 和更新版本
SLES 12 以上 (含)
openSUSE 42.2 和更新版本

其他元件

指令碼也需要 Python 和 Bash 元件,才能夠執行並安全地連線至復原點。

元件 版本 OS 類型
bash 4 和更新版本 Linux
Python 2.6.6 和更新版本 Linux
.NET 4.6.2 和更新版本 Windows
TLS 應支援 1.2 Linux/ Windows

此外,請確定您有 執行 ILR 腳本 的正確電腦,且符合 存取需求

步驟 4:成功執行腳本的存取需求

如果您在存取受限的電腦上執行指令碼,請確定您有權存取:

  • download.microsoft.com 連接埠 AzureFrontDoor.FirstParty 443 上的 NSG 或服務標籤(輸出)
  • 復原服務 URL (GEO-NAME 是指復原服務保存庫所在的區域) 連接埠 3260 (輸出)
    • https://pod01-rec2.GEO-NAME.backup.windowsazure.com (適用於 Azure 公用區域)或 AzureBackup NSG 中的服務標籤
    • https://pod01-rec2.GEO-NAME.backup.windowsazure.cn (針對由 21Vianet 運作的 Microsoft Azure,NSG AzureBackup 中的服務標籤
    • https://pod01-rec2.GEO-NAME.backup.windowsazure.us (適用於 Azure 美國政府)或 AzureBackup NSG 中的服務標籤
    • https://pod01-rec2.GEO-NAME.backup.windowsazure.de (針對 Azure 德國)或服務 AzureBackup 標籤在 NSG 中
  • 連接埠 53 上的公用 DNS 解析(輸出)

注意

Proxy 可能不支援 iSCSI 通訊協定,或授與埠 3260 的存取權。 因此,強烈建議在具有上述直接存取權的計算機上執行此腳本,而不是在將重新導向至 Proxy 的計算機上執行。

注意

如果備份的 VM 是 Windows,則會在產生的密碼中提及異地名稱。

例如,如果產生的密碼是 ContosoVM_wcus_GUID,則地理名稱為 wcus,而 URL 會是: <https://pod01-rec2.wcus.backup.windowsazure.com>

如果備份的 VM 是 Linux,則您在上述步驟 1 中下載的腳本檔案將具有檔案名稱中的地理名稱 使用該地理位置名稱填入 URL。 下載的腳本名稱開頭為: 'VMname'_'geoname'_'GUID'。

因此,例如,如果腳本檔名是 ContosoVM_wcus_12345678則地理名稱wcus ,而 URL 會是: <https://pod01-rec2.wcus.backup.windowsazure.com>

針對Linux,腳本需要 'open-iscsi' 和 'lshw' 元件才能連線到恢復點。 如果執行文稿的計算機上沒有元件,腳本會要求安裝元件的許可權。 同意安裝必要的元件。

需要存取 download.microsoft.com 才能下載元件,以在執行腳本的計算機與恢復點中的數據之間建立安全通道。

此外,請確定您擁有 執行 ILR 腳本 的正確電腦,且符合 OS 需求

步驟 5:執行腳本並識別磁碟區

注意

腳本只會以英文產生,而且不會當地語系化。 因此,可能需要系統地區設定是英文版,腳本才能正確執行

若為 Windows

在您符合步驟 2、步驟 3步驟 4 中列出的所有需求之後,請從下載的位置複製腳本(通常是下載資料夾),請參閱步驟 1 以瞭解如何產生和下載腳本。 以滑鼠右鍵按兩下可執行檔,並使用 管理員 istrator 認證來執行它。 出現提示時,請輸入密碼或貼上記憶體中的密碼,然後按 Enter 鍵。 輸入有效的密碼之後,指令碼會連線至復原點。

此螢幕快照顯示從 VM 還原檔案的可執行文件輸出。

當您執行可執行檔時,操作系統會掛接新的磁碟區,並指派驅動器號。 您可以使用「Windows 檔案總管」或「檔案總管」來瀏覽這些磁碟機。 指派給磁碟區的驅動器號可能與原始虛擬機的字母不同。 不過,會保留磁碟區名稱。 例如,如果原始虛擬機上的磁碟區是「數據磁碟(E:\)」,該磁碟區可以連結在本機計算機上,做為「數據磁碟」(『任何字母』:\)。 流覽文本輸出中提及的所有磁碟區,直到您找到檔案或資料夾為止。

鏈接的復原磁碟區

適用於具有大型磁碟的備份 VM(Windows)

如果在執行檔案還原腳本之後,檔案復原程式停止回應(例如,如果從未掛接磁碟,或磁碟區未出現掛接,則請執行下列步驟:

  1. 確定 OS 為 WS 2012 或更高版本。

  2. 請確定在還原伺服器中設定登錄機碼,如下所示,並確定重新啟動伺服器。 GUID 旁的數位可以介於 0001-0005。 在下列範例中,它是 0004。 瀏覽登錄機碼路徑,直到parameters區段為止。

    登錄機碼變更

- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\TimeOutValue – change this from 60 to 2400 secs.
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003\Parameters\SrbTimeoutDelta – change this from 15 to 2400 secs.
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003\Parameters\EnableNOPOut – change this from 0 to 1
- HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0003\Parameters\MaxRequestHoldTime - change this from 60 to 2400 secs.

若為 Linux

在您符合步驟 2步驟 3步驟 4 中列出的所有需求之後,請為 Linux 機器產生 Python 腳本。 請參閱 步驟 1 以瞭解如何產生和下載腳本。 下載腳本,並將其複製到相關的/相容的Linux伺服器。 您可能必須修改許可權,才能使用 chmod +x <python file name>來執行它。 然後使用 執行 Python 檔案 ./<python file name>

在Linux中,恢復點的磁碟區會掛接至執行腳本的資料夾。 連結的磁碟、磁碟區和對應的掛接路徑會據以顯示。 具有根層級存取權的使用者可以看到這些掛接路徑。 瀏覽指令碼輸出中提及的磁碟區。

Linux 檔案復原功能表

適用於具有大型磁碟的備份 VM(Linux)**

如果在執行檔案還原腳本之後,檔案復原程式停止回應(例如,如果從未掛接磁碟,或磁碟區未出現掛接,則請執行下列步驟:

  1. 在 /etc/iscsi/iscsid.conf 檔案中,從下列專案變更設定:
    • node.conn[0].timeo.noop_out_timeout = 5 移至 node.conn[0].timeo.noop_out_timeout = 120
  2. 進行上述變更之後,請重新執行腳本。 如果發生暫時性失敗,請確定重新執行之間有 20 到 30 分鐘的差距,以避免連續高載影響目標準備的要求。 重新執行之間的這個間隔可確保目標已準備好從腳本進行連線。
  3. 檔案復原之後,請確定您回到入口網站,然後針對無法掛接磁碟區的恢復點選取 [卸除磁碟 ]。 基本上,此步驟會清除任何現有的進程/會話,並增加復原的機會。

LVM/RAID 陣列 (適用於 Linux VM)

在 Linux 中,邏輯磁碟區管理員 (LVM) 和/或軟體 RAID 陣列可用來管理多個磁碟上的邏輯磁碟區。 如果受保護的Linux VM使用 LVM 和/或RAID陣列,則您無法在相同的 VM 上執行腳本。
相反地,在具有相容OS的任何其他電腦上執行腳本,並支援受保護 VM 的文件系統。
下列腳本輸出會顯示 LVM 和/或 RAID 陣列磁碟,以及具有分割區類型的磁碟區。

Linux LVM 輸出功能表

若要讓這些分割區上線,請執行下列各節中的命令。

針對 LVM 分割區

執行腳本之後,LVM 磁碟分區會掛接在腳本輸出中指定的實體磁碟區/磁碟區中。 此程式為

  1. 從實體磁碟區或磁碟取得磁碟區組名的唯一清單
  2. 然後列出這些磁碟區群組中的邏輯磁碟區
  3. 然後將邏輯磁碟區掛接至所需的路徑。
列出實體磁碟區中的磁碟區組名

若要列出磁碟區組名:

sudo pvs -o +vguuid

此命令會列出所有實體磁碟區(包括執行腳本之前存在的磁碟區)、其對應的磁碟區組名,以及磁碟區群組的唯一使用者標識碼(UUID)。 命令的範例輸出如下所示。

PV         VG        Fmt  Attr PSize   PFree    VG UUID

  /dev/sda4  rootvg    lvm2 a--  138.71g  113.71g EtBn0y-RlXA-pK8g-de2S-mq9K-9syx-B29OL6

  /dev/sdc   APPvg_new lvm2 a--  <75.00g   <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5

  /dev/sde   APPvg_new lvm2 a--  <75.00g   <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5

  /dev/sdf   datavg_db lvm2 a--   <1.50t <396.50g dhWL1i-lcZS-KPLI-o7qP-AN2n-y2f8-A1fWqN

  /dev/sdd   datavg_db lvm2 a--   <1.50t <396.50g dhWL1i-lcZS-KPLI-o7qP-AN2n-y2f8-A1fWqN

第一個數據行 (PV) 會顯示實體磁碟區,後續數據行會顯示相關的磁碟區組名、格式、屬性、大小、可用空間,以及磁碟區群組的唯一標識符。 命令輸出會顯示所有實體磁碟區。 請參閱文本輸出,並識別與備份相關的磁碟區。 在上述範例中,腳本輸出會顯示 /dev/sdf 和 /dev/sdd。 因此,datavg_db磁碟區群組屬於腳本,而Appvg_new磁碟區群組屬於計算機。 最後的想法是確定唯一的磁碟區組名應該有一個唯一標識碼。

重複的磁碟區群組

在某些情況下,磁碟區組名在執行腳本之後可以有 2 個 UUID。 這表示執行腳本且備份 VM 中的磁碟區組名相同。 然後,我們需要重新命名備份的 VM 磁碟區群組。 請查看下列範例。

PV         VG        Fmt  Attr PSize   PFree    VG UUID

  /dev/sda4  rootvg    lvm2 a--  138.71g  113.71g EtBn0y-RlXA-pK8g-de2S-mq9K-9syx-B29OL6

  /dev/sdc   APPvg_new lvm2 a--  <75.00g   <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5

  /dev/sde   APPvg_new lvm2 a--  <75.00g   <7.50g njdUWm-6ytR-8oAm-8eN1-jiss-eQ3p-HRIhq5

  /dev/sdg   APPvg_new lvm2 a--  <75.00g  508.00m lCAisz-wTeJ-eqdj-S4HY-108f-b8Xh-607IuC

  /dev/sdh   APPvg_new lvm2 a--  <75.00g  508.00m lCAisz-wTeJ-eqdj-S4HY-108f-b8Xh-607IuC

  /dev/sdm2  rootvg    lvm2 a--  194.57g  127.57g efohjX-KUGB-ETaH-4JKB-MieG-EGOc-XcfLCt

腳本輸出會顯示為附加的 /dev/sdg、/dev/sdh、/dev/sdm2。 因此,對應的 VG 名稱會Appvg_new和 rootvg。 但機器的 VG 清單中也會有相同的名稱。 我們可以確認一個 VG 名稱有兩個 UUID。

現在我們需要重新命名腳本型磁碟區的 VG 名稱,例如:/dev/sdg、/dev/sdh、/dev/sdm2。 若要重新命名磁碟區群組,請使用下列命令

sudo vgimportclone -n rootvg_new /dev/sdm2
sudo vgimportclone -n APPVg_2 /dev/sdg /dev/sdh

現在,我們有所有具有唯一標識符的 VG 名稱。

作用中磁碟區群組

請確定對應至腳本磁碟區的磁碟區群組為使用中。 下列命令可用來顯示使用中的磁碟區群組。 檢查文本的相關磁碟區群組是否存在在此清單中。

sudo vgdisplay -a

否則,請使用下列命令來啟動磁碟區群組。

sudo vgchange –a y  <volume-group-name>
列出磁碟區群組內的邏輯磁碟區

一旦取得與腳本相關的唯一作用中 VG 清單,就可以使用下列命令列出存在於這些磁碟區群組中的邏輯磁碟區。

sudo lvdisplay <volume-group-name>

此命令會將每個邏輯磁碟區的路徑顯示為 『LV Path』。

掛接邏輯磁碟區

若要將邏輯磁碟區掛接至您選擇的路徑:

sudo mount <LV path from the lvdisplay cmd results> </mountpath>

警告

請勿使用 『mount -a』。 此命令會掛接 『/etc/fstab』 中所述的所有裝置。 這可能表示可以掛接重複的裝置。 數據可以重新導向至腳本所建立的裝置,此腳本不會保存數據,因此可能會導致數據遺失。

針對 RAID 陣列

下列命令會顯示所有 RAID 磁碟的詳細資料:

sudo mdadm –detail –scan

相關的 RAID 磁碟會顯示為 /dev/mdm/<RAID array name in the protected VM>

如果 RAID 磁碟具有實體磁碟區,請使用掛接命令:

sudo mount [RAID Disk Path] [/mountpath]

如果RAID磁碟已設定另一個 LVM,則針對 LVM 磁碟分區使用上述程式,但使用磁碟區名稱取代 RAID 磁碟名稱。

步驟 6:關閉連線

在識別檔案,並將其複製到本機儲存位置之後,移除 (或卸載) 其他磁碟機。 若要卸載磁碟機,請在 Azure 入口網站的 [檔案復原] 功能表上選取 [卸載磁碟]

卸載磁碟

卸除磁碟之後,您會收到訊息。 重新整理連線可能需要幾分鐘的時間,才能移除磁碟。

在Linux中,在中斷與恢復點的連線之後,OS 不會自動移除對應的掛接路徑。 掛接路徑會以「孤立」磁碟區的形式存在且可見,但在存取/寫入檔案時擲回錯誤。 您可以使用 『clean』 參數執行腳本來手動移除它們。python scriptName.py clean 執行時,腳本會識別任何先前恢復點中現有的這類磁碟區,並在同意時加以清除。

注意

請確定在還原必要的檔案之後,連線已關閉。 這很重要,特別是在執行腳本的計算機也設定為備份的案例中。 如果連線仍然開啟,後續備份可能會失敗,並出現「UserErrorUnableToOpenMount」錯誤。 這是因為已掛接的磁碟驅動器/磁碟區會假設可供使用,而且存取時可能會失敗,因為基礎記憶體,也就是 iSCSI 目標伺服器可能無法使用。 清除連線將會移除這些磁碟驅動器/磁碟區,因此無法在備份期間使用。

安全性

本節討論從 Azure VM 備份實作檔案復原時所採取的各種安全性措施。

功能流程

這項功能是建置來存取 VM 數據,而不需要還原整個 VM 或 VM 磁碟,且步驟最少。 VM 數據的存取是由腳本所提供(執行時會掛接復原磁碟區,如下所示),並形成所有安全性實作的基石:

安全性功能流程

安全性實作

選取 [恢復點] (誰可以產生文稿)

腳本提供 VM 數據的存取權,因此請務必先規範誰可以產生它。 您必須登入 Azure 入口網站,並授權成為 Azure RBAC 來產生腳本。

檔案復原需要與 VM 還原和磁碟還原所需的相同授權層級。 換句話說,只有授權的使用者才能檢視 VM 數據,才能產生腳本。

產生的腳本會使用 Azure 備份 服務的官方 Microsoft 憑證簽署。 任何竄改腳本表示簽章已中斷,且任何執行腳本的嘗試都反白顯示為OS的潛在風險。

掛接復原磁碟區 (誰可以執行文稿)

只有 管理員 可以執行腳本,而且應該以提升許可權模式執行。 腳本只會執行一組預先產生的步驟,且不接受來自任何外部來源的輸入。

若要執行腳本,只有在 Azure 入口網站 或 PowerShell/CLI 中產生腳本時,才向授權的使用者顯示密碼。 這是為了確保下載文本的授權用戶也負責執行腳本。

管理檔案和資料夾

若要瀏覽檔案和資料夾,腳本會使用機器中的iSCSI啟動器,並連線到設定為iSCSI目標的恢復點。 您可以在這裏想像一個嘗試模仿/詐騙任一元件/所有元件的案例。

我們會使用相互 CHAP 驗證機制,讓每個元件驗證另一個元件。 這表示假啟動器很難連線到 iSCSI 目標,以及將假目標連接到執行腳本的電腦。

復原服務與計算機之間的數據流會透過 TCP 建置安全的 TLS 通道來保護它(應在執行腳本的機器中支援 TLS 1.2)。

父/備份 VM 中存在的任何檔案 存取控制 清單 (ACL)也會保留在掛接的文件系統中。

腳本會提供恢復點的唯讀存取權,且有效期只有 12 小時。 如果您想要移除先前的存取權,請登入 Azure 入口網站/PowerShell/CLI,並針對該特定恢復點執行卸載磁碟。 腳本會立即失效。

下一步