Π‘ΠΎΡΡΠΎΡΠ»ΡΡ Π²ΡΠΏΡΡΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ libmdbx 0.10.4 (MDBX) Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΠΉ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ libfpta 0.3.9 (FPTA), ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ²Π΅ΡΡ MDBX ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Ρ Π²ΡΠΎΡΠΈΡΠ½ΡΠΌΠΈ ΠΈ ΡΠΎΡΡΠ°Π²Π½ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ. ΠΠ±Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π½ΡΠΌΠΈ OSI. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΠΉ ΠΠ»ΡΠ±ΡΡΡ 2000.
ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ libmdbx ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π‘Π£ΠΠ LMDB ΠΈ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠ°ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΠΎ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ, Π½Π°Π±ΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ LMDB, Π² libmdbx Π±ΠΎΠ»ΡΡΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ ΠΊΠΎΠ΄Π°, ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ API, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌ. ΠΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΠ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ libmdbx ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ACID, ΡΡΡΠΎΠ³ΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π΅ ΡΡΠ΅Π½ΠΈΠ΅ Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ΄ΡΠ°ΠΌ Π¦ΠΠ£. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΊΠΎΠΌΠΏΠ°ΠΊΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΠ, ΠΎΡΠ΅Π½ΠΊΠ° ΠΎΠ±ΡΡΠΌΠ° Π²ΡΠ±ΠΎΡΠΎΠΊ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ (range query estimation). Π‘ 2016 Π³ΠΎΠ΄Π° ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΠΈΠ½Π°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Positive Technologies ΠΈ c 2017 Π³ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π΅Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ .
ΠΠ»Ρ libmdbx ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ C++ API, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ½ΡΡΠ·ΠΈΠ°ΡΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ ΡΠ·ΡΠΊΠ°ΠΌ Rust, Haskell, Python, NodeJS, Ruby, Go, Nim. ΠΠ»Ρ libfpta ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ API Π² Π²ΠΈΠ΄Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° C/C++.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π°, Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΎΡ 9 ΠΌΠ°Ρ:
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ±ΠΎΡΠΎΠΊ.
- Π£ΡΡΡΠ°Π½Π΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΎΠΌ ΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ² Π² Ρ ΠΎΠ΄Π΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅/Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠ΅. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΡΠ²Π»Π΅Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌΠΈ Positive Tecnologies ΠΏΡΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ².
- ΠΠΎΡΠ°Π±ΠΎΡΠ°Π½Ρ ΡΠ΅ΡΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΡ Π½Π΅ ΠΈΠ·ΠΎΠΌΠΎΡΡΠ½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π΄Π΅ΡΠ΅Π²Π° ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ GC Π²Π½ΡΡΡΠΈ ΠΠ.
- Π C++ API ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ Π»ΠΈΡΠ½ΠΈΠΉ «noexcept», Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π° «cursor::erase()», ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΡΠ΅ΡΠΎΠ² ΠΈΠ·Π±Π°Π²Π»Π΅Π½Π° ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ «std::string» Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ (Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ CLANG libstdc++).
- Π£ΡΡΡΠ°Π½ΡΠ½ ΡΠ΅Π³ΡΠ΅ΡΡ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΡΠΏΠΈΠ»Π»ΠΈΠ½Π³Π° Π³ΡΡΠ·Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡ (ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΡΠ΅ΡΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡ ΠΠ) ΠΏΡΠΎΡΠ²Π»ΡΠ²ΡΠ΅ΠΉΡΡ ΡΠ΅Π΄ΠΊΠΎΠΉ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ MDBX_PROBLEM ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ .
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π·ΠΈΠ½Π³ΠΎΠΌ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΌ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΠ.
- Π£ΡΡΡΠ°Π½Π΅Π½Ρ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ UndefinedBehaviorSanitizer ΠΈ Coverity Scan issues.
- ΠΡΠΏΡΠ°Π²Π»Π΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ ΠΈ ΡΠΆΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠ»Π°Π³Π° «P_DIRTY» Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ°Ρ Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΠ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΡΡΠ°ΡΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
- Π ΡΠΊΡΠΈΠΏΡΠ°Ρ CMake Π΄ΠΎΡΠ°Π±ΠΎΡΠ°Π½ ΠΏΠΎΠΈΡΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ LTO (link-time optimization).
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ Π΄ΠΎ 32767.
- Π£ΡΠΊΠΎΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Valgrind ΠΈ AddressSanitizer.
- ΠΠ° Windows ΡΡΡΡΠ°Π½Π΅Π½ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ SRW-lock ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ MDBX_NOTLS (Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ thread local storage), ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ bootid Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π΄ΠΎΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ WSL1 ΠΈ WSL2, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΡΡΡΠΈΡ ΠΠ Π½Π° Plan 9 ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ DrvFS.
- Π‘ΡΠΌΠΌΠ°ΡΠ½ΠΎ Π²Π½Π΅ΡΠ΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 160 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² 57 ΡΠ°ΠΉΠ»ΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ~5000 ΡΡΡΠΎΠΊ, ΡΠ΄Π°Π»Π΅Π½ΠΎ ~2500.
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ Ρ
ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Erigon (ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Ethereum) Π·Π° ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠΊΡΡΡΠ΅ΠΌΠ°Π»ΡΠ½ΡΡ
ΡΡΠ΅Π½Π°ΡΠΈΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π·Π° ΠΏΡΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΡ
ΠΎΠ΄Π° libmdbx v0.10.0, ΠΏΡΠΈ ΠΎΠ±ΡΡΠΌΠ΅ ΠΠ 1-2 Π’Π± Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ Erigon (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° 7% ΡΠ·Π»ΠΎΠ² Ethereum), ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΠ, Π²ΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ ΠΈΠ·-Π·Π° Π²Π½Π΅ΡΠ½ΠΈΡ
ΠΏΡΠΈΡΠΈΠ½, Π° Π½Π΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΠ: Π² Π΄Π²ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π±ΡΠ»ΠΈ ΡΠ±ΠΎΠΈ ΠΠΠ£, Π² ΡΡΠ΅ΡΡΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠ° ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ BTRFS.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru