GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare la nuova funzione di dati inline ext4? (memorizzazione dei dati direttamente nell'inode)

Per abilitare i dati in linea in ext4, dovrai utilizzare e2fsprogs 1.43 o successivo. Il supporto per i dati in linea è stato aggiunto a marzo 2014 al repository Git, ma è stato rilasciato solo a maggio 2016.

Una volta ottenuto questo, puoi eseguire mke2fs -O inline_data su un dispositivo appropriato per creare un nuovo filesystem con supporto dati in linea; questo cancellerà tutti i tuoi dati . Apparentemente non è ancora possibile attivare i dati inline su un filesystem esistente (almeno, tune2fs non lo supporta).

Ora crea un piccolo file ed esegui debugfs sul file system. cd nella directory appropriata ed eseguire stat smallfile; otterrai qualcosa come

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

Come puoi vedere, i dati sono stati archiviati in linea. Questo può essere visto anche usando df; prima di creare il file:

% 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

Dopo aver creato il file:

% 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

Il file è lì, utilizza un inode ma lo spazio di archiviazione disponibile non è cambiato.


Se il tuo e2fsprogs la versione è troppo vecchia o il filesystem è già stato creato, puoi impostare il flag della funzionalità usando debugfs (il flag è supportato dal 2012, mentre mke2fs e gli altri strumenti hanno aggiunto il supporto su 2014+ e molte distribuzioni ancora non li spediscono nel 2016, incl. Ubuntu Xenial).

Per fare ciò, apri la partizione in modalità lettura-scrittura:

debugfs -w /dev/sdxx

E poi aggiungi il flag:

feature inline_data

(o feature -inline_data per disattivarlo, ma probabilmente è una pessima idea se ci sono già dei file in linea!)

Nota, tuttavia, se il tuo sistema e2fsprogs sono vecchi, ti stai mettendo all'angolo, dal momento che le utility (incluso debugfs stesso) si rifiuterà di toccare tale filesystem dopo aver impostato il flag.

Si noti inoltre che l'attuale GRUB (2.02) non lo supporta, quindi impostarlo sulla partizione di avvio renderà il sistema non avviabile. C'è una patch separata per aggiungere il supporto.

Al momento della stesura di questo documento, i file e le directory fino a inode_size-128 può essere inline, quindi 128 byte per gli inode predefiniti da 256 byte. Puoi usare inode più grandi se vuoi più inlining.


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Inode e il filesystem di Linux

  4. Come aumentare il numero di inode in un filesystem Ext4?

  5. Come trovare l'offset di un filesystem Ext4?

Come utilizzare il comando superiore in Linux

Come utilizzare il comando Ping di Linux

Come usare il comando nmap

Come spostare la partizione Ext4 davanti alla partizione di avvio?

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?