Inode, ссылки

inode

inode - это индексный дескриптор, который используется для хранения метаданных о файлах и каталогах файловой системы (например, ext4). Файловая система Linux содержит блоки для хранения данных и inodes, то есть любой объект ФС имеет имя и номер inode. Как правило, в inode указана следующая информация:

По умолчанию размер одного блока равен 4092 байта. В начале раздела расположен суперблок, в котором находятся метаданные всей файловой системы, а ним идут несколько зарезервированных блоков, а затем размещена таблица Inode и только после неё блоки с данными. Таким образом, все Inode размещены в начале раздела диска.
Директория - по сути, тот же файл, но в нем вместо содержимого файла хранится список имен файлов и их inode.
Inode уникальны на уровне раздела, т.е одинаковые inode могут быть только на разных разделах. Посмотреть номер inode можно с помощью команды ls -li. Первый столбец - это как раз номер inode.
У вас может произойти ситуация, когда на диске есть свободное место, но на него уже ничего нельзя записать. Это возможно в том случае, когда на диске есть файлы, размер которых меньше размера блока файловой системы. То есть на один файл тратится меньше одного блока, но используется все равно целая inode. Количество inode в файловой системе может быть фиксированным и задаваться при форматировании, а может быть и динамическим.

В какой ФС inode выделяются динамически?

Символьные ссылки

Символьные (они же символические, симлинки) ссылки - это специальный файл на файловой системе, который сам не содержит данных, а является ярлыком, указывающим на какой-то другой объект (файл или папку). Они могут понадобиться в том случае, когда у нас закончилось место на диске С (или в /home/user, например) и мы хотим продолжить писать в ту же директорию, но ничего при этом не перенастраивая. Символьные ссылки могут быть и в ОС Windows и в ОС Linux.
Для того, чтобы в Windows создать символьную ссылку необходимо воспользоваться командой mklink, после чего указываем имя ссылки и объект, на который она ссылается. Например, попробуем создать ссылку на блокнот в каталоге D:\test mklink D:\test\note c:\Windows\system32\notepad.exe (в командной стоке от имени администратора). Теперь для запуска блокнота можно использовать новую ссылку (по сути это будет просто ярлык на приложение). Аналогичным образом можно сделать симлинк на другой каталог mklink /D c:\Users\User\Desktop\user f:\User. В ОС Linux у команды создания ссылки немного другой синтаксис - сначала указывается источник файла, а потом уже имя ссылки ln -s /etc/ssh/ssh_config Desktop/ssh_conf, выглядеть это будет как обычный ярлык

118.jpg

Символьные ссылки:

  1. могут ссылаться на файлы и каталоги;
  2. после модификации источника (удаление, перемещение или переименования) становятся недействительными;
  3. при изменении прав доступа на источник, права на ссылку остаются прежними;
  4. могут ссылаться на другие (отличные от источника) разделы диска;
  5. права доступа и inode на ссылку отличаются от источника (для Linux)

Жесткие ссылки

Жесткая ссылка - это отдельный файл, который ведет к одному участку жесткого диска. При создании жесткой ссылки сам файл не копируется физически, но появляется под еще одним именем или же в еще одном месте. Жесткие ссылки можно создавать только на одном разделе диска. В Windows ссылки можно создавать командой mklink /H, в Linux - ln file link
Особенности жестких ссылок:

  1. работают в пределах одной файловой системы и одного раздела жесткого диска;
  2. можно ссылаться только на файлы;
  3. изменение прав на источник также отражается на правах ссылки;
  4. при перемещении или удалении источника ссылка продолжит работать;
  5. права доступа и inode у источника и ссылки - одинаковые.