ืืืื ืืขืฆืืืืข ืคืืจืฉืืื ื:
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) ืฉืืฅ ืจืื ืืก
ืืืื ืขืจื ืคึผืจืึธืืจืึทื ืงืึธื ืืืืฃ ืคึผืจืึทืกืขืกืขืจื ืึทืจืืขื ืคึฟืึทืจ ืึท ืกืืื, ืึธืืขืจ ืืื ืืืื ืืื ืคืึทืจืฉืืืขื ืข ืืขืืืขืืก (ืจืื ืืก / ืฉืืฅ ืจืื ืืก) ืืื ืคืึทืจืฉืืืขื ืข ืืขืืืขืืก ืคืื ืืึทืื ืึทืงืกืขืก, ืคืื ืื ืืขืจืกื ืคึผืจืืืืืืืืฉื (ืจืื ื 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) :)
ืงืจืขืืืฅ
ืคึผืก ืืขืจ ืืขืงืกื ืคืื ืืขื ืึทืจืืืงื ืืื ืืขืืืขื ืขืจืืืืฉื ืึทืื ืืจืืืก ืืื ืื ืืขืืขืืจืึทื ืงืึทื ืึทื
ืฉืจืืื ืืื ืื ืืึทืืขืจืงืื ืืขื ืืื ืืื ืืึธื ื ืื ืคึฟืึทืจืฉืืืื ืื ืืขืืข ืจืืืืืง ืึธืืขืจ ืืืื ืขืก ืืื ืขืคึผืขืก ืฆื ืืืืื.
ืืื ืง ืืืจ!
ืืงืืจ: www.habr.com