Понять размер tmpfs
Мне нужно использовать tmpfs на Linux. У меня есть несколько файлов для воспроизведения, я знаю, сколько у меня файлов, и я знаю размер каждого файла. Как я могу определить размер моих tmpfs?
Я использую программу монтирования: mount -t tmpfs -o size=?? name_tmpfs /mnt/mountpoint_tmpfs
Я пытаюсь понять, какое значение использовать для размера. Я сделал тест, создав tmpfs размером 4096 байт (размер страницы), я создал в нем файл, но если я хочу его заполнить (всего одним байтом в каждом примере), у меня возникает "ошибка записи в swap" ... Я не понимаю, какой размер мне нужен для хранения 1-байтового файла, поэтому для моих "рабочих файлов" я полностью потерялся!
Каждый учебник, который я нашел, использует случайный большой размер для своих примеров, но я действительно хочу понять механизм и понять, какой размер tmpfs мне нужен для моих рабочих файлов (я знаю, сколько и каждого размера я могу найти решение, верно?).
Спасибо за чтение:)
1 ответ
Файловая система содержит данные и метаданные. Метаданные обычно имеют фиксированный размер и выделяются при создании fs (nr_inodes
опция монтирования tmpfs). Данные также занимают фрагменты фиксированного размера, независимо от фактического размера файла. Чтобы увидеть фактическое использование данных, du -s
сделаю большую работу
root@localhost:/run/shm# echo > x; du -sh x
4.0K x
Как вы можете видеть, в моем ядре tmpfs использует 4096 байт для хранения файлов, поэтому каждый размер файла округляется до 4096 или умножается на него. Я создал tmpfs размером 4 КБ и смог создать один файл размером 1 байт, но не более того, что ожидается. Я также смог создать 960 тыс. Пустых файлов, что является пределом inode по умолчанию для tmpfs в моей системе, доказывая, что хранилище данных и метаданные разделены.