Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! ΠœΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ запуски Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΠΎ ΡƒΠΆΠ΅ полюбившимся Π²Π°ΠΌ курсам ΠΈ сСйчас спСшим ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас стартуСт Π½ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠΎ курсу «Администратор LinuxΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запустится Π² ΠΊΠΎΠ½Ρ†Π΅ апрСля. К этому ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡƒΡ€ΠΎΡ‡Π΅Π½Π° новая публикация. Π‘ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Ρ‚ΡƒΡ‚.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€ΠΎΠ»ΡŒ Π½Π΅ΠΊΠΎΠΉ волшСбной абстракции, которая позволяСт философии Linux Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ «всё являСтся Ρ„Π°ΠΉΠ»ΠΎΠΌΒ».

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ файловая систСма? ΠžΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° слова ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ² ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² Linux Π ΠΎΠ±Π΅Ρ€Π° Π›Π°Π²Π°, «Ѐайловая систСма – это иСрархичСскоС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, собранноС Π² соотвСтствии с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ структурой». Как Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ, это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π²Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для VFAT (Virtual File Allocation Table), Git ΠΈ Cassandra (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… NoSQL). Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ опрСдСляСт Ρ‚Π°ΠΊΠΎΠ΅ понятиС, ΠΊΠ°ΠΊ «файловая систСма»?

ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

Π―Π΄Ρ€ΠΎ Linux ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ трСбования ΠΊ сущности, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. Она Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ open(), read() ΠΈ write() для постоянных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π°. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, ядро опрСдСляСт ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму (generic filesystem) Π² качСствС абстрактного интСрфСйса, Π° эти Ρ‚Ρ€ΠΈ большиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈΒ» ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ опрСдСлСния. БоотвСтствСнно, рСализация Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ называСтся Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой (VFS).

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

Если ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ эта ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ считаСтся Ρ„Π°ΠΉΠ»ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² консоли свСрху.
Π€Π΅Π½ΠΎΠΌΠ΅Π½ VFS лишь ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ наблюдСниС, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ΅ для Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ гласит, Ρ‡Ρ‚ΠΎ «всё являСтся Ρ„Π°ΠΉΠ»ΠΎΠΌΒ». ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, насколько странно, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ малСнький ΠΏΡ€ΠΈΠΌΠ΅Ρ€ свСрху с /dev/console ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ консоль. На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° интСрактивная Bash сСссия. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° строки Π² консоль (virtual console device) ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΅Π΅ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ экранС. VFS ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ странныС свойства. НапримСр, ΠΎΠ½Π° Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ поиск ΠΏΠΎ Π½ΠΈΠΌ.

Π—Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π½Π°ΠΌ систСмы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ext4, NFS ΠΈ /proc ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Ρ€ΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² структурС Π΄Π°Π½Π½Ρ‹Ρ… Π‘, которая называСтся file_operations. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ VFS ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ способом. Как ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π ΠΎΠ±Π΅Ρ€Ρ‚ Π›Π°Π², абстракция VFS позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Linux бСспСчно ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΈΠ»ΠΈ ΠΈΠ· сторонних ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈΠ»ΠΈ абстрактных сущностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ pipes, Π½Π΅ бСспокоясь ΠΎΠ± ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎ стороны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ(userspace) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного Π²Ρ‹Π·ΠΎΠ²Π° процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π² структуры Π΄Π°Π½Π½Ρ‹Ρ… ядра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° read() ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ write () Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ VFS, находятся Π² Ρ„Π°ΠΉΠ»Π°Ρ… fs/*.c исходного ΠΊΠΎΠ΄Π° ядра, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ fs/ содСрТат ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы. Π’ ядрС Ρ‚Π°ΠΊΠΆΠ΅ содСрТатся сущности, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ cgroups, /dev ΠΈ tmpfs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π² процСссС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ поэтому ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ядра init/. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ cgroups, /dev ΠΈ tmpfs Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‚Ρ€ΠΎΠΉΠΊΡƒΒ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ file_operations, Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΈΡˆΡƒΡ‚ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ.
На ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ userspace обращаСтся ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π² систСмах Linux. НС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ конструкции ΠΊΠ°ΠΊ pipes, dmesg ΠΈ POSIX clocks, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ структуру file_operations, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· слой VFS.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

VFS β€” это «слой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ» ΠΌΠ΅ΠΆΠ΄Ρƒ систСмными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠΈ рСализациями ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… file_operations, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ext4 ΠΈ procfs. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ file_operations ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ устройств, Π»ΠΈΠ±ΠΎ с устройствами доступа ΠΊ памяти. tmpfs, devtmpfs ΠΈ cgroups Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ file_operations, Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ памяти.
БущСствованиС VFS обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, связанныС с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° – ΡˆΠΈΡ€ΠΎΠΊΠΎΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ²! Однако, Ссли ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ содСрТит ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ошибки, ΠΎΡ‚ Π½ΠΈΡ… ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚ всС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

/tmp: ΠŸΡ€ΠΎΡΡ‚Π°Ρ подсказка

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ VFS ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² систСмС – это ввСсти mount | grep -v sd | grep -v :/, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ всС смонтированныС (mounted) Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π°ΠΌΠΈ Π½Π° дискС ΠΈ Π½Π΅ NFS, Ρ‡Ρ‚ΠΎ справСдливо Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Одним ΠΈΠ· пСрСчислСнных ΠΌΠ°ΡƒΠ½Ρ‚ΠΎΠ²(mounts) VFS, нСсомнСнно, Π±ΡƒΠ΄Π΅Ρ‚ /tmp, Π²Π΅Ρ€Π½ΠΎ?

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

ВсС Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ / tmp Π½Π° физичСском носитСлС – Π±Π΅Π·ΡƒΠΌΠΈΠ΅! Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ /tmp Π½Π° физичСском носитСлС? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π² /tmp ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Π° устройства хранСния ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π³Π΄Π΅ создаСтся tmpfs. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, физичСскиС носитСли Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ износу ΠΏΡ€ΠΈ пСрСзаписи, Ρ‡Π΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒ. НаконСц, Ρ„Π°ΠΉΠ»Ρ‹ Π² /tmp ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, поэтому ΠΈΡ… исчСзновСниС ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

К соТалСнию, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрипты инсталляции Linux дистрибутивов ΡΠΎΠ·Π΄Π°ΡŽΡ‚ /tmp Π½Π° устройствС хранСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. НС ΠΎΡ‚Ρ‡Π°ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ, Ссли это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈ с вашСй систСмой. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ нСсколько простых инструкций с Arch Wiki, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСлСнная для tmpfs становится нСдоступной для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, систСма с гигантской tmpfs ΠΈ большими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Π½Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Ρ‚ΡŒ всю ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΡƒΠΏΠ°ΡΡ‚ΡŒ. Другая подсказка: Π²ΠΎ врСмя рСдактирования Ρ„Π°ΠΉΠ»Π° /etc/fstab, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²ΠΎΠΉ строкой, ΠΈΠ½Π°Ρ‡Π΅ ваша систСма Π½Π΅ загрузится.

/proc ΠΈ /sys

Помимо /tmp, VFS (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Linux – это /proc ΠΈ /sys. (/dev располагаСтся Π² ΠΎΠ±Ρ‰Π΅ΠΉ памяти ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ file_operations). ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ эти Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°? Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся Π² этом вопросС.

procfs создаСт снимок ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ состояния ядра ΠΈ процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ для userspace. Π’ /proc ядро Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠΌΠΈ срСдствами ΠΎΠ½ΠΎ располагаСт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, прСрывания, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, /proc/sys – это мСсто, Π³Π΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, настраиваСмыС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ sysctl, доступны для userspace. Бтатус ΠΈ статистика ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов выводится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… /proc/.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

Π—Π΄Π΅ΡΡŒ /proc/meminfo β€” это пустой Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ содСрТит Ρ†Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

ПовСдСниС /proc Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠΌΠΈ Π½Π΅ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ дисковыС Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы VFS. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, /proc/meminfo содСрТат ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ free. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΆΠ΅, Ρ‚Π°ΠΌ пусто! Как Ρ‚Π°ΠΊ получаСтся? Битуация Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «БущСствуСт Π»ΠΈ Π»ΡƒΠ½Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° Π½Π΅Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ смотрит? Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ квантовая тСория», Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ профСссором Ρ„ΠΈΠ·ΠΈΠΊΠΈ ΠšΠΎΡ€Π½Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ унивСрситСта Дэвидом ΠœΠ΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ Π² 1985 Π³ΠΎΠ΄Ρƒ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ядро собираСт статистику памяти, ΠΊΠΎΠ³Π΄Π° происходит запрос ΠΊ /proc, ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ Π² Ρ„Π°ΠΉΠ»Π°Ρ… /proc Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½ΠΈΠΊΡ‚ΠΎ Ρ‚ΡƒΠ΄Π° Π½Π΅ смотрит. Как сказал ΠœΠ΅Ρ€ΠΌΠΈΠ½, Β«Π€ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ квантовая Π΄ΠΎΠΊΡ‚Ρ€ΠΈΠ½Π° гласит, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ выявляСт Ρ€Π°Π½Π΅Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ΅Π³ΠΎ значСния измСряСмого свойства.Β» (А Π½Π°Π΄ вопросом ΠΏΡ€ΠΎ Π»ΡƒΠ½Ρƒ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ Π² качСствС домашнСго задания!)
ΠšΠ°ΠΆΡƒΡ‰Π°ΡΡΡ пустота procfs ΠΈΠΌΠ΅Π΅Ρ‚ смысл, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰Π°ΡΡΡ Ρ‚Π°ΠΌ информация Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π°. НСмного другая ситуация с sysfs. Π”Π°Π²Π°ΠΉΡ‚Π΅ сравним, сколько Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° Π΅ΡΡ‚ΡŒ Π² /proc ΠΈ Π² /sys.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

Procfs ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ядра, которая являСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π·Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² /sys Π»Π΅ΠΆΠΈΡ‚ мноТСство Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Ρ†Π΅Π»ΡƒΡŽ страницу памяти. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ sysfs содСрТат Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎ число ΠΈΠ»ΠΈ строку, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΠΊ /proc/meminfo.

ЦСль sysfs – ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свойства доступныС для чтСния ΠΈ записи Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ядро Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ Β«kobjectsΒ» Π² userspace. ЕдинствСнная Ρ†Π΅Π»ΡŒ kobjects – это подсчСт ссылок: ΠΊΠΎΠ³Π΄Π° удаляСтся послСдняя ссылка Π½Π° kobject, систСма восстановит рСсурсы, связанныС с Π½ΠΈΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, /sys составляСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ΠΎΠ³ΠΎ Β«stable ABI для userspaceΒ» ядра, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΠΈΠΊΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π°, Π½ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Β«ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒΒ». Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π² sysfs статичны, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ»ΠΎ Π±Ρ‹ подсчСту ссылок Π½Π° Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.
Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ интСрфСйс ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ядра (kernel’s stable ABI) ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² /sys, Π° Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ присутствуСт Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Листинг Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ Π² sysfs обСспСчиваСт ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ устройств, ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм ΠΈ Ρ‚.Π΄. ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ настроСны ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹. Π”Π΅Π»Π°Π΅ΠΌ логичСский Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ procfs Ρ‚Π°ΠΊΠΆΠ΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ stable ABI ядра, хотя это Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ явно Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы Π² Linux: Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚? Π§Π°ΡΡ‚ΡŒ 1

Π€Π°ΠΉΠ»Ρ‹ Π² sysfs ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ свойство для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сущности ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ, пСрСзаписываСмыми ΠΈΠ»ΠΈ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ сразу. Β«0Β» Π² Ρ„Π°ΠΉΠ»Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ SSD Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½.

Π’Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° VFS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов eBPF ΠΈ bcc, Π° сСйчас ΠΆΠ΄Π΅ΠΌ ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ 9 апрСля ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ наш ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ β€” Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Ρ€ΠΎΠ·Π΄Π΅Ρ†ΠΊΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com