Как использовать новую функцию Ext4 Inline Data? (сохранение данных непосредственно в inode)

Если я правильно прочитал документацию 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. Я что-то упустил?

2 Solutions collect form web for “Как использовать новую функцию Ext4 Inline Data? (сохранение данных непосредственно в inode)”

Чтобы включить встроенные данные в ext4 , вам нужно будет использовать версию e2fsprogs «WIP» (клонировать репозиторий git ). Поддержка встроенных данных была добавлена ​​в марте 2014 года и еще не выпущена.

После этого вы можете запустить mke2fs -O inline_data на соответствующем устройстве для создания новой файловой системы с встроенной поддержкой данных; это сотрет все ваши данные . По-видимому, пока невозможно активировать встроенные данные в существующую файловую систему (по крайней мере, tune2fs не поддерживает ее).

Теперь создайте небольшой файл и запустите debugfs (из недавно созданных e2fsprogs ) в файловой системе. cd в соответствующий каталог и запустить stat smallfile ; вы получите что-то вроде

 Inode: 32770 Type: regular Mode: 0644 Flags: 0x10000000 Generation: 2302340561 Version: 0x00000000:00000001 User: 1000 Group: 1000 Size: 6 File ACL: 0 Directory ACL: 0 Links: 1 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015 atime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015 mtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015 crtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015 Size of extra inode fields: 28 Extended attributes: system.data (0) Size of inline data: 60 

Как вы можете видеть, данные были сохранены в строке. Это можно также увидеть с помощью df ; перед созданием файла:

 % df -i /mnt/new Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/vg--large--mirror-inline 65536 12 65524 1% /mnt/new % df /mnt/new Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg--large--mirror-inline 1032088 1280 978380 1% /mnt/new 

После создания файла:

 % echo Hello >| smallfile % ls -l total 1 -rw-r--r-- 1 steve steve 6 Apr 22 07:35 smallfile % df -i /mnt/new Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/vg--large--mirror-inline 65536 13 65523 1% /mnt/new % df /mnt/new Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg--large--mirror-inline 1032088 1280 978380 1% /mnt/new 

Файл есть, он использует индексный дескриптор, но доступное место хранения не изменилось.

Если ваша версия e2fsprogs слишком стар, или файловая система уже создана, вы можете установить флаг функции с помощью debugfs (флаг поддерживается с 2012 года, тогда как mke2fs и другие инструменты добавили поддержку на 2014+ и многие дистрибутивы по-прежнему не отправляют их в 2016 году, включая Ubuntu Xenial).

Для этого откройте раздел в режиме чтения и записи:

 debugfs -w /dev/sdxx 

Затем добавьте флаг:

 feature inline_data 

(или feature -inline_data чтобы отключить его, но это, вероятно, очень плохая идея, если уже есть встроенные файлы!)

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

Также обратите внимание, что текущий GRUB (2.02) не поддерживает это, поэтому установка его на загрузочном разделе сделает систему не загружаемой. Для добавления поддержки есть несвязанный патч .

Начиная с момента написания, файлы и каталоги до inode_size-128 могут быть встроены, поэтому 128 байтов для по умолчанию 256-байтовых индексов. Вы можете использовать большие индексы, если хотите больше вложений.

  • Как узнать, является ли раздел ext2, ext3 или ext4?
  • Как удалить файл с именем «filen / ame» (с косой чертой) в файловой системе ext4 в debugfs?
  • Почему символические ссылки не имеют блоков данных, выделенных им в ext4fs?
  • Как исправить прерывистые ошибки «Нет места на устройстве» во время mv, когда у устройства достаточно места?
  • Проблемы с файловой системой
  • Как установщики дистрибуции избегают инициализации ext2 / 3/4?
  • Короткое чтение при попытке открыть / dev / sda2
  • Как сбросить размер метаданных папки без повторного создания папки?
  • Почему собственная группа не получает исполняемый бит?
  • Ошибка ETX4-fs при запуске
  • Преобразование старых / домашних файлов из ext3 в ext4
  • Linux и Unix - лучшая ОС в мире.