Если я правильно прочитал документацию Ext4, начиная с Linux 3.8, можно хранить данные непосредственно в inode в вазе очень маленького файла.
Я ожидал, что такой файл будет иметь размер 0 блоков, но это не так.
#creating a small file
printf "abcde" > small_file
#checking size of file in bytes
stat --printf='%s\n' small_file
5
#number of blocks used by files
stat --printf='%b\n' small_file
8
Я ожидаю, что этот последний номер здесь будет 0. Я что-то упустил?
Ответы:
Чтобы включить встроенные данные
ext4
, вам понадобитсяe2fsprogs
1.43 или более поздняя версия. Поддержка встроенных данных была добавлена в марте 2014 года вgit
хранилище, но была выпущена только в мае 2016 года.Как только вы это сделаете, вы можете запустить
mke2fs -O inline_data
на соответствующем устройстве, чтобы создать новую файловую систему с поддержкой встроенных данных; это сотрет все ваши данные . По-видимому, пока невозможно активировать встроенные данные в существующей файловой системе (по крайней мере,tune2fs
не поддерживает).Теперь создайте небольшой файл и запустите
debugfs
на файловой системе.cd
в соответствующий каталог и запуститьstat smallfile
; вы получите что-то вродеКак вы можете видеть, данные были сохранены в строке. Это также можно увидеть с помощью
df
; перед созданием файла:После создания файла:
Файл находится там, он использует индекс, но доступное место для хранения не изменилось.
источник
Если ваша
e2fsprogs
версия слишком старая или файловая система уже создана, вы можете установить флаг функции с помощьюdebugfs
(флаг поддерживается с 2012 года, тогдаmke2fs
как другие инструменты добавили поддержку в 2014+, и многие дистрибутивы по-прежнему не поставляют их в 2016 году В том числе Ubuntu Xenial).Для этого откройте раздел в режиме чтения-записи:
И затем добавьте флаг:
(или
feature -inline_data
отключить его, но это, вероятно, очень плохая идея, если уже есть встроенные файлы!)Однако помните, что если ваша система
e2fsprogs
старая, вы загоняете себя в угол, поскольку утилиты (включаяdebugfs
себя) откажутся прикасаться к такой файловой системе после установки флага.Также обратите внимание, что current
GRUB
(2.02) не поддерживает это, поэтому установка его в загрузочном разделе сделает систему не загружаемой. Есть неочищенный патч для добавления поддержки.На момент написания этой статьи файлы и каталоги
inode_size-128
могли быть встроены до 128 байтов для 256-байтовых inode по умолчанию. Вы можете использовать большие inode, если хотите больше встроенных.источник