2016-04-22 1 views
0

Я пытаюсь понять, как работает файловая система UNIX в отношении inodes. Как я понимаю, каталог представлен как просто таблица с записью формы [name: inode] для каждого подкаталога или файла.Как файловая система UNIX формирует структуру с узлами

Где я смущен, так это то, как эти каталоги образуют структуру. Если бы у меня был каталог «root», содержащий подкаталог «home», который содержит файл «file.txt», то я полагаю, что корневой каталог будет иметь запись ['home' :(home related inode)], но тогда как эта ссылка в таблицу «home»?

Любая помощь или руководство будет оценено, Бен

ответ

2

Ваше понимание в основном правильно. Вот изображение, которое может помочь. Я буду считать, что корневой каталог, как известно, инода 1. Таким образом, мы могли бы иметь:

инф.узлов 1:

type: directory 
contents: 
    usr  17 
    etc  49 
    home  57 

инф.узлов 57:

type: directory 
contents: 
    dmr  201 
    scs  857 
    ben  981 

инф.узлов 981:

type: directory 
contents: 
    .bashrc 1045 
    projects 1191 
    file.txt 2043 

инф.узлов 2043:

type: file 
contents: 
    This is 
    my text file. 

Здесь я показал, что полный путь (или, по крайней мере, полный путь) вашего текстового файла - /home/ben/file.txt.

(я также сделал одно большое облегчение. Как правило, содержимое файла являются не хранятся в индексном дескрипторе, а в других дисковых блоков, с инода, содержащий указатели на эти другие блоки.)

+0

Спасибо, это очень полезно! Вы отмечаете, что содержимое хранится с помощью указателей на блоки блоков, являются ли номера индексных номеров указателями на другие местоположения inode на диске или они управляются каким-то другим способом? – BenJacob

+0

@BenJacob Это я менее уверен, и я думаю, что разные реализации файловой системы делают это по-разному. Я думаю, что обычно существует структурированное сопоставление между инодами и блоками дисков. Например, блок 100 диска может содержать inodes 10-19, блок 200 диска может содержать inodes 20-29 и т. Д. Записи каталога в каталоге inodes сопоставляются с номерами inode, указатели блоков диска в inodes указывают на номера блоков диска. Чтобы преобразовать номер inode 'i' в блок диска, возьмите' (i/10) * 100', а затем посмотрите на '(i% 10)' -й inode в этом блоке. Или что-то типа того. –

+0

Я вижу, что в этой конфигурации я прав, полагая, что количество индексов и блоков фиксировано, и когда мы создаем каталог, мы просто заполняем пустой индексный дескриптор новой информацией? – BenJacob

Смежные вопросы