L'utilità mkfs viene utilizzata per creare filesystem (ext2, ext3, ext4, ecc.) sul tuo sistema Linux. Dovresti specificare il nome del dispositivo in mkfs su cui creare il filesystem.
ATTENZIONE:L'esecuzione di questi comandi distruggerà tutti i dati sul tuo filesystem. Quindi, prova questi comandi solo su un sistema di test in cui non ti interessa perdere i tuoi dati.
1. Visualizza i comandi disponibili di Filesystem Builder
I costruttori di filesystem (comandi mkfs*) vengono solitamente cercati in directory come /sbin/, /sbin/fs, /sbin/fs.d, /etc/fs e /etc. Se non lo trova, cerca infine le directory trovate nella variabile PATH.
L'elenco seguente mostra i comandi mkfs* disponibili in un sistema.
# cd /sbin # ls mkfs* mkfs mkfs.bfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.minix mkfs.msdos mkfs.ntfs mkfs.vfat
Se non conosci il filesystem, leggi Ext2 vs Ext3 vs Ext4.
2. Crea un filesystem su un dispositivo specifico
Per costruire il filesystem usando il comando mkfs, gli argomenti richiesti sono device-filename e filesystem-type come mostrato di seguito. L'esempio seguente crea un filesystem ext3 sulla partizione /dev/sda6.
# mkfs -t ext3 /dev/sda6 mke2fs 1.42 (29-Nov-2011) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1120112 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
Si noti che il tipo di filesystem predefinito per il comando mkfs è ext2. Se non specifichi l'opzione "-t", creerà il filesystem ext2.
Inoltre, puoi utilizzare il metodo discusso in precedenza per identificare se hai un file system ext2 o ext3 o ext4.
3. Crea un filesystem con Journal usando l'opzione -j
L'esempio riportato di seguito crea un file system con journaling.
# mke2fs /dev/sda6 -j mke2fs 1.42 (29-Nov-2011) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1120112 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
Quando non hai bisogno del journaling su un filesystem, esegui il comando mke2fs come mostrato di seguito.
# mke2fs /dev/sda6
4. Verifica la presenza di blocchi danneggiati su un dispositivo
Prima di creare un filesystem, puoi verificare che non ci siano blocchi danneggiati sul sistema usando l'opzione -c come mostrato di seguito. Questo eseguirà un test di sola lettura sul filesystem per assicurarsi che non ci siano blocchi danneggiati. Puoi anche eseguire un test di lettura-scrittura per verificare che non ci siano blocchi danneggiati usando l'opzione "-c -c". Tieni presente che questo sarà più lento dell'opzione "-c".
# mke2fs -c /dev/sda6 mke2fs 1.42 (29-Nov-2011) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1120112 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
5. Forza per creare un filesystem su una partizione montata
Si consiglia di non eseguire alcuna operazione sul filesystem su una partizione montata. Ma puoi comunque forzarlo a creare un filesystem su una partizione in uso o su una partizione montata con l'opzione -F come mostrato di seguito.
# mke2fs -F /dev/sda6
6. Byte per gruppo di inode su una partizione
Potresti voler elencare gli inode usati e disponibili nella partizione come mostrato di seguito usando il comando df.
# df -i /dev/sda6 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda6 1120112 11 1120101 1% /mydata
Come visto sopra, su /dev/sda6 IUsed è 11 su 1120112. Dopo che il nuovo file è stato creato su di esso, il valore di IUsed cambia di conseguenza, come mostrato di seguito.
# cd /mydata # touch sample.txt # ls sample.txt # df -i /dev/sda6 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda6 1120112 12 1120100 1% /mydata
Puoi anche usare il comando tune2fs per visualizzare i dettagli dell'Inode:
# tune2fs -l /dev/sda6 | grep Inode Inode count: 1120112 Inodes per group: 8176 Inode blocks per group: 511 Inode size: 256
Per modificare l'inode-per-gruppo della partizione sopra (es:/dev/sda6) usa l'opzione -i come segue:
# mke2fs -i 8192 /dev/sda6 mke2fs 1.42 (29-Nov-2011) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 2240224 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 16352 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
Come visto sopra, il bytes-per-inode viene modificato in 8192 dal valore predefinito di 16384. Ora il limite di inode della partizione è stato aumentato come mostrato di seguito.
# df -i /dev/sda6 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda6 2240224 11 2240213 1% /mydata # tune2fs -l /dev/sda6 | grep Inode Inode count: 2240224 Inodes per group: 16352 Inode blocks per group: 1022 Inode size: 256
La modifica del valore di inodes-per-group non è altro che un impatto sul numero di file da mantenere nella partizione. La riduzione di questo valore serve per aumentare il numero di file su una partizione.
7. Modifica la dimensione dell'inode su una partizione
È possibile modificare la dimensione di un Inode su una partizione utilizzando l'opzione I e i come mostrato di seguito.
# mke2fs -I 128 -i 8192 /dev/sda6 mke2fs 1.42 (29-Nov-2011) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 2240224 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 16352 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
Come visto sopra, la dimensione viene modificata da 256 a 128 e porta ad aumentare il conteggio totale degli Inode su una partizione:
# tune2fs -l /dev//sda6 | grep Inode Inode count: 2240224 Inodes per group: 16352 Inode blocks per group: 511 Inode size: 128
8. Imposta l'etichetta del volume per la partizione
È possibile creare un nome/etichetta per una partizione utilizzando l'opzione -L. Nell'esempio seguente, stiamo assegnando DATA come etichetta per la partizione /dev/sda6.
# mke2fs -L DATA /dev/sda6 mke2fs 1.42 (29-Nov-2011) Filesystem label=DATA OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1120112 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done
È possibile visualizzare il nome dell'etichetta della partizione sopra utilizzando il comando e2label come mostrato di seguito:
# e2label /dev/sda6 DATA
Un altro modo per visualizzare l'etichetta di una partizione è usare il comando blkid come mostrato di seguito:
# blkid /dev/sda6 /dev/sda6: LABEL="DATA" UUID="0de74d35-6050-4838-99b0-46cb1d518da8" TYPE="ext2"
9. Simula la creazione di un filesystem
Quando si esegue il comando mkfs, mostra il contenuto come farebbe su stdout. Puoi persino visualizzare quei messaggi su stdout senza creare effettivamente un filesystem usando l'opzione -n come mostrato di seguito:
# mkfs -t ext3 -n /dev/sda6 mke2fs 1.42 (29-Nov-2011) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1120112 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
10. Crea un filesystem con un numero specifico di Inode
mkfs fornisce la possibilità di creare il filesystem con il numero di inode desiderati. Ti consente di sovrascrivere il numero predefinito di inode per filesystem in base al rapporto byte per inode come mostrato di seguito.
# mkfs -t ext3 -v -N 700000 /dev/sda6 mke2fs 1.42 (29-Nov-2011) fs_types for mke2fs.conf resolution: 'ext3' Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 701440 inodes, 4476416 blocks 223820 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 137 block groups 32768 blocks per group, 32768 fragments per group 5120 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
Quanto sopra può essere verificato utilizzando sia il comando tune2fs che df come mostrato di seguito.
# tune2fs -l /dev/sda6 | grep -i inode Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file Inode count: 701440 Free inodes: 701429 Inodes per group: 5120 Inode blocks per group: 320 First inode: 11 Inode size: 256 Journal inode: 8 Journal backup: inode blocks # df -i /dev/sda6 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda6 701440 11 701429 1% /mnt