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