ΠΠ°ΡΡ ΠΡΠ΅Π½Ρ (), Π΅Π΄ΠΈΠ½ ΠΎΡ Π΄Π²Π°ΠΌΠ°ΡΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈ Π°Π²ΡΠΎΡΠΈ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ZFS, ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° OpenZFS (ZFS Π½Π° Linux) ΠΎΡ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π° Β«slaveΒ», ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠ΅ ΡΠ΅ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ° ΠΊΠ°ΡΠΎ Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡΠ° ΠΎΡ ΡΠΎΠ²Π΅ΡΠΊΠΎΡΠΎ ΡΠΎΠ±ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ Π΄Π° ΠΎΠΊΠ°Π·Π²Π°Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΈ Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΡΡ Β«slaveΒ» Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΏΡΠΈΡΡΠ΅Π½ ΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠΏΠΈΡ.
ΠΠΌΠ΅ΡΡΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π° Β«slaveΒ» Π² ZFS ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΡΠΌΠ°ΡΠ° Β«dependentΒ». ΠΡ Π²ΠΈΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° zpool.d/slaves, ΠΊΠΎΠΉΡΠΎ ΡΠ΅Π³Π° ΡΠ΅ Π½Π°ΡΠΈΡΠ° Β«dm-depsΒ» ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ Β«dmsetup depsΒ». ΠΠΌΠ΅ΡΡΠΎ ΠΈΠ·ΡΠ°Π·Π° Β«slave devicesΒ» Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½Π° ΡΡΠ°Π·Π°ΡΠ° Β«dependent (underlying) devicesΒ». Π Π·Π°Π³Π»Π°Π²Π½ΠΈΡ ΡΠ°ΠΉΠ» Β«freebsd/spl/sys/dkio.hΒ» ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ dki_slave Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΠΎΡ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° dk_cinfo Π±Π΅Π· ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Π·Π°ΠΌΡΠ½Π°. ΠΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«zpool iostat -vc slavesΒ» Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Β«zpool iostat -vc sizeΒ».
ΠΡΡΠ·ΠΊΠΈΡΠ΅ ΠΊΡΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Β«/sys/class/block/$dev/slavesΒ» ΡΠ° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π² ΠΉΠ΅ΡΠ°ΡΡ ΠΈΡΡΠ° sysfs ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΈ Π΅ ΠΈΠ·Π²ΡΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° OpenZFS. ΠΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΡΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΡΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«dmsetup depsΒ», Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° dmsetup ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π² /sys/ Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
ΠΡΠΈΠΏΠΎΠΌΠ½ΡΠΌΠ΅, ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅Π΄ΠΌΠΈΡΠ° ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠ΅ whitelist/blacklist ΠΈ master/slave ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Go, Π° ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ , , , , , ΠΈ . Π DNS-ΡΠ΅ΡΠ²Π΅ΡΠ° BIND ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠ΅ Β«master/slaveΒ» ΡΠ΅Π³Π° ΡΠ° Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Ρ Β«primary/secondaryΒ».
ΠΠΎΠΌΠΈΡΠ΅Ρ IETF (Internet Engineering Task Force), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠ΅ βwhitelist/blacklistβ ΠΈ βmaster/slaveβ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ β Π²ΠΌΠ΅ΡΡΠΎ βmaster/slaveβ ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° βprimary/secondaryβ, βleader/followerβ,
βactive/standbyβ,
βprimary/replicaβ,
βwriter/readerβ,
βcoordinator/workerβ ΠΈΠ»ΠΈ
βparent/helperβ, Π° Π²ΠΌΠ΅ΡΡΠΎ βblacklist/whitelistβ β βblocklist/allowlistβ ΠΈΠ»ΠΈ βblock/permitβ.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π΅, ΡΠ΅ Π² GitHub ΡΠΈΡΠ»ΠΎΡΠΎ Π½Π° ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΠ°Π»ΠΊΠΎ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° ΡΠ΅Π·ΠΈ Π² ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°: 42 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΎΠ΄ΠΎΠ±ΡΠΈΡ Π° ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ 48 ΡΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡ Π°. ΠΠΎΠ΄Π΄ΡΡΠΆΠ½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π° Β«slaveΒ» ΡΡΠΈΡΠ°Ρ, ΡΠ΅ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΡΠΎΠ·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ Π΅ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠΉ ΠΊΠ°ΡΠ° Π½ΡΠΊΠΎΠΈ Ρ ΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΡΠ²ΡΡΠ²Π°Ρ ΡΠ³Π½Π΅ΡΠ΅Π½ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΠΏΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΠΌΠΈΠ½Π°Π»Π° Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°ΡΠΈΡ. Π ΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΡΡΠΈΡΠ° Π·Π° ΠΎΠ±ΠΈΠ΄Π΅Π½ ΠΈ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅.
ΠΡΠΎΡΠΈΠ²Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ΡΠΎ ΡΠΌΡΡΠ°Ρ, ΡΠ΅ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΡΠ° ΡΠ΅ΡΠΌΠΈΠ½ΠΈ, ΡΠΈΠ΅ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΎ Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ½Π°ΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ°. ΠΠ΅Π³Π°ΡΠΈΠ²Π½Π°ΡΠ° ΠΊΠΎΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΡΠ΅ Π½Π°Π»Π°Π³Π° ΠΎΡ ΠΈΠ·ΠΊΡΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΡΠ΅ΡΠΊΠ° ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅ΡΠ°Ρ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° ΠΏΡΠΎΡΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ Π΅Π·ΠΈΠΊ. ΠΡΠΌΠ°ΡΠ° βslaveβ Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ½Π° ΠΈ Π½ΠΎΡΠΈ Π² ΡΠ΅Π±Π΅ ΡΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΠ΅Π· ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π΄ΡΠΌΠΈΡΠ΅ Π½ΡΠΌΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π΄ΡΠΌΠ°ΡΠ° Π΅ ΠΎΠ±ΠΈΠ΄Π½Π° ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡΡ Π΅ ΠΎΠ±ΠΈΠ΄Π΅Π½. Π’Π΅ΡΠΌΠΈΠ½ΡΡ βslaveβ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π²Π΅ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 50 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΠ’ ΡΠ΅ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ° ΠΊΠ°ΡΠΎ βΠ²Π΅Π΄ΠΎΠΌΠΎβ, Π° Π½Π΅ ΠΊΠ°ΡΠΎ βΡΠΎΠ±β. ΠΠΊΠΎ Π΄ΠΎΠΏΡΡΠ½Π΅ΠΌ ΠΈΠ·ΠΊΡΠΈΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΈΠ³Π½Π΅ Π΄ΠΎ ΡΠΎΠ²Π°, ΡΠ΅ Π²ΡΡΠΊΠ° Π΄ΡΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²Π°Π΄Π΅Π½Π° ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² ΠΈΠ·ΠΊΡΠΈΠ²Π΅Π½ ΡΠΌΠΈΡΡΠ» ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΊΠ°ΡΠΎ ΠΎΠ±ΠΈΠ΄Π½Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
