Для ядра Linux ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° файловая систСма DLMPFS

АлСксандр Аринг (Alexander Aring) ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Red Hat, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ Π² ядрС Linux подсистСмы IEEE 802.15.4, DLM ΠΈ flock/fcntl, прСдставил Π² спискС рассылки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму DLMPFS. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π€Π‘ прСдоставляСт слой для распрСдСлённых Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° Π±Π°Π·Π΅ DLM (Distributed Lock Manager) ΠΈ ramfs. РСализация DLMPFS доступна Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π°Π±ΠΎΡ€Π° ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΊ ядру Linux 6.19.

DLMPFS позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±Ρ‰Π΅ΠΉ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… хостов ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ flock() ΠΈ fcntl(). ΠŸΡ€ΠΈ этом DLMPFS Π½Π΅ позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ опСрациями с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ состояниС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зная ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ (DLM Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ имя рСсурса для опрСдСлСния Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ).

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ DLMPFS ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ прилоТСния, завязанныС Π½Π° выставлСнии Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Ρ‡Π΅Ρ€Π΅Π· API flock/fcntl, Π½Π° использованиС распрСдСлённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… нСсколько хостов Π² кластСрС, Π±Π΅Π· нСобходимости задСйствования для хранСния Π΄Π°Π½Π½Ρ‹Ρ… спСциализированных распрСдСлённых Π€Π‘.

DLMPFS отличаСтся ΠΎΡ‚ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ Π€Π‘ DLMFS использованиСм API flock/fcntl вмСсто API, спСцифичного для Π€Π‘ OCFS2. Π’ ΠΏΠ»Π°Π½Π°Ρ… Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² DLMPFS распрСдСлённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π² спСцификации POSIX, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π°Π·Π½Ρ‹Ρ… бэкСндов для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с DLM, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌΠΈ распрСдСлённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ NFS lockd.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования (Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΡƒΠ·Π»Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° Ρ„Π°ΠΉΠ» /mnt/lock Π±ΡƒΠ΄Π΅Ρ‚ снята Ρ‡Π΅Ρ€Π΅Π· 20 сСкунд): Π£Π·Π΅Π» 1: mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt touch /mnt/lock flock /mnt/lock -c Β«echo β€˜acquired’; sleep 20; echo β€˜released'Β» Π£Π·Π΅Π» 2: mount -t dlmpfs -o clname=$CLUSTERNAME none /mnt touch /mnt/lock flock /mnt/lock -c Β«echo β€˜acquired’; sleep 20; echo β€˜released'Β»

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

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