Дизайн файловой системы: необходимость номера индексного дескриптора и таблицы [закрыто]

На сервере, получающем сообщения системного журнала, на UDP-порт 514 вам нужно будет добавить следующую конфигурацию:

$ModLoad imudp
$UDPServerRun 514
$AllowedSender UDP, 10.42.0.0/15 127.0.0.1

$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source, !isequal, "localhost" -?RemoteStore
:source, isequal, "last" ~

Убедитесь, что вы разрешили правильных отправителей ( замените 10.42.0.0/15), перезапустите rsyslog. Затем вы найдете свои удаленные журналы в / var / log / remote / $ hostname / YYYY-MM-DD .


Кроме того, особенности CentOS: вполне вероятно, что ваш брандмауэр включен. Если это так, возможно, входящий трафик отбрасывается на UDP-порт 514. Проверьте состояние вашего брандмауэра ( systemctl status firewall ). Если включено, попробуйте добавить правило.

# firewall-cmd --get-default-zone
public
# firewall-cmd --zone=public --add-port=514/udp
# firewall-cmd --permanent
# firewall-cmd --reload

Вы можете проверить наличие SELinux. Если он включен, убедитесь, что он разрешает rsyslog получать трафик UDP на порт 514 .

1
17.09.2018, 03:24
1 ответ

Если я вас правильно понял, вы хотите заменить номер инода адресом блока. Это означает (1 )один индексный дескриптор на блок, что занимает много места (индексный дескриптор не такой уж большой )и (2 )это не так уж отличается от использования индексного дескриптора число :Индексный дескриптор имеет фиксированный размер, поэтому блок содержит известное число nиндексных дескрипторов. Итак, если вы разделите номер инода на n(, что в идеале является степенью двойки, так что это просто сдвиг ), частное будет номером блока инода (плюс адрес диска, с которого начинается таблица инодов ), а остаток — это индекс инода внутри этого блока.

Чтобы понять смысл таблицы инодов, подумайте о том, какие данные хранятся в таблице инодов. :Это такие атрибуты, как владелец, группа, разрешения и метки времени, а также индексы и косвенные индексы блоков данных. Вы должны хранить их где-то, и вы не можете хранить их вместе с данными файла.

Итак, если вы хотите разработать собственную файловую систему, первый вопрос, на который вы должны ответить, это «как идентифицировать блоки данных, принадлежащие файлу?» и второй вопрос: «Где мне хранить такие атрибуты, как право собственности, разрешения и временные метки?». И да, вы можете использовать для этого другие схемы, чем иноды.

Редактировать

Что касается

why not just use its address, like we do with main memory and objects therein?

Как я уже писал, в основном у вас есть адрес блока -, вам просто нужно сначала разделить и добавить смещение. Если вы в принципе добавите смещение к каждому иноду, «номер инода» будет намного больше, и у вас будет постоянное значение в старших битах, которое повторяется в каждом номере инода. Это, в свою очередь, сделает каждую запись каталога больше.

Не забывайте, что файловая система unix была изобретена, когда размер жесткого диска составлял около 20 Мбайт или около того. Вы не хотите терять место, поэтому упаковываете все плотно и избегаете избыточности. Добавлять смещение каждый раз, когда вы обращаетесь к индексному узлу, дешево.Хранение этого смещения как части каждой ссылки на «номер инода» обходится дорого.

И самое интересное, что хотя схема inode была придумана для небольших жестких дисков по сегодняшним меркам, она хорошо масштабируется, и даже на жестких дисках в терабайтном диапазоне «просто работает».

2
27.01.2020, 23:31

Теги

Похожие вопросы