Skip to content

Msururu wa picha wa mashine pepe iliyovunjika (.VMDK / .VHDX / .QCOW2) na uokoaji wa diski

Nambari za dharura hutofautiana baina ya nchi. Ukurasa huu unatumia 911, nambari ya Marekani na Kanada. Nchi nyingine nyingi hutumia 112, 999, au nambari nyingine. Tafuta nambari ya nchi yako.

Wakati Mashine ya Uzalishaji ya Virtual (VM) kwenye VMware ESXi / Workstation, Microsoft Hyper-V, Proxmox VE / QEMU-KVM, au Oracle VirtualBox inakataa ghafla kuwasha baada ya kazi ya kuhifadhi nakala kufeli, hifadhidata huisha nafasi ya diski (0 bytes free), au msimamizi akigusa faili ya muhtasari, kubofya mara moja kwa hofu kunaweza kufuta data ya moja kwa moja ya biashara kwa miezi au miaka. Picha za mashine pepe ni **sio nakala kamili za kujitegemea **; ni tete Minyororo ya kutofautisha ya delta ya Copy-on-Write (CoW) (*-000001-delta.vmdk, *.avhdx, au faili inayounga mkono .qcow2 overlays) ambapo kila kizuizi kimoja kilichoandikwa tangu picha ichukuliwe huishi ndani ya faili za delta pekee, wakati diski ya msingi hukaa ikiwa imeganda.

Ukiona makosa kama "The parent virtual disk has been modified since the child was created (Parent CID does not match)" katika VMware, "Cannot boot: The chain of virtual hard disks is broken" katika Hyper-V, au "Could not open backing file: L1/L2 table corrupted" katika QEMU/Proxmox, kuelekeza tena VM Moja kwa moja kwenye Diski ya Msingi (flat.vmdk au msingi .vhdx) na kuianzisha ni mbaya. Kufanya hivyo huboresha seva kama ilivyokuwa miezi 6 iliyopita wakati muhtasari wa kwanza ulipoundwa, kubatilisha papo hapo kiungo cha siri cha mzazi na mtoto cha GUID/CID na kutoa kila muhtasari wa delta tangu tarehe hiyo kuwa yatima na isiyoweza kuunganishwa.

Mwongozo huu unatoa hatua kwa hatua uundaji upya wa msururu wa picha usioharibu, urekebishaji wa kichwa cha maelezo-faili, na itifaki za uchimbaji wa faili za wageni zilizo nje ya bendi kulingana na VMware na Broadcom Knowledge Base Articles (KB 1007969 / 316578 na KB 1002511), Microsoft Hyper-V. Merge-VHD na Set-VHD vipimo vya uhandisi, QEMU qemu-img na libguestfs (guestmount) viwango vya uchunguzi, na Uchapishaji Maalum wa NIST 800-86.

Fanya hivi sasa

Iwapo mashine pepe itakataa kuanza au kurusha mnyororo wa picha uliovunjika / hitilafu ya diski pepe iliyoharibika:

  1. USIWAHI kuhariri mipangilio ya VM ili kuwasha moja kwa moja kutoka kwa Base Disk (Server.vmdk au Server.vhdx) wakati delta inapiga picha (-000001.vmdk au .avhdx) zipo kwenye folda. Mara tu mfumo wa uendeshaji wa mgeni unapotoka moja kwa moja kwenye diski kuu ya msingi kwa hata sekunde 2, Mfumo wa Uendeshaji wa mgeni huandika mihuri ya saa ya kuwasha na masasisho ya jarida la NTFS/ext4 kwenye diski msingi, kurekebisha Kitambulisho cha Maudhui (CID) katika VMware au Muunganisho GUID / Timestamp katika Hyper-V. Kianzio hicho kimoja huvunja msururu mzima wa vijipicha vya watoto vinavyotegemea diski ya msingi kubaki ikiwa imeganda kidogo. Ikiwa chumba chako cha seva kinakabiliwa na moto unaoendelea, kushindwa kwa kupoeza, au hatari ya kimwili, ondoa na upige simu kwa nambari yako ya dharura ya eneo lako (911 nchini Marekani na Kanada, 112 kote Umoja wa Ulaya, 999 nchini Uingereza) au angalia nambari za dharura.
  2. USIFUTE KAMWE .avhdx, -delta.vmdk, au -sesparse.vmdk faili katika Windows Explorer au Kivinjari cha Hifadhidata cha ESXi ili "kufungua nafasi ya diski." Tofauti na faili za muda za kawaida, .avhdx na -delta.vmdk faili NDIO diski kuu ya sasa ya moja kwa moja. Ikiwa picha iliundwa miezi 8 iliyopita na kazi iliyokwama ya chelezo ya Veeam/CommVault na ikaachwa ikiendelea, asilimia 100 ya kila shughuli ya hifadhidata, ankara na faili iliyoundwa katika miezi 8 iliyopita huhifadhiwa ndani ya hizo. .avhdx au -delta.vmdk faili. Kuzifuta hufuta data yote iliyoundwa tangu muhtasari uanze.
  3. Nakili au iga zote .vmdk, .vhdx/.avhdx, au .qcow2 faili kwa kiasi cha hifadhi ya nje / ya upili KABLA ya kutekeleza amri yoyote ya kuunganisha, kuweka, au kutengeneza. Kuunganisha msururu wa picha huandika vizuizi vyote vya delta kuelekea nyuma kwenye diski kuu in-place. Ikiwa muunganisho hautafaulu katikati kwa sababu ya sekta mbaya ya diski au hitilafu kamili ya hifadhidata, diski za mzazi na za mtoto zitaharibika isipokuwa uchukue nakala ya faili ghafi kwanza.
  4. Ikiwa hypervisor imeshindwa kwa sababu Hifadhidata ya mwenyeji / Kiasi kiligonga 100% Kamili (No space left on device), USIjaribu kamwe "Kufuta / Kuunganisha Vijipicha" hadi uongeze nafasi au utengeneze kwenye hifadhi kubwa ya data. Kuunganisha msururu wa picha nyingi kunahitaji nafasi ya kukwangua ya muda sawa na saizi ya diski kubwa zaidi ya delta. Kujaribu kujumuisha kwenye hifadhidata kamili ya 99% kutaharibu ahadi ya katikati ya hypervisor.
  5. Ramani Mzazi halisi -> Msururu wa utegemezi wa mtoto kwa kutumia amri za ukaguzi za kusoma tu (vmkfstools -e, Get-VHD, au qemu-img info --backing-chain) kabla ya kugusa baiti moja. Kila kichwa cha muhtasari wa faili kinataja kwa uwazi jina kamili la faili la mzazi na kitambulisho cha siri cha wazazi ambacho kinatarajia kukaa juu yake moja kwa moja.
flowchart TD
    A["VM Inakataa Kuwasha: Msururu Uliovunjwa wa Picha, Kutolingana kwa CID ya Mzazi, au VMDK/VHDX/QCOW2 Ufisadi"] --> B["ACHA: USIWASHE diski ya msingi moja kwa moja, na USIFUTE faili zozote -delta.vmdk au .avhdx"]
    B --> C["Hatua ya 1: Angalia Hifadhidata ya Mwenyeji / Nafasi Isiyo na Kiasi (`df -h` / `orodha ya mfumo wa hifadhi ya esxcli`)"]
    C --> D["Hatua ya 2: Nakili faili zote za msingi na muhtasari kwa hifadhi rudufu ya NAS/SAN/USB kabla ya kurekebisha"]
    D --> E{"Je, ni Umbizo gani la Hypervisor / Virtual Disk limeathiriwa?"}
    E -->|"1. VMware ESXi / Kituo cha Kazi (.vmdk / -flat.vmdk / -delta.vmdk / -sesparse.vmdk)"| F["Kagua vielezi vya maandishi (`paka *.vmdk`) & msururu wa tiki (`vmkfstools -e Server-000002.vmdk`)"]
    F --> G{"Je, kosa la VMware VMDK ni nini?"}
    G -->|"Kutolingana kwa CID ya Mzazi (`mzaziCID .= CID ya mzazi`)"| H["Badilisha kifafanuzi cha maandishi ya mtoto `.vmdk` ili `mzaziCID` ilingane na `CID` ya mzazi, AU unganisha diski ya jani amilifu kwa VMDK mpya iliyounganishwa (`vmkfstools -i`)"]
    G -->|"Kifafanuzi cha maandishi cha KB-1 kinakosekana `.vmdk` ( `-flat.vmdk` kikubwa pekee kipo)"| I["Kokotoa ukubwa halisi wa baiti / sekta 512 na uunde upya kifafanuzi cha maandishi wazi `.vmdk` kwa `vmkfstools -c`"]
    E -->|"2. Microsoft Hyper-V (.vhdx na .avhdx mlolongo)"| J["Kagua msururu kutoka `.avhdx` mpya zaidi: `Pata-VHD -Njia *.avhdx | Chagua Njia,Njia ya Mzazi`"]
    J --> K["Unganisha upya kielekezi cha mzazi kilichovunjika (`Set-VHD -Path child.avhdx -ParentPath parent.vhdx -IgnoreIdMismatch`) au unganisha nje ya mtandao (`Unganisha-VHD`)"]
    E -->|"3. Proxmox / KVM / QEMU (.qcow2) au VirtualBox (.vdi)"| L["Angalia `qemu-img info --backing-chain`; rekebisha jedwali la refcount/L2 (`qemu-img angalia -r zote`) au weka upya (`qemu-img rebase -u`)"]
    H --> M["Uokoaji wa Faili za Nje ya Bendi: Weka msururu wowote moja kwa moja katika hali ya Kusoma Pekee kupitia `guestmount --ro` au `7-Zip` / `UFS Explorer`"]
    I --> M
    K --> M
    L --> M

Kuelewa jinsi minyororo ya picha ya mashine inavyofanya kazi kweli

Iwe unaendesha VMware ESXi, Microsoft Hyper-V, Proxmox/KVM, au VirtualBox, kila hypervisor hutumia vijipicha kwa kutumia usanifu sawa kabisa wa kimsingi: orodha iliyounganishwa ya kila upande ya Disks za Mzazi Pekee na Diski ya Kusoma-Andika ya Delta ya Mtoto.

[Base Disk: Server.vmdk / Server.vhdx]  <-- Frozen Read-Only at Snapshot 1 (e.g., Jan 1)

         | (Points to Parent Path + Parent CID/GUID: 1234abcd)
[Snapshot 1: Server-000001.vmdk / Server_A.avhdx]  <-- Frozen Read-Only at Snapshot 2 (e.g., June 1)

         | (Points to Parent Path + Parent CID/GUID: 5678ef01)
[Snapshot 2 (Active Leaf): Server-000002.vmdk / Server_B.avhdx]  <-- Active Read/Write Today (Oct 31)
  • Wakati VM inataka kuandika kizuizi kipya leo, inaandika TU kwa faili ya chini ya jani (Snapshot 2)
  • Wakati VM inataka kusoma kizuizi leo, hypervisor hukagua Snapshot 2 kwanza. Ikiwa kizuizi hicho kilirekebishwa tangu Juni 1, kinasoma kutoka Snapshot 2. Ikiwa sivyo, inatafuta mnyororo Snapshot 1. Ikiwa haikurekebishwa huko pia, inasoma kizuizi asili kutoka kwa Base Disk.
  • Kwa nini minyororo hukatika: Kila muhtasari wa kila mtoto huhifadhi viashirio viwili vikali kwenye kichwa chake: (1) Njia ya faili ya mzazi wake wa karibu, na (2) Kitambulisho cha Maudhui cha biti 32 (CID katika VMware) au GUID ya Uunganisho ya 128-bit (ParentUniqueId katika Hyper-V) ambayo hutengenezwa upya kila wakati diski ya mzazi inafunguliwa kwa kuandika. Ikiwa mtu yeyote atahamisha faili, kubadilisha jina la folda, au kuweka kwa kifupi diski kuu katika hali ya kusoma-kuandika, mzazi CID / GUID mabadiliko, na hypervisor mara moja inakataa kuweka snapshot ya mtoto ili kuzuia uharibifu wa kuzuia kimya.
Jukwaa la Hypervisor Faili za Msingi za Diski Picha / Faili za Delta Chombo cha Ukaguzi wa Chain CLI Ujumuishaji Salama / Unganisha Zana ya CLI
VMware ESXi (VMFS-5 / VMFS-6) & Kituo cha Kazi VM.vmdk (Kifafanuzi cha maandishi ya baiti 500) + VM-flat.vmdk (data mbichi ya diski ya binary) VM-000001.vmdk (mfafanuzi wa maandishi) + VM-000001-sesparse.vmdk (VMFS-6) au VM-000001-delta.vmdk (VMFS-5) vmkfstools -e VM-000002.vmdk na cat VM*.vmdk vmkfstools -i VM-000002.vmdk /vmfs/volumes/NewDS/Merged.vmdk (Mchanganyiko wa nje ya mahali usioharibu)
Microsoft Hyper-V (Seva ya Windows) VM.vhdx (au urithi .vhd) VM_<GUID>.avhdx (au .avhd) PowerShell: Pata-VHD -Njia *.avhdx \ | Chagua Njia,Njia ya Mzazi,VhdType PowerShell: Set-VHD -Path child.avhdx -ParentPath parent.vhdx na Merge-VHD -Path child.avhdx -DestinationPath parent.vhdx
Proxmox VE / QEMU / KVM (Linux) vm-100-disk-0.qcow2 (au kiasi mbichi cha LVM/ZFS) Uwekeleaji wa nje .qcow2 iliyo na kichwa cha faili kinachounga mkono (au jedwali la ndani la QCOW2) qemu-img info --backing-chain top_overlay.qcow2 qemu-img convert -O qcow2 top_overlay.qcow2 flattened_rescue.qcow2 (Safest out-of-place flatten) au qemu-img commit
Oracle VirtualBox Disk.vdi (ndani ya folda ya VM) {UUID}.vdi ndani Snapshots/ folda ndogo + .vbox Usajili wa media ya XML VBoxManage showmediuminfo disk "{UUID}.vdi" VBoxManage clonemedium disk "{Newest_Snapshot_UUID}.vdi" Flattened_Rescue.vdi

Wimbo 1: Rescuing VMware ESXi & Workstation .vmdk minyororo ya snapshot

Katika VMware ESXi, diski moja ya kweli ina ** faili mbili tofauti ** kwa diski ya msingi na ** faili mbili tofauti ** kwa kila muhtasari: 1. Faili ndogo (-500-baiti) ya Maelezo ya maandishi wazi (Server.vmdk na Server-000001.vmdk) ambayo inashikilia CID, parentCID, jiometri ya diski, na jina halisi la faili la kiwango cha binary. (Kumbuka: GUI ya hisa ya ESXi Datastore Browser web huficha vilivyooanishwa -flat.vmdk na -sesparse.vmdk faili za jozi na inaonyesha ikoni moja pekee iliyounganishwa, LAZIMA utumie kipindi cha wastaafu cha SSH kwenye seva pangishi ya ESXi ili kuona faili za kweli). 2. Faili ya Kiwango cha Data cha gigabyte nyingi (Server-flat.vmdk kwa diski ya msingi, na Server-000001-sesparse.vmdk au Server-000001-delta.vmdk kwa kila muhtasari).

Mfano wa 1A: Kurekebisha "The parent virtual disk has been modified since the child was created (Parent CID mismatch)"

  1. SSH kwenye seva pangishi ya ESXi na uende kwenye saraka ya hifadhidata ya VM:
    cd /vmfs/volumes/<Datastore_Name>/<VM_Folder_Name>/
    ls -la *.vmdk
    
  2. Chapisha CID, parentCID, na parentFileNameHint kwa maelezo yote ya maandishi .vmdk faili mara moja: (Muhimu: kukimbia tu cat au grep kwenye kifafanuzi kidogo cha maandishi cha baiti 500 .vmdk faili, SI kwenye gigabyte nyingi -flat.vmdk au -sesparse.vmdk faili).
    grep -E "CID|parentFileNameHint|Extent description" -A 2 Server.vmdk Server-00000*.vmdk
    
  3. Linganisha na CID ya kila mzazi dhidi ya parentCID mtoto wake wa karibu: Angalia matokeo:
    Server.vmdk:           CID=1a2b3c4d
                           parentCID=ffffffff   (ffffffff means this is the root Base Disk)
    
    Server-000001.vmdk:    CID=99887766
                           parentCID=55443322   <-- ERROR: Should equal Server.vmdk's CID (1a2b3c4d)
                           parentFileNameHint="Server.vmdk"
    
    Server-000002.vmdk:    CID=aabbccdd
                           parentCID=99887766   <-- OK: Matches Server-000001.vmdk's CID (99887766)
                           parentFileNameHint="Server-000001.vmdk"
    
  4. Rekebisha iliyovunjika parentCID katika kielezi cha mtoto na uthibitishe na vmkfstools -e:
  5. Kwanza, weka nakala ya faili za maelezo ya maandishi (cp Server-000001.vmdk Server-000001.vmdk.bak)
  6. Fungua Server-000001.vmdk katika vi na mabadiliko parentCID=55443322 kwa parentCID=1a2b3c4d (kulingana Server.vmdkya sasa CID)
  7. Jaribu uadilifu wa mnyororo kutoka kwa muhtasari wa mpya zaidi (wenye nambari ya juu) ukitumia vmkfstools -e:
    vmkfstools -e Server-000002.vmdk
    
  8. Ikiwa mnyororo ni mzima, matokeo ya ESXi: Disk chain is consistent.
  9. KUUNGANISHA KUSIO KUHARIBU (vmkfstools -i Clone ya Nje ya Mahali):
  10. Kama Server.vmdk ilirekebishwa kidogo kabla ya kurekebisha parentCID, usiunganishe mahali pamoja juu ya nakala yako pekee. Badala yake, onyesha vmkfstools -i kwenye picha mpya ya jani (Server-000002.vmdk) na utengeneze msururu mzima kuwa VMDK mpya kabisa, iliyosawazishwa kwenye duka la data iliyo na nafasi ya bure:
    vmkfstools -i Server-000002.vmdk /vmfs/volumes/<Target_Datastore>/Server_Rescue/Server_Merged.vmdk -d thin
    
  11. vmkfstools -i inasoma kila block kutoka Server-000002.vmdk chini kupitia Server-000001.vmdk na Server-flat.vmdk kwa ukali Hali ya Kusoma Pekee na inaandika safi, isiyo na picha Server_Merged.vmdk bila kugusa faili zako asili.

Hali ya 1B: Kuunda upya baiti 500 iliyokosekana au iliyofutwa .vmdk mfafanuzi wa maandishi lini Server-flat.vmdk bado ni mzima

Wakati mwingine msimamizi au hati iliyovunjika hufuta Server.vmdk (au inaharibika kwa 0 bytes), na kusababisha Kivinjari cha Hifadhidata kuacha kuonyesha diski ya kawaida, ingawa kubwa ya 500-gigabyte Server-flat.vmdk faili iliyo na asilimia 100 ya data yako halisi bado imekaa pale kwenye SSH (ls -la *-flat.vmdk)

Unaweza kuunda upya maandishi wazi yanayokosekana Server.vmdk descriptor katika sekunde 60 bila kupoteza hata baiti moja ya data ndani Server-flat.vmdk:

# 1. Check the exact byte size of your existing Server-flat.vmdk:
ls -l Server-flat.vmdk
# Example output: -rw------- 1 root root 107374182400 Oct 31 12:00 Server-flat.vmdk  (Exactly 107,374,182,400 bytes)

# 2. Create a temporary dummy VMDK of that EXACT byte size in /tmp or the datastore:
vmkfstools -c 107374182400 -d thin temp_dummy.vmdk

# 3. Delete the dummy binary file (temp_dummy-flat.vmdk) and rename the 500-byte descriptor to Server.vmdk:
rm -f temp_dummy-flat.vmdk
mv temp_dummy.vmdk Server.vmdk

# 4. Edit Server.vmdk in 'vi' and change the filename inside quotes from "temp_dummy-flat.vmdk" to "Server-flat.vmdk":
sed -i 's/temp_dummy-flat.vmdk/Server-flat.vmdk/g' Server.vmdk
# (Also delete the line 'ddb.thinProvisioned = "1"' if the original disk was thick-provisioned)

Mfano 1C: Kufungua a .vmdk imefungwa na seva pangishi ya ESXi iliyotundikwa au proksi mbadala iliyoanguka (Cannot open the disk: Failed to lock the file)

Ikiwa VM itakataa kuendelea na Failed to lock the file au Cannot open disk: Resource busy, mpangishi mwingine wa ESXi kwenye nguzo (au kifaa cha Veeam/chelezo cha HotAdd kilichoanguka wakati wa kuhifadhi) bado ameshikilia kufuli ya faili ya SCSI / VMFS imewashwa. -flat.vmdk au -sesparse.vmdk: 1. Angalia ikiwa seva mbadala ya VM iliyoanguka bado ina VM yako ya uzalishaji .vmdk iliyoambatishwa kwa kidhibiti chake pepe cha SCSI: Hariri mipangilio ya VM yako ya seva mbadala ya Veeam/CommVault na uondoe diski za uzalishaji zilizopitwa na wakati (chagua "Ondoa kwenye Mashine ya Mtandaoni," KAMWE "Futa faili kwenye hifadhidata"). 2. Tafuta ni anwani ipi ya MAC ya mwenyeji wa ESXi na mchakato wa ulimwengu unaoshikilia kufuli ya VMFS:

vmfsfilelockinfo -p /vmfs/volumes/<Datastore>/<VM_Folder>/Server-flat.vmdk
SSH ndani ya seva pangishi maalum ya ESXi iliyoshikilia kufuli, pata iliyopachikwa vmx kitambulisho cha ulimwengu (esxcli vm process list), na kukomesha ulimwengu ulionyongwa (esxcli vm process kill --type=force --world-id=<WorldID>)

Wimbo wa 2: Kuokoa Microsoft Hyper-V .vhdx na .avhdx minyororo ya snapshot

Katika Microsoft Hyper-V, kila sehemu ya ukaguzi (picha) huunda diski ngumu ya kutofautisha na kiendelezi .avhdx (au .avhd kwenye fomati ya zamani ya VHD) ilipewa jina refu la faili la GUID kama ProdSQL_A1B2C3D4-E5F6-7890-ABCD-1234567890AB.avhdx.

Hatua ya 1: Ramani ya mpangilio kamili wa matukio .avhdx mti wa mzazi na mtoto katika PowerShell

Kabla ya kuunganisha au kuunganisha tena kitu chochote katika Kidhibiti cha Hyper-V, fungua dirisha la Msimamizi Aliyeinuliwa PowerShell kwenye mwenyeji wa Hyper-V, nenda kwenye folda iliyo na yako. .vhdx na .avhdx faili, na uendeshe mjengo huu ili kuonyesha msururu halisi wa mzazi na mtoto kutoka mpya kabisa hadi wa zamani zaidi:

# Inspect every .vhdx and .avhdx in the directory, sorted by LastWriteTime:
Get-ChildItem -Filter "*.*vhd*" | ForEach-Object {
    Get-VHD -Path $_.FullName -ErrorAction SilentlyContinue |
    Select-Object Path, ParentPath, VhdType, FileSize, Size
} | Format-List

Angalia Path na ParentPath mashamba. Wataonyesha mpangilio halisi wa mnyororo: - ProdSQL.vhdx -> ParentPath: (blank) (** Diski ya Msingi ya Mizizi, Kongwe zaidi **) - ProdSQL_1111.avhdx -> ParentPath: D:\VMs\ProdSQL.vhdx (Mtoto 1) - ProdSQL_2222.avhdx -> ParentPath: D:\VMs\ProdSQL_1111.avhdx (Mtoto 2) - ProdSQL_3333.avhdx -> ParentPath: D:\VMs\ProdSQL_2222.avhdx (Diski Mpya Zaidi Inayotumika ya Majani)

Hatua ya 2: Kurekebisha "The chain of virtual hard disks is broken" au "Differencing disk parent ID mismatch" (Set-VHD -IgnoreIdMismatch)

Nini ikiwa mtu atahamisha folda ya VM kutoka C:\VMs\ kwa E:\VMs\, au imewashwa kwa bahati mbaya ProdSQL.vhdx kwa sekunde 5, na kusababisha ProdSQL_1111.avhdx kushindwa na: The chain of virtual hard disks is broken. The system cannot locate the parent virtual hard disk for the differencing disk au There is a mismatch in the virtual disk identifiers?

Tumia cmdlet rasmi ya Hyper-V PowerShell Set-VHD pamoja na -IgnoreIdMismatch bendera (baada ya kucheleza faili kwanza):

# Relink a child .avhdx to its parent .vhdx/.avhdx (adding -IgnoreIdMismatch if the parent timestamp/GUID shifted):
Set-VHD -Path "E:\VMs\ProdSQL_1111.avhdx" -ParentPath "E:\VMs\ProdSQL.vhdx" -IgnoreIdMismatch

Hatua ya 3: Kuunganisha kwa mikono yatima .avhdx mlolongo kutoka MPYA hadi OLDEST (Merge-VHD)

Wakati wakala wa chelezo anaacha 15 yatima .avhdx faili kwenye folda yako ambazo hazionekani tena ndani ya mti wa "Checkpoints" za Kidhibiti cha Hyper-V, lazima uziunganishe mwenyewe kwenye PowerShell huku VM IMEZIMWA.

Danger

Sheria ya Chuma ya Hyper-V .avhdx Kuunganisha: Lazima kila wakati uunganishe kutoka MPYA KABISA (jani ndogo zaidi) .avhdx ndani ya mzazi wake wa karibu, ukifanya kazi kwa njia yako hatua kwa hatua kuelekea nyuma kwenye mnyororo hadi msingi pekee .vhdx mabaki. Kwa mfano, katika mnyororo Base.vhdx <- Child1.avhdx <- Child2.avhdx <- Child3_Newest.avhdx: 1. Unganisha Child3_Newest.avhdx -> ndani Child2.avhdx. 2. Unganisha Child2.avhdx -> ndani Child1.avhdx. 3. Unganisha Child1.avhdx -> ndani Base.vhdx. 4. Elekeza mipangilio ya VM kwenye Base.vhdx na buti.

Tekeleza amri hizi za PowerShell kwenye nakala inayofanya kazi ya folda:

# Step 1: Merge Child 3 (Newest) into Child 2:
Merge-VHD -Path "E:\VMs\ProdSQL_3333.avhdx" -DestinationPath "E:\VMs\ProdSQL_2222.avhdx"

# Step 2: Merge Child 2 into Child 1:
Merge-VHD -Path "E:\VMs\ProdSQL_2222.avhdx" -DestinationPath "E:\VMs\ProdSQL_1111.avhdx"

# Step 3: Merge Child 1 into the Base .vhdx:
Merge-VHD -Path "E:\VMs\ProdSQL_1111.avhdx" -DestinationPath "E:\VMs\ProdSQL.vhdx"

Wimbo wa 3: Kuokoa Proxmox VE / QEMU / KVM .qcow2 na VirtualBox .vdi minyororo

1. Kukagua na kukarabati Jedwali mbovu za Nguzo za QCOW2 L1/L2 na Refcount (qemu-img check)

Wakati mwenyeji wa Linux KVM au Proxmox anakumbwa na kukatika kwa umeme kwa ghafla bila kashe inayoungwa mkono na betri, a. .qcow2 diski halisi mara nyingi hushindwa kuanza nayo qcow2: Marking image as corrupt: L2 table offset unaligned au Refcount block corrupted. 1. Kwanza nakala ya .qcow2 faili (cp vm-100-disk-0.qcow2 vm-100-disk-0.qcow2.bak). 2. Kagua msururu wa usaidizi na orodha ya muhtasari wa ndani:

qemu-img info --backing-chain vm-100-disk-0.qcow2
qemu-img snapshot -l vm-100-disk-0.qcow2
3. Rekebisha makundi yaliyovuja na majedwali ya hesabu yaliyoharibika kwenye nakala yako ya kazi:
qemu-img check -r all vm-100-disk-0.qcow2

2. Kurekebisha Njia ya Faili ya Kusaidia ya QCOW2 iliyovunjika (qemu-img rebase -u)

Ikiwa picha ya nje ya QCOW2 (overlay.qcow2) inashindwa kufunguka kwa sababu faili inayoungwa mkono na mzazi (base.qcow2) ilihamishwa hadi kwenye saraka mpya au dimbwi la kuhifadhi, sasisha kielekezi cha faili inayounga mkono kwa njia isiyo salama (-u, hali ya kichwa pekee) bila kuandika tena vizuizi vya data:

qemu-img rebase -u -b /new/path/to/base.qcow2 -F qcow2 overlay.qcow2

3. Kusawazisha mnyororo dhaifu wa QCOW2 au VMDK au VHDX kwenye picha mpya kabisa inayojitegemea (qemu-img convert)

Mojawapo ya zana zinazofaa zaidi katika uokoaji wa mashine pepe ni qemu-img convert (ambayo inasoma asili .qcow2, .vmdk, .vhdx, .vhd, na .vdi) Unapoelekeza qemu-img convert kwenye picha mpya kabisa ya jani ya msururu halali, inasoma safu nzima ya mzazi na mtoto katika hali ya Kusoma Pekee na kuandika diski pepe mpya kabisa, inayojitosheleza na isiyo na picha kwenye hifadhi yako ya uokoaji:

# Non-destructively flatten an entire QCOW2, VMDK, or VHDX chain into a single clean image:
qemu-img convert -p -O qcow2 top_snapshot_leaf.qcow2 /mnt/rescue_storage/flattened_clean.qcow2

Wimbo wa 4: Uokoaji wa faili nje ya bendi (Kutoa faili wakati VM bado haitaanza)

Ikiwa mfumo wa uendeshaji wa mgeni ndani ya diski ya kawaida hauwezekani, au picha ya kati kwenye mnyororo imeharibiwa kwa kiasi na unahitaji kutoa hifadhidata za SQL (.mdf/.ldf), faili za QuickBooks, /var/lib/mysql, au hati za kampuni ndani ya dakika 30 zijazo?

Huhitaji kuwasha Mashine ya Mtandaoni ili kutoa faili ndani ya diski kuu yake pepe. Tumia mojawapo ya zana hizi tatu za kupachika za nje ya bendi zisizo na uharibifu:

Njia ya 1: Panda yoyote .vmdk, .vhdx, .qcow2, au .vdi katika Hali ya Kusoma Pekee kwenye Linux kwa kutumia libguestfs (guestmount / qemu-nbd)

Sakinisha libguestfs-tools (sudo apt install libguestfs-tools qemu-utils kwenye Ubuntu/Debian/Proxmox) na uweke picha mpya zaidi ya jani kwa njia madhubuti ya Soma-Pekee (--ro):

# Option A: Using guestmount (Automatically detects internal guest LVM/partitions and mounts read-only):
sudo mkdir -p /mnt/vm_rescue
sudo guestmount -a /path/to/Newest_Leaf_Snapshot.vmdk -i --ro /mnt/vm_rescue
# (If guest OS partitions fail auto-inspection due to dirty NTFS journal, list partitions with 'virt-filesystems -a disk.vmdk -l'
# and mount the specific partition directly with '-m /dev/sda2 --ro -o norecover')

# Option B: Attaching the virtual disk chain as a Read-Only Network Block Device (/dev/nbd0):
sudo modprobe nbd max_part=16
sudo qemu-nbd --read-only --connect=/dev/nbd0 /path/to/Newest_Leaf_Snapshot.qcow2
sudo partprobe /dev/nbd0
lsblk /dev/nbd0
# Now mount /dev/nbd0p2 read-only (with -o ro,norecover for NTFS or -o ro,noload for ext4):
sudo mount -o ro,norecover /dev/nbd0p2 /mnt/vm_rescue

Mbinu ya 2: Uchimbaji wa Kusoma Pekee Papo Hapo kwenye Windows kwa kutumia 7-Zip au Disk Management -> Attach VHD (Read-Only)

  • Kutumia 7-Zip (Inaendelea kufanya kazi .vmdk, .vhdx, .vhd, .qcow2, na .vdi): Bofya kulia ili kusimama pekee au bapa .vmdk, .vhdx, au .qcow2 faili kwenye Windows na uchague 7-Zip -> Fungua Kumbukumbu. 7-Zip huchanganua majedwali ya kizigeu cha GPT/MBR na mifumo ya faili ya NTFS/ext4 ndani ya diski pepe katika hali ya 100% ya kusoma tu, huku kuruhusu kuburuta na kudondosha folda za wageni moja kwa moja kwenye eneo-kazi lako kwa sekunde.
  • ** Kutumia Usimamizi wa Diski ya Windows (Kwa .vhdx / .avhdx):** Fungua diskmgmt.msc -> Kitendo -> Ambatisha VHD -> Vinjari kwa jani jipya zaidi .avhdx (au .vhdx), ANGALIA KISAnduku [X] Read-only (MUHIMU: Usisahau kamwe kuangalia Soma-pekee, au Windows itarekebisha kichwa cha diski), na ubofye Sawa. VM yako ya C: na D: anatoa huonekana mara moja katika Windows File Explorer.

Njia ya 3: Kujenga upya minyororo iliyoharibiwa sana na UFS Explorer Professional Recovery

Ikiwa diski kuu katika msururu wa VMDK au VHDX iliwashwa na kurekebishwa kwa bahati mbaya, au ikiwa uharibifu wa hifadhidata ya VMFS/NTFS ulipasua sehemu ya -sesparse.vmdk au .avhdx faili ili zana za hypervisor ziikatae, Upataji Mtaalamu wa UFS Explorer (au R-Studio Technician) hukuruhusu kukusanya mwenyewe diski mbichi ya msingi na kila picha ya delta ya mtoto kuwa maalum Virtual Delta Stack katika RAM ya programu, kupita hypervisor. CID/GUID hukagua kichwa ili kuchonga na kutoa faili za wageni zisizo kamili.

Wimbo wa 5: Kurejesha faili ya usanidi ya VM yatima (.vmx, .xml, au <vmid>.conf)

Wakati mwingine mnyororo wa diski ngumu yenyewe (*.vmdk, *.vhdx, au *.qcow2) iko sawa kwa asilimia 100 kwenye safu ya uhifadhi, lakini faili ndogo ya usanidi ambayo inafafanua mpangilio wa vifaa vya Mashine ya Virtual (.vmx katika VMware ESXi, <GUID>.vmcx / .xml katika Hyper-V, au /etc/pve/qemu-server/<vmid>.conf katika Proxmox VE) imeharibika, kufutwa kwa bahati mbaya, au kuzima wakati wa ajali ya seva pangishi.

Ukiunda upya ganda la VM badala na kidhibiti kisicho sahihi cha uhifadhi au hali ya programu dhibiti, mfumo wa uendeshaji wa mgeni utaanguka mara moja kwenye kuwasha na. INACCESSIBLE_BOOT_DEVICE (Windows) au dondosha kwenye a dracut / initramfs shell ya dharura (Linux). Linganisha mipangilio hii minne ya maunzi na usanidi wako wa asili wa mgeni kabla ya kuambatisha diski yako pepe iliyookolewa:

Mipangilio ya maunzi ya kweli Dalili Ikiwa Imewekwa Visivyo kwenye Ubadilishaji VM Jinsi ya Kuamua Mpangilio Sahihi Bila Wazee .vmx / .vmcx
1. Njia ya Kuanzisha Firmware (UEFI / OVMF dhidi ya Legacy BIOS / SeaBIOS) Maonyesho ya VM "Operating System Not Found" au inashuka moja kwa moja kwenye Shell Interactive ya UEFI (Shell>) Kagua jedwali la kizigeu la diski halisi (fdisk -l au virt-filesystems -a disk.vmdk --partitions --long) Ikiwa diski ina 100 MB hadi 512 MB FAT32 EFI System Partition (ESP) na inatumia GPT meza ya kizigeu, LAZIMA uweke firmware ya VM kwa UEFI. Ikiwa diski inatumia MBR (dos) jedwali la kizigeu lisilo na kizigeu cha EFI, weka programu dhibiti kuwa BIOS ya Urithi.
2. Aina ya Kidhibiti cha Hifadhi ya Mtandaoni (VMware Paravirtual SCSI - PVSCSI dhidi ya LSI Logic SAS dhidi ya NVMe dhidi ya VirtIO SCSI) Windows hutupa a 0x0000007B / INACCESSIBLE_BOOT_DEVICE Skrini ya Bluu; Linux inaingia initramfs: /dev/mapper/root does not exist. Katika VMware ESXi, kagua maandishi-wazi .vmdk maelezo ya faili ya mstari ddb.adapterType = "lsilogic" au "buslogic" au angalia vmware.log ndani ya folda ya VM (grep -i "scsi0.virtualDev" vmware.log), ambayo huchapisha historia kamili .vmx kamusi kutoka kwa buti ya mwisho iliyofanikiwa.
3. Adapta ya Mtandao Pepe Anwani ya MAC & Dereva (VMXNET3 dhidi ya E1000e dhidi ya VirtIO-Net) Guest OS buti, lakini inapoteza anwani yake tuli ya IP au kufuli ya leseni kwa sababu inagundua kadi "mpya" ya mtandao (eth1 badala ya eth0) Tafuta ya zamani vmware.log ndani ya saraka ya hifadhidata ya VM (grep -i "ethernet0.generatedAddress" vmware.log) kurejesha anwani halisi ya MAC ya 6-baiti (00:50:56:xx:xx:xx) na ubandike kwenye uingizwaji wa mipangilio ya mtandao ya VM.
4. TPM pepe 2.0 (vTPM) & BitLocker / LUKS State Windows BitLocker inakuomba upate ufunguo wa kurejesha tarakimu 48 kwenye buti ikiwa .nvram / vTPM hali haipo. Katika VMware ESXi, hifadhi kila wakati <VM_Name>.nvram na .vmsd faili kando ya .vmdk faili; katika Hyper-V, hifadhi ya Virtual Machines\<GUID>.vmgs (Jimbo la Wageni) ili funguo pepe za TPM zibaki zimeunganishwa.

Maswali yanayoulizwa mara kwa mara

Ni nini hufanyika ikiwa nitaelekeza VM yangu kwenye msingi wa asili `.vmdk` au `.vhdx` faili na uiwashe ili kuona ni nini ndani?

KAMWE usifanye hivi bila kuweka nakala rudufu za faili kwanza, na USIWASHE diski ya msingi katika hali ya kusoma-kuandika wakati wa kupiga picha (`-000001.vmdk` au `.avhdx`) kuwepo. Kwanza, diski ya msingi iligandishwa siku na dakika kamili ambayo picha ya kwanza iliundwa, ikiwa picha imekuwa ikifanya kazi kwa muda wa miezi 6, kuanzisha diski ya msingi huanzisha seva yako kama ilivyokuwa miezi 6 iliyopita, ikikosa kila faili iliyoundwa katika nusu mwaka uliopita. Pili, na mbaya zaidi, mara tu mfumo wa uendeshaji wa mgeni unapotoka kwenye diski ya msingi, huandika kumbukumbu za boot na mabadiliko ya jarida kwenye diski ya msingi, kurekebisha sekta zake na kubadilisha Content ID yake (`CID`) au Kiongozo cha Kuunganisha. Hiyo inavunja kabisa ramani ya delta inayohitajika na vijipicha vyote vya mtoto wako.

Kwa nini hifadhidata yangu ya VMware ESXi inaonyesha `Server-000001.vmdk` kama kuwa na ukubwa kamili wa GB 500 kama `Server.vmdk` katika kivinjari?

Huu ni mwonekano mzuri wa Kivinjari cha Hifadhidata ya Mteja wa Wavuti wa VMware ESXi. Katika UI ya kivinjari cha wavuti, ESXi huficha msingi `-flat.vmdk`, `-delta.vmdk`, na `-sesparse.vmdk` faili za binary na kuonyesha *uwezo wa kimantiki uliotolewa* wa diski badala ya nafasi halisi inayotumiwa na faili ya delta. Ili kuona majina ya faili halisi, saizi halisi za baiti, na faili za maelezo ya maandishi, wezesha SSH kwenye mwenyeji wa ESXi, ingia kupitia terminal/PuTTY, nenda kwa `/vmfs/volumes///`, na kukimbia `ls -lh *.vmdk`.

Ninawezaje kuunganisha vijipicha vya VMware au Hyper-V wakati hifadhidata ya mwenyeji imejaa 100% (ka 0 bila malipo)?

Hifadhidata inapogonga baiti 0 bila malipo, mahali pa kawaida "Futa Picha / Unganisha Zote" haifaulu kwa sababu kuunganisha Kijisehemu 2 kwenye Snapshot 1 huongeza kwa muda ukubwa wa Snapshot 1 kabla ya Snapshot 2 kufutwa. Una njia tatu salama za kutoka: (1) Tafuta na ufute au uhamishe *faili* zingine* zisizo muhimu za ISO, faili za kumbukumbu za zamani, au VM za majaribio ya kuzimwa kwenye hifadhi hiyo hiyo ya data ili kutoa nafasi ya asilimia 15 hadi 20; (2) Ikiwa safu ya hifadhi ni SAN/NAS (iSCSI/NFS/FC), panua LUN na ukuze sauti ya VMFS/NTFS mtandaoni kwa GB 100; au (3) Ambatisha hifadhi ya nje ya USB au kushiriki NFS kwa seva pangishi na utumie `vmkfstools -i Server-000002.vmdk /vmfs/volumes/New_NFS_Share/Merged.vmdk` (au `qemu-img convert` / `Merge-VHD` kwa herufi nyingine ya kiendeshi) ili kuunganisha msururu *nje ya mahali* kwenye ujazo wa pili wa hifadhi kwa kutumia baiti sifuri za nafasi ya kuandika kwenye hifadhi kamili ya data.

Je, ninawezaje kuzuia programu mbadala kama vile Veeam, CommVault, au Nakivo kuacha "vijipicha vya mayatima" vilivyofichwa ambavyo hujaza seva yangu miezi kadhaa baadaye?

Programu rudufu huunda taswira ya muda ya hypervisor mwanzoni mwa kila kazi ya kuhifadhi nakala rudufu ya kila usiku ili waweze kusoma diski ya msingi iliyogandishwa, na kisha kuagiza ESXi au Hyper-V kufuta/kuunganisha picha hiyo wakati hifadhi rudufu inapokamilika. Wakati fulani, kuisha kwa muda wa kuhifadhi husababisha hatua ya uondoaji wa muhtasari kushindwa kimya kimya, na kuacha siri. `-000001.vmdk` au `.avhdx` kukua kwa miezi hadi kufikia asilimia 100 ya hifadhidata. Sanidi ulinzi mbili otomatiki: (1) Washa kengele iliyojengewa ndani ya vCenter / Hyper-V / Proxmox kwa `"Virtual Machine Snapshot Size > 20 GB or Age > 72 Hours"`, na (2) Ratibu ukaguzi wa kila wiki wa kusoma pekee wa PowerCLI au PowerShell (`Get-VM | Get-Snapshot` au `Get-ChildItem -Recurse -Filter *.avhdx`) ambayo hutuma barua pepe kwa timu yako ya msimamizi wakati wowote faili yoyote ya muhtasari wa zaidi ya siku 3 inapatikana kwenye hifadhi ya toleo la umma.

Vyanzo vimeangaliwa

  • VMware na Broadcom Technical Knowledge Base: KB 1007969 / 316578 (Kutatua "Diski pepe ya mzazi imerekebishwa tangu mtoto alipoundwa" CID Mismatch Errors), KB 1002511 (Kuunda Upya Kifafanuzi Kinachokosekana cha Diski ya Mashine .vmdk Faili), na KB 10051 (Kuelewa Vijisehemu vya Mashine Pepe katika ESXi).
  • Hati ya Uhandisi ya Microsoft Learn / Windows Server Hyper-V: Marejeleo ya Hyper-V PowerShell ya Get-VHD, Set-VHD -IgnoreIdMismatch, na Merge-VHD Ujumuishaji wa Diski ya Kutofautisha Nje ya Mtandao.
  • Hati ya Utendaji ya Mradi wa QEMU & Red Hat Enterprise Linux: Rasmi qemu-img Mwongozo (info --backing-chain, check -r all, rebase -u, convert) na libguestfs (guestmount --ro) Ukaguzi wa Disk Pekee wa Kusoma Pekee.
  • Hati ya Kiufundi ya Oracle VirtualBox: VBoxManage showmediuminfo na clonemedium Usanifu wa Picha Tofauti.
  • Taasisi ya Kitaifa ya Viwango na Teknolojia (NIST, Marekani): Chapisho Maalum la NIST 800-86: Mwongozo wa Kuunganisha Mbinu za Kiuchunguzi katika Majibu ya Tukio (Uhifadhi wa Picha kwenye Mashine Halisi).

Miongozo inayohusiana