Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ XCP-ng, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠΎΠ΄ ΠΊΡΡΠ»ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Xen, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΏΠ»Π°Π½ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust Π·Π°ΠΌΠ΅Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° Xen. ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡ Xen ΠΏΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ, ΡΠ°Π±ΠΎΡΠ° ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Π° Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΠΊΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π° ΡΠ·ΡΠΊΠ°Ρ C, Python, OCaml ΠΈ Go, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Rust Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° Go ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
Π―Π·ΡΠΊ Rust Π²ΡΠ±ΡΠ°Π½ ΠΊΠ°ΠΊ ΡΠΎΡΠ΅ΡΠ°ΡΡΠΈΠΉ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, ΠΎΠ±Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°, ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ , ΡΠ°ΠΊ ΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (borrow checker). Rust ΡΠ°ΠΊΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½, ΡΠ΅ΠΌ Π½ΡΠ½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π² XAPI ΡΠ·ΡΠΊ OCaml, ΡΡΠΎ ΡΠΏΡΠΎΡΡΠΈΡ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡ Π½ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π°ΠΌΠ΅Π½Ρ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π±Π°Π·Ρ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π° Rust Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Linux guest tools, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊ Go, ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° OCaml.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠΈ Linux guest tools (xe-guest-utilities) Π²ΡΠ·Π²Π°Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ Π²Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Xen Project ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ Cloud Software Group, ΡΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠΎΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (xen-guest-agent) ΠΏΠ»Π°Π½ΠΈΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Ρ Π½ΡΠ»Ρ, ΡΠ΄Π΅Π»Π°Π² ΠΏΡΠΎΡΡΡΠΌ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ ΠΎΡΠ΄Π΅Π»ΠΈΠ² Π»ΠΎΠ³ΠΈΠΊΡ Π°Π³Π΅Π½ΡΠ° ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π€ΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊ (rrdd) ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌ ΠΈ ΠΎΠ±ΠΎΡΠΎΠ±Π»Π΅Π½Π½ΡΠΌ, ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π³ΠΎΠ΄Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ½ΡΡΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π° Rust ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° xenopsd-ng, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ°. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±Ρ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ API ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Π½Π΅Π³ΠΎ Π²ΡΠ΅Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ API ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΡΡΠ΅ΠΊΠ°.
Π’Π΅ΠΊΡΡΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠ΅ΠΊΠ° Xen:
ΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠ΅ΠΊΠ° Xen Π½Π° Π±Π°Π·Π΅ xenopsd-ng:
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru