ืึทืœื’ืขืžื™ื™ื ืข ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืคื•ืŸ QEMU-KVM

ืึทืœื’ืขืžื™ื™ื ืข ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืคื•ืŸ QEMU-KVM

ืžื™ื™ืŸ ื™ืขืฆื˜ื™ื’ืข ืคืืจืฉื˜ืื ื“:

1 ) KVM

KVM (ืงืขืจื ืขืœ-ื‘ืื–ื™ืจื˜ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ) ืื™ื– ืึท ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ (VMM - ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืžืึทื ืึทื’ืขืจ) ืคืœื™ืกื ื“ื™ืง ื•ื•ื™ ืึท ืžืึธื“ื•ืœืข ืื•ื™ืฃ ืœื™ื ื•ืงืก ืึทืก. ื ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ ืื™ื– ื“ืืจืฃ ืฆื• ืœื•ื™ืคืŸ ืขื˜ืœืขื›ืข ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืื™ืŸ ืึท ื ื™ื˜-ืขื’ื–ื™ืกื˜ืึทื ื˜ (ื•ื•ื™ืจื˜ื•ืึทืœ) ืกื•ื•ื™ื•ื•ืข ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ื‘ืึทื”ืึทืœื˜ืŸ ืคื•ืŸ ื“ืขื ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื“ื™ ืคืึทืงื˜ื™ืฉ ื’ืฉืžื™ื•ืช ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืื•ื™ืฃ ื•ื•ืึธืก ื“ื™ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืœื•ื™ืคื˜. ื“ื™ ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ ืึทืงืขืจื– ื•ื•ื™ ืึท "ืกืคึผื™ื™ืกืขืจ" ืฆื•ื•ื™ืฉืŸ ื“ื™ ื’ืฉืžื™ื•ืช ื™ื™ึทื–ื ื•ื•ืึทืจื’ (ื‘ืึทืœืขื‘ืึธืก) ืื•ืŸ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืึทืก (ื’ืึทืกื˜).

ื–ื™ื ื˜ KVM ืื™ื– ืึท ื ืึธืจืžืึทืœ ืžืึธื“ื•ืœืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ, ืขืก ื ืขืžื˜ ืึทืœืข ื“ื™ ืคืืจืœืื ื’ื˜ ื’ื•ื“ื™ื– ืคื•ืŸ ื“ื™ ืงืขืจืŸ (ื–ื™ืงืึธืจืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’, ืกืงืขื“ื–ืฉื•ืœืขืจ, ืืื–"ื• ื•). ืื•ืŸ ืึทืงืึธืจื“ื™ื ื’ืœื™, ืื™ืŸ ื“ื™ ืกื•ืฃ, ืึทืœืข ื“ื™ ื‘ืขื ืขืคื™ืฅ ื’ื™ื™ืŸ ืฆื• ื“ื™ ื’ืขืกื˜ (ื–ื™ื ื˜ ื“ื™ ื’ืขืกื˜ ืึทืจื‘ืขื˜ ืื•ื™ืฃ ืึท ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ ื•ื•ืึธืก ืœื•ื™ืคื˜ ืื•ื™ืฃ / ืื™ืŸ ื“ื™ ืœื™ื ื•ืงืก ืึทืก ืงืขืจืŸ).

KVM ืื™ื– ื–ื™ื™ืขืจ ืฉื ืขืœ, ืึธื‘ืขืจ ืื™ืŸ ื–ื™ืš ืขืก ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’ ืฆื• ืœื•ื™ืคืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืึทืก, ื•ื•ื™ื™ึทืœ ... ื“ืึธืก ืจื™ืงื•ื•ื™ื™ืขืจื– I/O ืขืžื™ืึทืœื™ื™ืฉืึทืŸ. ืคึฟืึทืจ I/O (ืงืคึผื•, ื“ื™ืกืงืก, ื ืขืฅ, ื•ื•ื™ื“ืขื, ืคึผืกื™, ื•ืกื‘, ืกื™ืจื™ืึทืœ ืคึผืึธืจืฅ, ืืื–"ื• ื•) KVM ื ื™ืฆื˜ QEMU.

2) ืงืขืžื•

QEMU (Quick Emulator) ืื™ื– ืึทืŸ ืขืžื•ืœืึทื˜ืึธืจ ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ื“ืขื•ื•ื™ืกืขืก ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื•ื™ืคืŸ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขืžืขืŸ ื“ื™ื–ื™ื™ื ื“ ืคึฟืึทืจ ืื™ื™ืŸ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื•ื™ืฃ ืืŸ ืื ื“ืขืจ (ืœืžืฉืœ, ARM -> x86). ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืคึผืจืึทืกืขืกืขืจ, QEMU ืขืžื™ืึทืœื™ื™ืฅ ืคืึทืจืฉื™ื“ืŸ ืคึผืขืจื™ืคืขืจืึทืœ ื“ืขื•ื•ื™ืกืขืก: ื ืขืฅ ืงืึทืจื“ืก, ื”ื“ื“, ื•ื•ื™ื“ืขื ืงืึทืจื“ืก, ืคึผืกื™, ื•ืกื‘, ืขื˜ืง.

ืขืก ืึทืจื‘ืขื˜ ื•ื•ื™ ื“ืึธืก:

ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก / ื‘ื™ื™ื ืขืจื™ ืงืึธื“ (ืœืžืฉืœ, ARM) ื–ืขื ืขืŸ ืงืึธื ื•ื•ืขืจื˜ืขื“ ืื™ืŸ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืคึผืœืึทื˜ืคืึธืจืžืข-ืคืจื™ื™ึท ืงืึธื“ ื ื™ืฆืŸ ื“ื™ TCG (Tiny Code Generator) ืงืึทื ื•ื•ืขืจื˜ืขืจ ืื•ืŸ ื“ืขืจ ืคึผืœืึทื˜ืคืึธืจืžืข-ืคืจื™ื™ึท ื‘ื™ื™ื ืขืจื™ ืงืึธื“ ืื™ื– ืงืึธื ื•ื•ืขืจื˜ืขื“ ืื™ืŸ ืฆื™ืœ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก / ืงืึธื“ (ืœืžืฉืœ, ืงืก 86).

ืึธืจืขื -> ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜_ืงืึธื“ืข -> ืงืก86

ื™ืกืขื ืฉืึทืœื™, ืื™ืจ ืงืขื ืขืŸ ืœื•ื™ืคืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืื•ื™ืฃ QEMU ืื•ื™ืฃ ืงื™ื™ืŸ ื‘ืึทืœืขื‘ืึธืก, ืืคื™ืœื• ืžื™ื˜ ืขืœื˜ืขืจืข ืคึผืจืึทืกืขืกืขืจ ืžืึธื“ืขืœืก ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ืฉื˜ื™ืฆืŸ Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). ืึธื‘ืขืจ, ืื™ืŸ ื“ืขื ืคืึทืœ, ืขืก ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ื–ื™ื™ืขืจ ืกืœืึธื•ืœื™, ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ื“ื™ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ื‘ื™ื™ื ืขืจื™ ืงืึธื“ ื“ืึทืจืฃ ื–ื™ื™ืŸ ืจื™ืงืึธืžืคึผื™ื™ืœื“ ืื•ื™ืฃ ื“ื™ ืคืœื™ืขืŸ ืฆื•ื•ื™ื™ ืžืึธืœ, ื ื™ืฆืŸ TCG (TCG ืื™ื– ืึท ืคึผื•ื ืงื˜-ืื™ืŸ-ืฆื™ื™ื˜ ืงืึทืžืคึผื™ื™ืœืขืจ).

ื™ืขื ืข. QEMU ื–ื™ืš ืื™ื– ืžืขื’ืึท ืงื™ืœ, ืึธื‘ืขืจ ืขืก ืึทืจื‘ืขื˜ ื–ื™ื™ืขืจ ืกืœืึธื•ืœื™.

3) ืฉื•ืฅ ืจื™ื ื’ืก

ืึทืœื’ืขืžื™ื™ื ืข ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืคื•ืŸ QEMU-KVM

ื‘ื™ื™ื ืขืจื™ ืคึผืจืึธื’ืจืึทื ืงืึธื“ ืื•ื™ืฃ ืคึผืจืึทืกืขืกืขืจื– ืึทืจื‘ืขื˜ ืคึฟืึทืจ ืึท ืกื™ื‘ื”, ืึธื‘ืขืจ ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืœืขื•ื•ืขืœืก (ืจื™ื ื’ืก / ืฉื•ืฅ ืจื™ื ื’ืก) ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ืœืขื•ื•ืขืœืก ืคื•ืŸ ื“ืึทื˜ืŸ ืึทืงืกืขืก, ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ืคึผืจื™ื•ื•ืœื™ื“ื–ืฉื“ (ืจื™ื ื’ 0), ืฆื• ื“ื™ ืžืขืจืกื˜ ืœื™ืžื™ื˜ืขื“, ืจืขื’ื™ืึทืœื™ื™ื˜ืึทื“ ืื•ืŸ "ืžื™ื˜ ื“ื™ ื ื™ืกืœืขืš ื˜ื™ื™ื˜ืึทื ื“ โ€ (ืจื™ื ื’ 3 ).

ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื (ืึทืก ืงืขืจืŸ) ืœื•ื™ืคื˜ ืื•ื™ืฃ ืจื™ื ื’ 0 (ืงืขืจื ืขืœ ืžืึธื“ืข) ืื•ืŸ ืงืขื ืขืŸ ื˜ืึธืŸ ื•ื•ืึธืก ืขืก ื•ื•ื™ืœ ืžื™ื˜ ืงื™ื™ืŸ ื“ืึทื˜ืŸ ืื•ืŸ ื“ืขื•ื•ื™ืกืขืก. ื‘ืึทื ื™ืฆืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ื“ื™ ืจื™ื ื’ 3 ืžื“ืจื’ื” (ื‘ืึทื ื™ืฆืขืจ ืžืึธื“ืข) ืื•ืŸ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืขืจืœื•ื™ื‘ื˜ ืฆื• ื˜ืึธืŸ ื•ื•ืึธืก ื–ื™ื™ ื•ื•ื™ืœืŸ, ืึธื‘ืขืจ ืึทื ืฉื˜ืึธื˜ ืžื•ื–ืŸ ื‘ืขื˜ืŸ ืึทืงืกืขืก ื™ืขื“ืขืจ ืžืึธืœ ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืึธืคึผืขืจืึทืฆื™ืข (ืึทื–ื•ื™, ื‘ืึทื ื™ืฆืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื”ืึธื‘ืŸ ื‘ืœื•ื™ื– ืึทืงืกืขืก ืฆื• ื–ื™ื™ืขืจ ืื™ื™ื’ืขื ืข ื“ืึทื˜ืŸ ืื•ืŸ ืงืขื ืขืŸ ื ื™ืฉื˜ "ื‘ืึทืงื•ืžืขืŸ ืื™ืŸ" ืขืžืขืฆืขืจ ืึทื ื“ืขืจืฉ ืก ื–ืึทืžื“ืงืึทืกื˜ืŸ). ืจื™ื ื’ 1 ืื•ืŸ 2 ื–ืขื ืขืŸ ื‘ื“ืขื” ืคึฟืึทืจ ื ื•ืฆืŸ ื“ื•ืจืš ื“ืจื™ื•ื•ืขืจืก.

ืื™ื™ื“ืขืจ ื“ื™ ื“ืขืจืคื™ื ื“ื•ื ื’ ืคื•ืŸ Intel VT-x / AMD SVM, ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจื– ืœื•ื™ืคืŸ ืื•ื™ืฃ ืจื™ื ื’ 0, ืื•ืŸ ื’ืขืกื˜ ื’ืขืœืืคืŸ ืื•ื™ืฃ ืจื™ื ื’ 1. ื–ื™ื ื˜ ืจื™ื ื’ 1 ื”ืื˜ ื ื™ืฉื˜ ื’ืขื ื•ื’ ืจืขื›ื˜ ืคึฟืึทืจ ื ืึธืจืžืึทืœ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืึทืก, ืžื™ื˜ ื™ืขื“ืขืจ ืคึผืจื™ื•ื•ืœื™ื“ื–ืฉื“ ืจื•ืคืŸ ืคื•ืŸ ื“ื™ ื’ืึทืกื˜ ืกื™ืกื˜ืขื, ื“ื™ ื’ืึทืกื˜ ืกื™ืกื˜ืขื. ื”ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ ื”ืื˜ ืฆื• ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ื“ืขื ืจื•ืคืŸ ืื•ื™ืฃ ื“ื™ ืคืœื™ืขืŸ ืื•ืŸ ื•ื™ืกืคื™ืจืŸ ืขืก ืื•ื™ืฃ ืจื™ื ื’ 0 (ืคื™ืœ ื•ื•ื™ QEMU ื˜ื•ื˜). ื™ืขื ืข. ื’ืึทืกื˜ ื‘ื™ื™ื ืขืจื™ ื ื™ืฉื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื’ืœื™ื™ึทืš ืื•ื™ืฃ ื“ื™ ืคึผืจืึทืกืขืกืขืจ, ืื•ืŸ ื™ืขื“ืขืจ ืžืึธืœ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืขื˜ืœืขื›ืข ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืžืึธื“ื™ืคื™ืงืึทื˜ื™ืึธื ืก ืื•ื™ืฃ ื“ื™ ืคืœื™ืขืŸ.

ื“ื™ ืึธื•ื•ื•ืขืจื›ืขื“ ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืึทื˜ื™ื™ื˜ื™ืง ืื•ืŸ ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื’ืจื•ื™ืก ืคึผืจืึธื‘ืœืขื, ืื•ืŸ ื“ืึทืŸ ืคึผืจืึทืกืขืกืขืจ ืžืึทื ื™ืึทืคืึทืงื˜ืฉืขืจืขืจื–, ื™ื ื“ื™ืคึผืขื ื“ืึทื ื˜ืœื™ ืคื•ืŸ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ, โ€‹โ€‹ื‘ืืคืจื™ื™ื˜ ืึทืŸ ืขืงืกื˜ืขื ื“ืขื“ ื’ืึทื ื’ ืคื•ืŸ ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก (Intel VT-x / AMD SVM) ื•ื•ืึธืก ื“ืขืจืœื•ื™ื‘ื˜ ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ื’ืึทืกื˜ ืึทืก ืงืึธื“ ื“ื™ืจืขืงื˜ ืื•ื™ืฃ ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก ืคึผืจืึทืกืขืกืขืจ (ื‘ื™ื™ืคึผืึทืกื™ื ื’ ืงื™ื™ืŸ ื˜ื™ื™ึทืขืจ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืกื˜ืขืคึผืก, ื•ื•ื™ ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจ ืคืึทืœ ืคืจื™ืขืจ).

ืžื™ื˜ ื“ื™ ืึทื“ื•ื•ืขื ื˜ ืคื•ืŸ Intel VT-x / AMD SVM, ืึท ืกืคึผืขืฆื™ืขืœ ื ื™ื™ึท ืจื™ื ื’ ืžื“ืจื’ื” -1 (ืžื™ื ื•ืก ืื™ื™ื ืขืจ) ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ. ืื•ืŸ ืื™ืฆื˜ ื“ื™ ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ ืœื•ื™ืคื˜ ืื•ื™ืฃ ืขืก, ืื•ืŸ ื“ื™ ื’ืขืกื˜ ืœื•ื™ืคืŸ ืื•ื™ืฃ ืจื™ื ื’ 0 ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืคึผืจื™ื•ื•ืœื™ื“ื–ืฉื“ ืึทืงืกืขืก ืฆื• ื“ื™ ืงืคึผื•.

ื™ืขื ืข. ืฆื•ื ืกื•ืฃ:

  • ื‘ืึทืœืขื‘ืึธืก ืœื•ื™ืคื˜ ืื•ื™ืฃ ืจื™ื ื’ 0
  • ื’ืขืกื˜ ืึทืจื‘ืขื˜ ืื•ื™ืฃ ืจื™ื ื’ 0
  • ื”ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ ืœื•ื™ืคื˜ ืื•ื™ืฃ ืจื™ื ื’ -1

4) ืงืขืžื•-ืงื•ื•ื

KVM ื’ื™ื˜ ื’ืขืกื˜ ืึทืงืกืขืก ืฆื• ืจื™ื ื’ 0 ืื•ืŸ ื ื™ืฆื˜ QEMU ืฆื• ืขืžื™ืึทืœื™ื™ื˜ ื“ื™ I/O (ืคึผืจืึทืกืขืกืขืจ, ื“ื™ืกืงืก, ื ืขืฅ, ื•ื•ื™ื“ืขื, ืคึผืกื™, ื•ืกื‘, ืกื™ืจื™ืึทืœ ืคึผืึธืจืฅ, ืืื–"ื• ื• ื•ื•ืึธืก ื’ืขืกื˜ "ื–ืขืŸ" ืื•ืŸ ืึทืจื‘ืขื˜ ืžื™ื˜).

ื“ืขืจืคืืจ QEMU-KVM (ืึธื“ืขืจ KVM-QEMU) :)

ืงืจืขื“ื™ืฅ
ื‘ื™ืœื“ ืฆื• ืฆื•ืฆื™ืขืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜
ื‘ื™ืœื“ ืคื•ืŸ ืฉื•ืฅ ืจื™ื ื’ืก

ืคึผืก ื“ืขืจ ื˜ืขืงืกื˜ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ื– ื’ืขื•ื•ืขืŸ ืขืจื™ื“ื–ืฉื ืึทืœื™ ืืจื•ื™ืก ืื™ืŸ ื“ื™ ื˜ืขืœืขื’ืจืึทื ืงืึทื ืึทืœ @RU_Voip ื•ื•ื™ ืึทืŸ ืขื ื˜ืคืขืจ ืฆื• ืึท ืงืฉื™ื ืคื•ืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืงืึทื ืึทืœ ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ.

ืฉืจื™ื™ื‘ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ื•ื•ื• ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ื˜ืขืžืข ืจื™ื›ื˜ื™ืง ืึธื“ืขืจ ืื•ื™ื‘ ืขืก ืื™ื– ืขืคึผืขืก ืฆื• ืœื™ื™ื’ืŸ.

ื“ืื ืง ืื™ืจ!

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’