Какво са Inodes и как работят в Linux
Какво е Inodes?
Inodes са основни структури от данни в Linux, които съхраняват информация за файловете и директориите в системата. Те съдържат информация като името на файла, размера му, атрибутите му и местоположението му на диска.
Inodes са организирани в поредица от таблици, наречени inode tables. Всяка inode table съдържа фиксиран брой inodes. Броят на inodes в inode table се определя от размера на inode table и размера на всеки inode.
Linux използва inodes, за да проследява файловете и директориите в системата. Когато потребителят създава нов файл или директория, Linux създава inode за него. Когато потребителят отваря файл, Linux използва inode, за да намери данните на файла на диска.
Структура на inode
Inode е структура от данни с следните полета:
- Inode number: Това е уникален номер, който идентифицира inode-а.
- File type: Това поле определя вида на файла или директорията.
- File mode: Това поле определя правата за достъп до файла или директорията.
- File size: Това поле определя размера на файла или директорията.
- File access time: Това поле записва кога файлът или директорията е бил достъпен за последно.
- File modification time: Това поле записва кога файлът или директорията е бил модифициран за последно.
- File change time: Това поле записва кога атрибутите на файла или директорията са били променени за последно.
- File location: Това поле записва местоположението на файла или директорията на диска.
Как работят Inodes в Linux
Когато потребителят създава нов файл или директория, Linux изпълнява следните стъпки:
- Linux намира свободна inode в inode table.
- Linux записва информация за файла или директорията в inode.
- Linux записва местоположението на inode в директорията, в която се намира файла или директорията.
Когато потребителят отваря файл, Linux изпълнява следните стъпки:
- Linux намира inode за файла.
- Linux зарежда данните на файла от диска в паметта.
Когато потребителят променя файл, Linux изпълнява следните стъпки:
- Linux записва промените в данните на файла на диска.
- Linux актуализира inode за файла, за да отрази промените.
Как се разпределят и освобождават Inodes?
Inodes се разпределят и освобождават от ядрото на Linux. Когато потребителят създава нов файл или директория, ядрото намира свободна inode в inode table. Inode table е поредица от последователни области от паметта, които съхраняват inodes.
Ядрото използва хеш таблица, за да намери свободна inode. Хеш таблицата е структура от данни, която съхранява информация за свободните inodes. Когато ядрото намери свободна inode, то записва информация за файла или директорията в inode.
Когато потребителят изтрие файл или директория, ядрото освобождава inode-а, който е свързан с файла или директорията. Ядрото маркира inode-а като свободен и го връща в хеш таблицата.
Inodes могат да бъдат освобождавани и автоматично от ядрото. Когато файл или директория не се използва за определен период от време, ядрото може да освободи inode-а, който е свързан с файла или директорията.
Разпределение на Inodes
Ядрото използва следните стъпки за разпределение на Inodes:
- Ядрото намира свободна inode в inode table.
- Ядрото проверява дали inode-а е подходящ за файла или директорията, който потребителят създава.
- Ако inode-а е подходящ, ядрото записва информация за файла или директорията в inode.
Освобождаване на Inodes
Ядрото използва следните стъпки за освобождаване на Inodes:
- Ядрото маркира inode-а като свободен.
- Ядрото връща inode-а в хеш таблицата.
Автоматично освобождаване на Inodes
Ядрото използва следните стъпки за автоматично освобождаване на Inodes:
- Ядрото проверява дали файлът или директорията, който е свързан с inode-а, се използва.
- Ако файлът или директорията не се използва за определен период от време, ядрото маркира inode-а като свободен.
Оптимизиране на използването на Inodes
За да се подобри производителността на файловата система, е важно да се оптимизира използването на Inodes. Това може да се направи чрез редовно почистване на файловата система и премахване на ненужните файлове и директории.
Когато се премахва файл или директория, е важно да се уверите, че inode-ът, който е свързан с файла или директорията, също е освободен. Ако inode-ът не е освободен, той ще се счита за зает и ядрото няма да може да го използва за нов файл или директория.
Можете да използвате инструменти като df и du, за да проверите използването на Inodes на файловата си система. Тези инструменти ще ви покажат колко inodes са свободни и колко inodes се използват.
Как да видиме номера на Inode за файл?
Има няколко начина да видите номера на inode за файл в Linux. Един от начините е да използвате командата stat.
stat /path/to/file
Тази команда ще отпечата информация за файла, включително номера на inode.
Друг начин да видите номера на inode за файл е да използвате командата ls с флага -i.
ls -i /path/to/file
Тази команда ще отпечата списък на файловете в текущата директория, включително номера на inode за всеки файл.
Можете също да използвате инструменти като fdisk или gdisk, за да видите номера на inode за файл. Тези инструменти се използват за управление на раздели на твърди дискове.
fdisk /dev/sda
Тази команда ще ви покаже списък на разделите на твърдия диск. За всеки раздел ще бъде отпечатан номера на inode за първия файл в раздела.
gdisk /dev/sda
Тази команда ще ви покаже същата информация като fdisk.
Ето пример за изход от командата stat:
File: /etc/passwd
Inode: 123456
Ето пример за изход от командата ls -i:
-rw-r--r-- 1 root root 100 2023-07-20 12:00 /etc/passwd
Ето пример за изход от командата fdisk:
Device Boot Start End Blocks Id System
/dev/sda1 2048 4096 2048 83 Linux
В този случай номера на inode за първия файл в първия раздел на твърдия диск е 2048.
Заключение
Inodes са важна част от файловата система в Linux. Те позволяват на Linux да проследява файловете и директориите в системата и да предоставя права за достъп и атрибути за файлове и директории.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut