ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° систСма хранСния Blockstor, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ LINSTOR

ДоступСн ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ выпуск Blockstor β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ систСмы управлСния распрСдСлённым Π±Π»ΠΎΡ‡Π½Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ для Kubernetes, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ²Π΅Ρ€Ρ… DRBD. Blockstor совмСстим ΠΏΠΎ REST API с LINSTOR ΠΈ способСн Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ экосистСмой ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ linstor, CSI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Piraeus, ha-controller ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ golinstor. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ прСдставляСт собой ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ (clean-room) Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π° языкС Go, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ исходный ΠΊΠΎΠ΄ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°. Код распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0 ΠΈ развиваСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Cozystack (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ CNCF Sandbox).

Автор ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” АндрСй Квапил (@kvaps), ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Cozystack ΠΈ участник нСкоммСрчСской ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Piraeus, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ CSI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ LINSTOR для Kubernetes. Автор извСстСн Π² Kubernetes-сообщСствС ΠΊΠ°ΠΊ популяризатор LINSTOR ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ выступал с тСхничСскими Π΄ΠΎΠΊΠ»Π°Π΄Π°ΠΌΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ нСбольшая «пятничная» ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 20 Π΄Π½Π΅ΠΉ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся ΠΊΠ°ΠΊ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² пСрспСктивС рассматриваСтся ΠΊΠ°ΠΊ возмоТная Π·Π°ΠΌΠ΅Π½Π° LINSTOR Π² Ρ€ΠΎΠ»ΠΈ систСмы хранСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Cozystack.

Π’ качСствС ΠΏΡ€ΠΈΡ‡ΠΈΠ½ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ слоТности с сопровоТдСниСм ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² основной ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ограничСния LINSTOR. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Β«request-basedΒ» модСль ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°Ρ…, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ reconciliation-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Kubernetes ΠΈ framework controller-runtime, ΠΏΠΎ мнСнию Π°Π²Ρ‚ΠΎΡ€Π°, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для построСния распрСдСлённых систСм.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ LINSTOR, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Blockstor ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ основана Π½Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Kubernetes controller-runtime. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС систСмы прСдставлСны Π² Π²ΠΈΠ΄Π΅ Kubernetes CRD-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° сама систСма Π½Π΅ рассчитана Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Π½Π΅ Kubernetes-кластСра.

Π‘Ρ€Π΅Π΄ΠΈ основных возмоТностСй Blockstor:

  • Π Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠΎΠ²Π΅Ρ€Ρ… DRBD Ρ‚ΠΎΠΌΠ° Π½Π° Π±Π°Π·Π΅ LVM, LVM-thin, ZFS, ZFS-thin ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… бэкСндов.
  • АвтоматичСскоС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π·ΠΎΠ½, свойств ΡƒΠ·Π»ΠΎΠ² ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» Β«replicas-on-differentΒ».
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° TieBreaker, quorum ΠΈ измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠΌΠΎΠ² Π±Π΅Π· остановки Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π΅Π· DRBD Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ локального (single-replica diskful) ΠΈΠ»ΠΈ бСздискового Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.
  • Π¨ΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· LUKS.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ²: созданиС, ΠΎΡ‚ΠΊΠ°Ρ‚, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ восстановлСниС Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ рСсурса.
  • ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Ρ‡Π΅Ρ€Π΅Π· zfs send/recv ΠΈ thin-send-recv.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ storage pool’ов ΠΈΠ· физичСских дисков.
  • Π‘ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅ для Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ (linux/amd64 ΠΈ linux/arm64), ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² GHCR.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° стало Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС AI-инструмСнтов ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ вСсь ΠΊΠΎΠ΄ Π±Ρ‹Π» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Claude Code (модСль Opus 4.7) ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Anthropic. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° вСлась ΠΏΠΎΡ‡Ρ‚ΠΈ круглосуточно Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 20 Π΄Π½Π΅ΠΉ. Π’ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π΄ΠΎ 60 AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ², Π° ΠΎΠ±Ρ‰ΠΈΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ составил ΠΎΠΊΠΎΠ»ΠΎ 1320 запросов со стороны Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ порядка 36 тысяч ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ сСссии.

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ 1500 ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 83 тысячи строк ΠΊΠΎΠ΄Π° заняла рСализация ΠΈ Π΅Ρ‰Ρ‘ 137 тысяч строк ΠΊΠΎΠ΄Π° тСсты. По ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠ΅, суммарно Π±Ρ‹Π»ΠΎ израсходовано ΠΎΠΊΠΎΠ»ΠΎ 18.9 ΠΌΠ»Ρ€Π΄ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², Π° эквивалСнтная ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΏΡ€ΠΈ использовании API-Ρ‚Π°Ρ€ΠΈΡ„ΠΎΠ² составила Π±Ρ‹ ΠΎΠΊΠΎΠ»ΠΎ 40 тысяч Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ².

Автор ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ рассчитывал Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ силами AI-ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ слоТная Π»ΠΎΠ³ΠΈΠΊΠ° DRBD ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° постоянного участия Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. НаиболСС слоТными оказались сцСнарии схоТдСния DRBD-состояний, Ρ€Π°Π±ΠΎΡ‚Π° с Generation Identifier (GI), пропуска ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ синхронизации ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° split-brain сцСнариСв.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ LINSTOR распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π±Ρ‹Π»ΠΎ нСльзя. Основная Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ создавалась Π½Π° основС Π°Π½Π°Π»ΠΈΠ·Π° API-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ², повСдСния ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Python-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° LINSTOR, Π° Ρ‚Π°ΠΊΠΆΠ΅ совмСстимых ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ piraeus-operator ΠΈ CSI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€.

Π’ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТных случаях ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ схСма с Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ€ΠΎΠ»Π΅ΠΉ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ²: ΠΎΠ΄ΠΈΠ½ Π°Π³Π΅Π½Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» исходный ΠΊΠΎΠ΄ LINSTOR ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π» Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ повСдСния, послС Ρ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π³Π΅Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎ этой спСцификации Π±Π΅Π· прямого копирования исходного ΠΊΠΎΠ΄Π°. Из-Π·Π° отсутствия ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… тСстов Ρƒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры πŸ”₯ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры | ProHoster