Π Π΅Π»ΠΈΠ· OpenZFS 2.2, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ZFS для Linux ΠΈ FreeBSD

ПослС Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenZFS 2.2, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ZFS для Linux ΠΈ FreeBSD. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ «ZFS on Linux» ΠΈ Ρ€Π°Π½Π΅Π΅ ограничивался Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ модуля для ядра Linux, Π½ΠΎ послС пСрСноса ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ FreeBSD Π±Ρ‹Π» ΠΏΡ€ΠΈΠ·Π½Π°Π½ основной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ OpenZFS ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½.

Π Π°Π±ΠΎΡ‚Π° OpenZFS ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° с ядрами Linux c 3.10 ΠΏΠΎ 6.5 ΠΈ всСми Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ FreeBSD, начиная с 12.2-RELEASE. Код распространяСтся ΠΏΠΎΠ΄ свободной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ CDDL. OpenZFS ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ FreeBSD ΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав дистрибутивов Debian, Ubuntu, Gentoo, Sabayon Linux ΠΈ ALT Linux. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ с Π½ΠΎΠ²ΠΎΠΉ вСрсиСй Π² блиТайшСС врСмя Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ для основных дистрибутивов Linux, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Debian, Ubuntu, Fedora, RHEL/CentOS.

OpenZFS прСдоставляСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ZFS, связанных ΠΊΠ°ΠΊ с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Ρ‚Π°ΠΊ ΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Ρ‚ΠΎΠΌΠΎΠ². Π’ частности, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) ΠΈ ZPL (ZFS POSIX Layer). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ обСспСчСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ZFS Π² качСствС бэкСнда для кластСрной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Lustre. Наработки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° основаны Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ZFS, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenSolaris ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ исправлСниями ΠΎΡ‚ сообщСства Illumos. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся ΠΏΡ€ΠΈ участии сотрудников ЛивСрморской Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ с ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎΠΌ энСргСтики БША.

Код распространяСтся ΠΏΠΎΠ΄ свободной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ CDDL, которая нСсовмСстима с GPLv2, Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ OpenZFS Π² состав основной Π²Π΅Ρ‚ΠΊΠΈ ядра Linux, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ смСшиваниС ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ лицСнзиями GPLv2 ΠΈ CDDL нСдопустимо. Для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠΉ нСсовмСстимости Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ CDDL Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ модуля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ ядра. Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ OpenZFS оцСниваСтся ΠΊΠ°ΠΊ сопоставимая с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π€Π‘ для Linux.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ клонирования Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ части Π±Π΅Π· дублирования Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ссылки Π½Π° ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… исходного Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· ΠΈΡ… фактичСского копирования. Π’ случаС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² исходный Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΠΈ, выполняСтся ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² созданныС ΠΊΠΎΠΏΠΈΠΈ (Ρ€Π΅ΠΆΠΈΠΌ copy-on-write Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²). На Π±Π°Π·Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° клонирования Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° опСрация reflink, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для автоматичСского создания ΠΊΠ»ΠΎΠ½ΠΎΠ² Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ… копирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях /bin/cp Π² Linux.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, примСняСмых для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ изоляции Π² Linux, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ систСмный Π²Ρ‹Π·ΠΎΠ² renameat, Π€Π‘ overlayfs, ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ пространств ΠΈΠΌΡ‘Π½ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π»ΠΎΠ³ ошибок, выявлСнных ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм (scrub). ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «zpool status» выводятся свСдСния ΠΎ всСх Π€Π‘, ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π°Ρ… ΠΈ ΠΊΠ»ΠΎΠ½Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Для ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ быстрого восстановлСния извСстных ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «zpool scrub -e».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм криптографичСской Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BLAKE3, ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ‡Π΅Π½ΡŒ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ вычислСния Ρ…Π΅ΡˆΠ° (Π² Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° быстрСС Edon-R ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС sha256 ΠΈ sha512) ΠΏΡ€ΠΈ обСспСчСнии надёТности Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ SHA-3.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° опСрация «zfs receive -c», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для восстановлСния ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…) Π² Π€Π‘, ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π°Ρ… ΠΈ ΠΊΠ»ΠΎΠ½Π°Ρ…, Π² случаях, ΠΊΠΎΠ³Π΄Π° имССтся рСплицированная рСзСрвная копия, Ρ€Π°Π½Π΅Π΅ сохранённая ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «zfs send».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ выставлСния ΠΈ чтСния свойств для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… дисков vdev.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ привязки ΠΊ vdev ΠΈ zpool ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… свойств, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ свойствами для zfs dataset.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° рСализация Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ кэша ARC (Adaptive Replacement Cache), ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния. ARC Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ адаптируСтся ΠΊ высоким Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ настроСк.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ускорСния вычислСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм SHA2.
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Π½Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° рСализация ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм Edon-R.
  • ΠŸΡ€ΠΈ использовании для сТатия Π΄Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° zstd ускорСно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ситуаций, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сТатиС бСссмыслСнно (Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‚ΡΡ ΡΠΆΠ°Ρ‚ΠΈΡŽ).
  • ВнСсСны ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Prefetch), ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ интСнсивном Π²Π²ΠΎΠ΄Π΅/Π²Ρ‹Π²ΠΎΠ΄Π΅.
  • ВнСсСна порция ΠΎΠ±Ρ‰ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

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