Skip to content

Бұзылған виртуалды машинаның сурет тізбегі (.VMDK / .VHDX / .QCOW2) және дискіні құтқару

Төтенше нөмірлер елге қарай әр түрлі болады. Бұл бетте Америка Құрама Штаттары мен Канадаға арналған 911 нөмірі пайдаланылады. Көптеген басқа елдер 112, 999 немесе басқа сандарды пайдаланады. Еліңіздің нөмірін табыңыз.

VMware ESXi / Workstation, Microsoft Hyper-V, Proxmox VE / QEMU-KVM немесе Oracle VirtualBox жүйесіндегі өндірістік виртуалды машина (VM) сақтық көшірме тапсырмасы орындалмай қалғаннан кейін кенеттен қосудан бас тартса, деректер қоймасында диск кеңістігі бітеді (0 bytes free) немесе әкімші сурет файлын түртсе, үрейленген бір рет басу айлар немесе жылдардағы нақты бизнес деректерін жоя алады. Виртуалды машинаның суреті толық тәуелсіз сақтық көшірме емес; олар нәзік Жазуда көшіру (CoW) дельтасының айырмашылығы бар тізбектер (*-000001-delta.vmdk, *.avhdx, немесе қосалқы файл .qcow2 қабаттасмалар) мұнда сурет түсірілгеннен бері жазылған әрбір блок тек еншілес дельта файлдарының ішінде өмір сүреді, ал бастапқы негізгі диск бұрын қатып қалған.

сияқты қателерді көрсеңіз "The parent virtual disk has been modified since the child was created (Parent CID does not match)" VMware бағдарламасында, "Cannot boot: The chain of virtual hard disks is broken" Hyper-V немесе "Could not open backing file: L1/L2 table corrupted" QEMU/Proxmox ішінде, VM құрылғысын тікелей негізгі дискіге қайта бағыттау (flat.vmdk немесе негіз .vhdx) және оны жүктеу өлімге әкеледі. Бұл серверді бірінші сурет жасалғанда 6 ай бұрын болған күйінде жүктейді, криптографиялық ата-ана-бала GUID/CID сілтемесін лезде жарамсыз етеді және сол күннен бастап әрбір дельта суретін жетім және біріктіру мүмкін емес етіп көрсетеді.

Бұл нұсқаулықта Broadcom Knowledge Base мақалалары (KB 1007969 / 316578 және KB 1002511), Microsoft Hyper VMware негізіндегі VMware негізіндегі дескриптор-файл тақырыбын жөндеу және диапазоннан тыс қонақ файлдарын шығару хаттамалары қадамдық бұзылмайтын сурет тізбегін қалпына келтіруді қамтамасыз етеді. Merge-VHD және Set-VHD инженерлік сипаттамалар, QEMU qemu-img және libguestfs (guestmount) криминалистикалық стандарттар және NIST арнайы басылымы 800-86.

Мұны қазір жасаңыз

Виртуалды машина іске қосудан бас тартса немесе үзілген сурет тізбегін тастаса / бүлінген виртуалды диск қатесі:

  1. Негізгі дискіден тікелей жүктеу үшін VM параметрлерін ЕШҚАШАН өңдемеңіз (Server.vmdk немесе Server.vhdx) дельта суреттері (-000001.vmdk немесе .avhdx) қалтада бар. Қонақ операциялық жүйе негізгі ата-аналық дискіден тіпті 2 секундқа тікелей жүктелген кезде, қонақ ОЖ негізгі дискінің Content ID (Content ID) кодын өзгерте отырып, негізгі дискіге жүктеу уақыт белгілерін және NTFS/ext4 журналының жаңартуларын жазады.CID) VMware бағдарламасында немесе Linkage GUID / Timestamp Hyper-V жүйесінде. Бұл жалғыз жүктеу негізгі дискінің аздап қатып қалуына байланысты еншілес суреттердің бүкіл тізбегін үзеді. Сервер бөлмесінде белсенді өрт, салқындату ақауы немесе физикалық қауіп төніп тұрса, эвакуациялаңыз және жергілікті жедел қызмет нөміріне (АҚШ пен Канадада 911, Еуропалық Одақ бойынша 112, Ұлыбританияда 999) қоңырау шалыңыз немесе тексеріңіз. шұғыл нөмірлер.
  2. NEVER delete .avhdx, -delta.vmdk, немесе -sesparse.vmdk "дискілік кеңістікті босату" үшін Windows Explorer немесе ESXi Datastore шолғышындағы файлдар. Қалыпты уақытша файлдардан айырмашылығы, .avhdx және -delta.vmdk файлдар СІЗДІҢ ағымдағы тірі қатты диск МА. Егер сурет 8 ай бұрын тұрып қалған Veeam/CommVault сақтық көшірме тапсырмасы арқылы жасалып, жұмыс істемей қалса, соңғы 8 айда жасалған әрбір дерекқор транзакциясының, шот-фактураның және файлдың 100 пайызы сол файлдарда сақталады. .avhdx немесе -delta.vmdk файлдар. Оларды жою сурет басталғаннан бері жасалған барлық деректерді жояды.
  3. Барлығын көшіріңіз немесе клондаңыз .vmdk, .vhdx/.avhdx, немесе .qcow2 файлдарды сыртқы/қосымша сақтау көлеміне кез келген біріктіру, орындау немесе жөндеу пәрменін іске қоспас бұрын. Сурет тізбегін біріктіру барлық дельта блоктарын негізгі дискіге орнында кері жазады. Нашар диск секторының немесе деректер қоймасының толық қателігіне байланысты біріктіру жарты жолда орындалмаса, алдымен өңделмеген файл көшірмесін алмасаңыз, негізгі және еншілес дискілер бүлінген.
  4. Егер негізгі деректер қоймасы/көлемі 100% толуына байланысты гипервизор сәтсіз болса (No space left on device), Бос орын қоспайынша немесе үлкенірек деректер қоймасына клондамайынша ЕШҚАШАН "Лездік суреттерді жою/біріктіру" әрекетін орындамаңыз. Көп суретті тізбегін біріктіру үшін ең үлкен дельта дискінің өлшеміне тең уақытша сызу кеңістігі қажет. Attempting to consolidate on a 99% full datastore will crash the hypervisor mid-commit.
  5. Map the exact Parent -> Child dependency chain using read-only inspection commands (vmkfstools -e, Get-VHD, немесе qemu-img info --backing-chain) бір байтты түртпес бұрын. Әрбір сурет файлының тақырыбы дәл оның үстінде орналасады деп күтетін нақты ата-аналық файл атауын және ата-аналық криптографиялық идентификаторды нақты атайды.
flowchart TD
    A["VM жүктеуден бас тартады: үзілген сурет тізбегі, негізгі CID сәйкессіздігі немесе бүлінген VMDK/VHDX/QCOW2"] --> B["ТОҚТАТУ: негізгі дискіні тікелей жүктемеңіз және ешқандай -delta.vmdk немесе .avhdx файлдарын ЖОҚТАМАҢЫЗ."]
    B --> C["1-қадам: Хост деректер қоймасын / көлемінің бос кеңістігін тексеріңіз (`df -h` / `esxcli сақтау файлдарының тізімі`)"]
    C --> D["2-қадам: Өзгертуден бұрын барлық негізгі және сурет файлдарын қосымша сақтық көшірме NAS/SAN/USB дискісіне көшіріңіз"]
    D --> E{"Қандай гипервизор/виртуалды диск пішімі әсер етеді?"}
    E -->|"1. VMware ESXi / Жұмыс станциясы (.vmdk / -flat.vmdk / -delta.vmdk / -sesparse.vmdk)"| F["Мәтін дескрипторларын тексеру (`cat *.vmdk`) және тексеру тізбегін (`vmkfstools -e Server-000002.vmdk`)"]
    F --> G{"VMware VMDK қатесі неде?"}
    G -->|"Ата-ана CID сәйкессіздігі (`parentCID .= Ата-ананың CID`)"| H["`.vmdk` еншілес мәтін дескрипторын өңдеңіз, сонда `parentCID` ата-ананың `CID`-іне сәйкес келеді, НЕМЕСЕ белсенді жапырақ дискісін жаңа біріктірілген VMDK (`vmkfstools -i`) клондаңыз."]
    G -->|"1 КБ мәтін дескрипторы жоқ `.vmdk` (Тек үлкен `-flat.vmdk` бар)"| I["Нақты байт өлшемін / 512 секторды есептеңіз және `vmkfstools -c` көмегімен кәдімгі `.vmdk` дескрипторын қайта жасаңыз"]
    E -->|"2. Microsoft Hyper-V (.vhdx және .avhdx тізбегі)"| J["Тізбекті ең жаңа `.avhdx`-тен жоғары қарай тексеріңіз: `Get-VHD -Path *.avhdx | Select Path,ParentPath`"]
    J --> K["Бұзылған негізгі көрсеткішті қайта байланыстыру (`Set-VHD -Path child.avhdx -ParentPath parent.vhdx -IgnoreIdMismatch`) немесе офлайн біріктіру (`Merge-VHD`)"]
    E -->|"3. Proxmox / KVM / QEMU (.qcow2) немесе VirtualBox (.vdi)"| L["`qemu-img info --backing-chain` тексеру; жөндеу қайта есептеу/L2 кестелері (`qemu-img check -r all`) немесе rebase (`qemu-img rebase -u`)"]
    H --> M["Жолақтан тыс файлдарды қалпына келтіру: кез келген тізбекті тікелей оқу режимінде `guestmount --ro` немесе `7-Zip`/`UFS Explorer` арқылы орнатыңыз."]
    I --> M
    K --> M
    L --> M

Виртуалды машинаның сурет тізбегі қалай жұмыс істейтінін түсіну

VMware ESXi, Microsoft Hyper-V, Proxmox/KVM немесе VirtualBox бағдарламаларын іске қосасыз ба, әрбір гипервизор дәл сол іргелі архитектураны пайдалана отырып суреттерді жүзеге асырады: тек оқуға арналған ата-аналық дискілердің бір бағытты байланыстырылған тізімі және оқуға-жазуға арналған Child Leaf Delta Disk.

[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)
  • VM бүгін жаңа блокты жазғысы келгенде, ол ТЕК төменгі жапырақ файлына жазады (Snapshot 2).
  • VM бүгін блокты оққысы келгенде, гипервизор тексереді Snapshot 2 бірінші. Егер бұл блок 1 маусымнан бастап өзгертілсе, ол оны оқиды Snapshot 2. Олай болмаса, ол тізбекті қарайды Snapshot 1. Егер ол жерде де өзгертілмеген болса, ол бастапқы блокты оқиды Base Disk.
  • Тізбектер неге үзіледі: Әрбір еншілес сурет өз тақырыбында екі қатаң көрсеткішті сақтайды: (1) оның тікелей ата-анасының файл жолы және (2) 32-биттік мазмұн идентификаторы (CID VMware жүйесінде) немесе 128-биттік байланыс GUID (ParentUniqueId Hyper-V жүйесінде) ата-аналық диск жазу үшін ашылған сайын жаңартылады. Егер кез келген адам файлды жылжытса, қалтаны атын өзгертсе немесе ата-аналық дискіні оқу-жазу режимінде қысқа уақытқа орнатса, ата-ананың CID / GUID өзгереді және дыбыссыз блоктың бұзылуын болдырмау үшін гипервизор еншілес суретті орнатудан бірден бас тартады.
Гипервизор платформасы Негізгі диск файлдары Сурет / Delta файлдары Тізбекті тексеру CLI құралы Қауіпсіз біріктіру / біріктіру CLI құралы
VMware ESXi (VMFS-5 / VMFS-6) және жұмыс станциясы VM.vmdk (500 байт қарапайым мәтіндік дескриптор) + VM-flat.vmdk (шикі екілік дискінің деректері) VM-000001.vmdk (мәтін дескрипторы) + VM-000001-sesparse.vmdk (VMFS-6) немесе VM-000001-delta.vmdk (VMFS-5) vmkfstools -e VM-000002.vmdk және cat VM*.vmdk vmkfstools -i VM-000002.vmdk /vmfs/volumes/NewDS/Merged.vmdk (Бұзбайтын орынсыз клондау/біріктіру)
Microsoft Hyper-V (Windows Server) VM.vhdx (немесе мұра .vhd) VM_<GUID>.avhdx (немесе .avhd) PowerShell: Get-VHD -Path *.avhdx \ | Path, ParentPath, VhdType таңдаңыз PowerShell: Set-VHD -Path child.avhdx -ParentPath parent.vhdx және Merge-VHD -Path child.avhdx -DestinationPath parent.vhdx
Proxmox VE / QEMU / KVM (Linux) vm-100-disk-0.qcow2 (немесе өңделмеген LVM/ZFS көлемі) Сыртқы қабаттасу .qcow2 қосалқы файл тақырыбымен (немесе ішкі QCOW2 сурет кестесі) qemu-img info --backing-chain top_overlay.qcow2 qemu-img convert -O qcow2 top_overlay.qcow2 flattened_rescue.qcow2 (Ең қауіпсіз жерден тегістеу) немесе qemu-img commit
Oracle VirtualBox Disk.vdi (inside VM folder) {UUID}.vdi ішінде Snapshots/ ішкі қалта + .vbox XML медиа тізілімі VBoxManage showmediuminfo disk "{UUID}.vdi" VBoxManage clonemedium disk "{Newest_Snapshot_UUID}.vdi" Flattened_Rescue.vdi

1-трек: VMware ESXi және жұмыс станциясын құтқару .vmdk сурет тізбектері

VMware ESXi жүйесінде бір виртуалды диск шын мәнінде негізгі диск үшін екі бөлек файлдан және әрбір сурет үшін екі бөлек файлдан тұрады: 1. Кішкентай (-500-байт) қарапайым мәтіндік дескриптор файлы (Server.vmdk және Server-000001.vmdk) ұстайтын CID, parentCID, дискінің геометриясы және екілік ауқымның нақты файл атауы. (Ескертпе: ESXi Datastore шолғышының веб-графикалық интерфейсі жұптастырылған деректерді жасырады -flat.vmdk және -sesparse.vmdk екілік файлдар және тек бір біріктірілген белгішені көрсетеді, шынайы файлдарды көру үшін ESXi хостында SSH терминал сеансын пайдалану КЕРЕК). 2. Көп гигабайтты екілік деректер ауқымы файлы (Server-flat.vmdk негізгі диск үшін және Server-000001-sesparse.vmdk немесе Server-000001-delta.vmdk әрбір сурет үшін).

1А сценарийі: Түзету "The parent virtual disk has been modified since the child was created (Parent CID mismatch)"

  1. SSH ESXi хостына және VM деректер қоймасының каталогына өтіңіз:
    cd /vmfs/volumes/<Datastore_Name>/<VM_Folder_Name>/
    ls -la *.vmdk
    
  2. ** басып шығарыңыз CID, parentCID, және parentFileNameHint барлық мәтін дескрипторында .vmdk файлдар бірден:** (Important: Only run cat немесе grep 500 байт шағын мәтін дескрипторында .vmdk файлдар, көп гигабайтта ЕМЕС -flat.vmdk немесе -sesparse.vmdk files).
    grep -E "CID|parentFileNameHint|Extent description" -A 2 Server.vmdk Server-00000*.vmdk
    
  3. ** Салыстырыңыз CID әр ата-ана қарсы parentCID оның жақын баласы:** Шығуға қараңыз:
    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. Бұзылған жерді түзетіңіз parentCID еншілес дескрипторда және көмегімен тексеріңіз vmkfstools -e:
  5. Алдымен, мәтіндік дескриптор файлдарының сақтық көшірмесін жасаңыз (cp Server-000001.vmdk Server-000001.vmdk.bak).
  6. Ашық Server-000001.vmdk жылы vi және өзгерту parentCID=55443322 дейін parentCID=1a2b3c4d (сәйкес Server.vmdkның ағымы CID).
  7. Тізбектің тұтастығын ең жаңа (ең жоғары нөмірлі) сурет арқылы тексеріңіз. vmkfstools -e:
    vmkfstools -e Server-000002.vmdk
    
  8. Тізбек бүтін болса, ESXi мыналарды шығарады: Disk chain is consistent.
  9. БҰЗЫЛМАЙТЫН КОНСОЛИДАЦИЯ (vmkfstools -i Орнынан тыс клон):
  10. Егер Server.vmdk түзетпес бұрын сәл өзгертілді parentCID, жалғыз көшірмеңіздің үстінен орнында біріктірмеңіз. Оның орнына нүкте қойыңыз vmkfstools -i жаңа жапырақ суретінде (Server-000002.vmdk) және бос орыны бар деректер қоймасында бүкіл тізбекті мүлдем жаңа, жалғыз тегістелген VMDK клондаңыз:
    vmkfstools -i Server-000002.vmdk /vmfs/volumes/<Target_Datastore>/Server_Rescue/Server_Merged.vmdk -d thin
    
  11. vmkfstools -i reads every block from Server-000002.vmdk арқылы төмен Server-000001.vmdk және Server-flat.vmdk қатаң Тек оқу режимінде және таза, суретсіз жазады Server_Merged.vmdk бастапқы файлдарға қол тигізбестен.

1В сценарийі: жетіспейтін немесе жойылған 500 байтты қайта жасау .vmdk text descriptor when Server-flat.vmdk әлі де бүтін

Кейде әкімші немесе бұзылған сценарий жойылады Server.vmdk (немесе ол бүлінген 0 bytes), деректер қоймасының шолғышы виртуалды дискіні көрсетуді тоқтатады, тіпті үлкен 500 гигабайт болса да Server-flat.vmdk нақты деректеріңіздің 100 пайызын қамтитын файл әлі де SSH ішінде сақталады (ls -la *-flat.vmdk).

Сіз жетіспейтін қарапайым мәтінді қайта жасай аласыз Server.vmdk дескриптор файлын 60 секунд ішінде ішіндегі бір байтты жоғалтпай 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)

1С сценарийі: Құлыпты ашу a .vmdk ілулі тұрған ESXi хостымен құлыпталған немесе бұзылған сақтық көшірме проксиі (Cannot open the disk: Failed to lock the file)

VM қосудан бас тартса Failed to lock the file немесе Cannot open disk: Resource busy, кластердегі басқа ESXi хосты (немесе сақтық көшірме жасау кезінде бұзылған Veeam/backup HotAdd құрылғысы) әлі де SCSI/VMFS файл құлпын қосулы ұстайды. -flat.vmdk немесе -sesparse.vmdk: 1. Бұзылған сақтық көшірме прокси VM-де әлі де өндірістік VM бар-жоғын тексеріңіз .vmdk оның виртуалды SCSI контроллеріне тіркелген: Veeam/CommVault прокси VM параметрлерін өңдеңіз және кез келген ескірген тіркелген өндірістік дискілерді жойыңыз («Виртуалды машинадан жою», ЕШҚАШАН «Деректер қоймасынан файлдарды жою» тармағын таңдаңыз). 2. Қандай ESXi хостының MAC мекенжайы мен әлемдік процесс VMFS құлпын ұстайтынын табыңыз:

vmfsfilelockinfo -p /vmfs/volumes/<Datastore>/<VM_Folder>/Server-flat.vmdk
SSH құлыпты ұстап тұрған арнайы ESXi хостына, ілулі тұрғанды табыңыз vmx дүние идентификаторы (esxcli vm process list) және ілулі әлемді тоқтатыңыз (esxcli vm process kill --type=force --world-id=<WorldID>).

2-трек: Microsoft Hyper-V-ді құтқару .vhdx және .avhdx сурет тізбектері

Microsoft Hyper-V жүйесінде әрбір бақылау нүктесі (сурет) кеңейтімі бар ерекше виртуалды қатты дискіні жасайды .avhdx (немесе .avhd ескі VHD пішімінде) сияқты ұзын GUID файл атауы тағайындалды ProdSQL_A1B2C3D4-E5F6-7890-ABCD-1234567890AB.avhdx.

1-қадам: Нақты хронологиялық картаға түсіріңіз .avhdx PowerShell бағдарламасындағы ата-аналық ағаш

Hyper-V Manager ішіндегі кез келген нәрсені біріктірмес немесе қайта байланыстырмас бұрын, Hyper-V хостында Elevated Administrator PowerShell терезесін ашыңыз, қалтаға өтіңіз. .vhdx және .avhdx файлдарды ашыңыз және ең жаңадан ең ескісіне дейін дәл ата-ана-бала тізбегін көрсету үшін осы бір сызықты іске қосыңыз:

# 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

Қараңыз Path және ParentPath өрістер. Олар нақты тізбек тәртібін ашады: - ProdSQL.vhdx -> ParentPath: (blank) (Түбірлік базалық диск, ең ескі) - ProdSQL_1111.avhdx -> ParentPath: D:\VMs\ProdSQL.vhdx (1-бала) - ProdSQL_2222.avhdx -> ParentPath: D:\VMs\ProdSQL_1111.avhdx (Child 2) - ProdSQL_3333.avhdx -> ParentPath: D:\VMs\ProdSQL_2222.avhdx (Ең жаңа белсенді жапырақ дискісі)

2-қадам: түзету "The chain of virtual hard disks is broken" немесе "Differencing disk parent ID mismatch" (Set-VHD -IgnoreIdMismatch)

Егер біреу VM қалтасын көшірсе ше? C:\VMs\ дейін E:\VMs\, немесе кездейсоқ жүктелді ProdSQL.vhdx 5 секундқа, тудырады ProdSQL_1111.avhdx сәтсіздікке ұшырау: The chain of virtual hard disks is broken. The system cannot locate the parent virtual hard disk for the differencing disk немесе There is a mismatch in the virtual disk identifiers?

Ресми Hyper-V PowerShell командлетін пайдаланыңыз Set-VHD бар -IgnoreIdMismatch жалауша (алдымен файлдардың сақтық көшірмесін жасағаннан кейін):

# 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

3-қадам: Жетімді қолмен біріктіру .avhdx ЖАҢАдан ЕҢ ЕСКЕ дейінгі тізбек (Merge-VHD)

Резервтік агент 15 адамды жетім қалдырғанда .avhdx қалтаңыздағы Hyper-V Manager GUI "тексеру нүктелері" тармағында енді көрсетілмейтін файлдар болса, ** виртуалды құрылғы ӨШІРУЛІ болған кезде оларды PowerShell бағдарламасында қолмен біріктіру керек**.

Danger

** Hyper-V темір ережесі .avhdx Біріктіру:** Сіз Əрдайым NEWEST (ең жас жапырақ) ішінен қосылуыңыз керек. .avhdx оның тікелей ата-анасына, тек негізге дейін тізбекті біртіндеп артқа қарай жылжытыңыз .vhdx қалады. For example, in a chain Base.vhdx <- Child1.avhdx <- Child2.avhdx <- Child3_Newest.avhdx: 1. Біріктіру Child3_Newest.avhdx -> ішіне Child2.avhdx. 2. Біріктіру Child2.avhdx -> ішіне Child1.avhdx. 3. Біріктіру Child1.avhdx -> ішіне Base.vhdx. 4. Point the VM settings at Base.vhdx және жүктеу.

Осы нақты PowerShell пәрмендерін қалтаның жұмыс көшірмесінде іске қосыңыз:

# 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"

3-трек: Proxmox VE / QEMU / KVM құтқару .qcow2 and VirtualBox .vdi chains

1. Бүлінген QCOW2 L1/L2 кластері және қайта есептеу кестелерін тексеру және жөндеу (qemu-img check)

Linux KVM немесе Proxmox хосты батареямен қамтамасыз етілген кэшсіз кенеттен қуат сөніп қалса, .qcow2 виртуалды диск жиі жүктелмейді qcow2: Marking image as corrupt: L2 table offset unaligned немесе Refcount block corrupted. 1. Алдымен көшіріңіз .qcow2 файл (cp vm-100-disk-0.qcow2 vm-100-disk-0.qcow2.bak). 2. Артқы тізбекті және ішкі сурет тізімін тексеру:

qemu-img info --backing-chain vm-100-disk-0.qcow2
qemu-img snapshot -l vm-100-disk-0.qcow2
3. Жұмыс көшірмесіндегі ағып кеткен кластерлерді және бүлінген қайта санау кестелерін жөндеңіз:
qemu-img check -r all vm-100-disk-0.qcow2

2. Бұзылған QCOW2 сақтық файл жолын түзету (qemu-img rebase -u)

Сыртқы QCOW2 суреті болса (overlay.qcow2) ашылмайды, себебі оның негізгі қосалқы файлы (base.qcow2) жаңа каталогқа немесе сақтау пулына жылжытылған болса, қосалқы файл көрсеткішін қауіпті күйде жаңартыңыз (-u, тек тақырып) режимі деректер блоктарын қайта жазусыз:

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

3. Нәзік QCOW2 немесе VMDK немесе VHDX тізбегін мүлдем жаңа дербес кескінге тегістеу (qemu-img convert)

Виртуалды машинаны құтқарудағы ең әмбебап құралдардың бірі qemu-img convert (негізінен оқиды .qcow2, .vmdk, .vhdx, .vhd, және .vdi). Сіз нұсқаған кезде qemu-img convert жарамды тізбектің ең жаңа жапырақ суретінде ол қатаң тек оқу режимінде барлық ата-ана мен бала иерархиясын оқиды және құтқару жадыңызға мүлдем жаңа, дербес, суретсіз виртуалды дискіні жазады:

# 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

4-трек: жолақтан тыс файлдарды құтқару (VM әлі жүктелмейтін кезде файлдарды шығару)

Виртуалды дискідегі қонақ операциялық жүйесі жүктелмейтін болса немесе тізбектегі ортаңғы сурет ішінара зақымдалған болса және SQL дерекқорларын шығарып алу қажет болса ше (.mdf/.ldf), QuickBooks файлдары, /var/lib/mysql, немесе келесі 30 минут ішінде компания құжаттары?

Виртуалды қатты дискідегі файлдарды шығару үшін Виртуалды машинаны жүктеудің қажеті жоқ. Осы үш бұзбайтын диапазоннан тыс орнату құралдарының кез келгенін пайдаланыңыз:

1-әдіс: кез келгенін орнатыңыз .vmdk, .vhdx, .qcow2, немесе .vdi пайдалану Linux жүйесінде тек оқу режимінде libguestfs (guestmount / qemu-nbd)

Орнату libguestfs-tools (sudo apt install libguestfs-tools qemu-utils Ubuntu/Debian/Proxmox жүйесінде) және ең жаңа жапырақ суретін қатаң Тек оқуға арналған режимде орнатыңыз (--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

2-әдіс: Windows жүйесінде тек оқуға арналған жылдам шығару 7-Zip немесе Disk Management -> Attach VHD (Read-Only)

  • 7-Zip пайдалану (жұмыс істейді .vmdk, .vhdx, .vhd, .qcow2, және .vdi): Оқшау немесе тегістеуді тінтуірдің оң жақ түймешігімен басыңыз .vmdk, .vhdx, немесе .qcow2 file on Windows and select 7-Zip -> Open Archive. 7-Zip бағдарламасы виртуалды дискілердегі GPT/MBR бөлім кестелерін және NTFS/ext4 файлдық жүйелерін 100% тек оқуға арналған режимде талдайды, бұл қонақ қалталарды бірнеше секунд ішінде жұмыс үстеліне тікелей апарып тастауға мүмкіндік береді.
  • Windows дискіні басқару құралын пайдалану (үшін .vhdx / .avhdx): Ашық diskmgmt.msc -> Әрекет -> VHD тіркеу -> ең жаңа параққа өтіңіз .avhdx (немесе .vhdx), ҚОРШАҒАН БЕЛГІЛІҢІЗ [X] Read-only (КРИТИКАЛЫҚ: Тек оқуға арналған құсбелгіні қоюды ешқашан ұмытпаңыз, әйтпесе Windows диск тақырыбын өзгертеді) және OK түймесін басыңыз. VM компьютеріңіздің C: және D: дискілері Windows File Explorer шолғышында бірден пайда болады.

3-әдіс: Қатты зақымдалған тізбектерді қалпына келтіру UFS Explorer Professional Recovery

VMDK немесе VHDX тізбегіндегі ата-аналық диск кездейсоқ жүктелсе және өзгертілсе немесе VMFS/NTFS деректер қоймасының бүлінуі файлдың бір бөлігін кесіп тастаса. -sesparse.vmdk немесе .avhdx файлды гипервизор құралдары қабылдамайды, UFS Explorer Professional Recovery (немесе R-Studio Technician) шикі негізгі дискіні және әрбір еншілес дельта кескінін гипервизорды айналып өтіп, бағдарламалық жедел жадтағы пайдаланушы Виртуалды Delta Stack ішіне қолмен жинауға мүмкіндік береді. CID/GUID тақырыбы бұзылмаған қонақ файлдарын кесу және шығару үшін тексереді.

5-трек: жетім VM конфигурация файлын қалпына келтіру (.vmx, .xml, немесе <vmid>.conf)

Кейде виртуалды қатты диск тізбегінің өзі (*.vmdk, *.vhdx, немесе *.qcow2) сақтау массивінде 100 пайыз бұзылмаған, бірақ Виртуалды машинаның аппараттық орналасуын анықтайтын шағын конфигурация файлы (.vmx VMware ESXi жүйесінде, <GUID>.vmcx / .xml Hyper-V немесе /etc/pve/qemu-server/<vmid>.conf Proxmox VE ішінде) зақымдалған, кездейсоқ жойылған немесе хосттың бұзылуы кезінде нөлге теңестірілген.

Ауыстырылатын VM қабықшасын дұрыс емес виртуалды сақтау контроллері немесе микробағдарлама режимі арқылы қайта жасасаңыз, қонақ операциялық жүйесі жүктелген кезде бірден бұзылады. INACCESSIBLE_BOOT_DEVICE (Windows) немесе a ішіне тастаңыз dracut / initramfs апаттық қабық (Linux). Құтқарылған виртуалды дискіні тіркемес бұрын, осы төрт аппараттық құрал параметрін бастапқы қонақ конфигурациясына сәйкестендіріңіз:

Виртуалды жабдықты орнату Белгі Ауыстыру VM-де қате орнатылған болса Ескісіз дұрыс параметрді қалай анықтауға болады .vmx / .vmcx
1. Микробағдарламаны жүктеу режимі (UEFI / OVMF қарсы Legacy BIOS / SeaBIOS) VM көрсетеді "Operating System Not Found" немесе тікелей UEFI интерактивті қабығына түседі (Shell>). Виртуалды дискінің бөлімдер кестесін тексеріңіз (fdisk -l немесе virt-filesystems -a disk.vmdk --partitions --long). Дискіде 100 МБ-тан 512 Мбайтқа дейінгі FAT32 EFI жүйелік бөлімі (ESP) болса және GPT бөлімдер кестесін пайдаланса, VM микробағдарламасын UEFI күйіне орнату КЕРЕК. Егер диск EFI бөлімі жоқ MBR (dos) бөлім кестесін пайдаланса, микробағдарламаны Legacy BIOS күйіне орнатыңыз.
2. Виртуалды жад контроллерінің түрі (VMware Paravirtual SCSI - PVSCSI қарсы LSI Logic SAS қарсы NVMe қарсы VirtIO SCSI) Windows лақтырады 0x0000007B / INACCESSIBLE_BOOT_DEVICE Көк экран; Linux кіреді initramfs: /dev/mapper/root does not exist. VMware ESXi жүйесінде қарапайым мәтінді тексеріңіз .vmdk жолға арналған дескриптор файлы ddb.adapterType = "lsilogic" немесе "buslogic" немесе тексеріңіз vmware.log VM қалтасының ішінде (grep -i "scsi0.virtualDev" vmware.log), ол нақты тарихи ақпаратты басып шығарады .vmx соңғы сәтті жүктеуден алынған сөздік.
3. Виртуалды желі адаптерінің MAC мекенжайы және драйвері (VMXNET3 қарсы E1000e қарсы VirtIO-Net) Қонақ ОЖ жүктеледі, бірақ статикалық IP мекенжайын немесе лицензиялау құлпын жоғалтады, себебі ол «жаңа» желі картасын анықтайды (eth1 орнына eth0). Ескісін ізде vmware.log VM деректер қоймасының каталогында (grep -i "ethernet0.generatedAddress" vmware.log) нақты 6 байттық MAC мекенжайын қалпына келтіру үшін (00:50:56:xx:xx:xx) және оны ауыстыру VM желі параметрлеріне қойыңыз.
4. Виртуалды TPM 2.0 (vTPM) & BitLocker / LUKS күйі Windows BitLocker жүйесі жүктелген кезде 48 санды қалпына келтіру кілтін сұрайды .nvram / vTPM күй жоқ. VMware ESXi жүйесінде әрқашан ** сақтаңыз.<VM_Name>.nvram** және .vmsd файлдармен қатар .vmdk файлдар; Hyper-V жүйесінде сақтаңыз Virtual Machines\<GUID>.vmgs (Қонақ күйі) файлы, осылайша виртуалды TPM кілттері байланыстырылған.

Жиі қойылатын сұрақтар

Егер мен VM-ді бастапқы негізге қайтарсам не болады `.vmdk` немесе `.vhdx` ішінде не бар екенін көру үшін файлды жүктеңіз бе?

Алдымен файлдардың сақтық көшірмесін жасамай ЕШҚАШАН мұны істемеңіз және суреттер түсірілген кезде ЕШҚАШАН негізгі дискіні оқу-жазу режимінде жүктемеңіз (`-000001.vmdk` немесе `.avhdx`) бар. Біріншіден, негізгі диск алғашқы сурет жасалған күн мен минутта қатып қалды, егер сурет 6 ай бойы жұмыс істеп тұрса, негізгі дискіні жүктеу серверді 6 ай бұрын болған күйінде жүктейді, соңғы жарты жылда жасалған әрбір файл жоқ. Екіншіден, одан да жаманы, қонақ операциялық жүйесі негізгі дискіден жүктелген сәтте ол жүктеу журналдары мен журналдық өзгерістерді негізгі дискіге жазады, секторларын өзгертеді және Content ID (Content ID) өзгертеді (`CID`) немесе GUID байланыстыру. Бұл сіздің барлық балаңыздың суреттеріне қажет дельта блок картасын біржола бұзады.

Неліктен менің VMware ESXi деректер қоймасы көрсетіледі? `Server-000001.vmdk` сияқты толық 500 ГБ өлшемі бар `Server.vmdk` веб-шолғышта?

Бұл VMware ESXi Web Client Datastore шолғышының дисплей ерекшелігі. Веб-шолғыш интерфейсінде ESXi негізгі ақпаратты жасырады `-flat.vmdk`, `-delta.vmdk`, және `-sesparse.vmdk` екілік файлдар және дельта файлы тұтынатын нақты физикалық кеңістіктен гөрі дискінің *қамтамасыз етілген логикалық сыйымдылығын* көрсетеді. Шынайы физикалық файл атауларын, нақты байт өлшемдерін және мәтіндік дескриптор файлдарын көру үшін ESXi хостында SSH қосыңыз, Terminal/PuTTY арқылы жүйеге кіріңіз, өтіңіз. `/vmfs/volumes///`, және жүгіріңіз `ls -lh *.vmdk`.

Хост деректер қоймасы 100% толы (0 байт бос) кезде VMware немесе Hyper-V суретін қалай біріктіруге болады?

Деректер қоймасы 0 байт бос орынға жеткенде, қалыпты "Барлық суреттерді жою / біріктіру" орындалмайды, себебі 2 суретін 1 суретке біріктіру 2 суретін жоюға дейін 1 суреттің өлшемін уақытша үлкейтеді. Шығудың үш қауіпсіз жолы бар: (1) 15-20 пайыздық бос орынды босату үшін сол деректер қоймасынан *басқа* маңызды емес ISO файлдарын, ескі журнал файлдарын немесе өшірілген сынақ VM құрылғыларын табу және жою немесе жылжыту; (2) Егер сақтау массиві SAN/NAS (iSCSI/NFS/FC) болса, LUN кеңейтіңіз және VMFS/NTFS көлемін желіде 100 ГБ-қа арттырыңыз; немесе (3) Хостқа сыртқы USB дискісін немесе NFS ортақтасын жалғап, пайдаланыңыз `vmkfstools -i Server-000002.vmdk /vmfs/volumes/New_NFS_Share/Merged.vmdk` (немесе `qemu-img convert` / `Merge-VHD` басқа диск әрпіне) толық деректер қоймасында нөлдік байт жазу кеңістігін пайдаланып екінші сақтау көлеміне *орнынан тыс* тізбекті біріктіру.

Veeam, CommVault немесе Nakivo сияқты сақтық көшірме бағдарламалық құралының серверімді бірнеше айдан кейін толтыратын жасырын «жетім суреттерді» қалдыруын қалай болдырмауға болады?

Сақтық көшірме қолданбалары әрбір түнгі сақтық көшірме тапсырмасының басында уақытша гипервизор суретін жасайды, осылайша олар мұздатылған негізгі дискіні оқи алады, содан кейін ESXi немесе Hyper-V жүйесіне сақтық көшірме аяқталған кезде сол суретті жою/біріктіруді тапсырады. Кейде сақтау күту уақыты суретті жою қадамының жасырын қалдырып, дыбыссыз сәтсіз аяқталуына әкеледі. `-000001.vmdk` немесе `.avhdx` деректер қоймасының 100 пайызына жеткенше айлар бойы өседі. Екі автоматтандырылған қорғанысты орнатыңыз: (1) Кірістірілген vCenter / Hyper-V / Proxmox дабылын қосыңыз. `"Virtual Machine Snapshot Size > 20 GB or Age > 72 Hours"`, және (2) апта сайынғы тек оқуға арналған PowerCLI немесе PowerShell аудитін жоспарлау (`Get-VM | Get-Snapshot` немесе `Get-ChildItem -Recurse -Filter *.avhdx`) ол өндіріс қоймасында 3 күннен асқан кез келген сурет файлы болған кезде әкімші тобына электрондық хат жібереді.

Дереккөздер тексерілді

  • Broadcom Technical Knowledge Base ұсынған VMware: KB 1007969 / 316578 («Ата-аналық виртуалды диск бала жасалғаннан бері өзгертілді» CID сәйкес келмеу қателерін шешу), ​​KB 1002511 (Жоғалған виртуалды машина дискісінің дескрипторын қайта жасау) .vmdk Файл) және KB 10051 (ESXi жүйесіндегі виртуалды машина суреттерін түсіну).
  • Microsoft Learn / Windows Server Hyper-V инженерлік құжаттамасы: * Hyper-V PowerShell сілтемесі Get-VHD, Set-VHD -IgnoreIdMismatch, және Merge-VHD Офлайн дифференциалды дискіні біріктіру*.
  • QEMU Project & Red Hat Enterprise Linux виртуалдандыру құжаттамасы: Ресми qemu-img Қолмен (info --backing-chain, check -r all, rebase -u, convert) және libguestfs (guestmount --ro) Тек оқуға арналған виртуалды дискіні тексеру.
  • Oracle VirtualBox техникалық құжаттамасы: VBoxManage showmediuminfo және clonemedium Дифференциалды кескін архитектурасы.
  • Ұлттық стандарттар және технологиялар институты (NIST, Америка Құрама Штаттары): NIST арнайы басылымы 800-86: Оқиғаға жауап беру (виртуалды машина кескінін сақтау) үшін сот сараптамалық әдістерін біріктіру бойынша нұсқаулық.

Қатысты нұсқаулықтар