Linux supporta uno speciale dispositivo a blocchi chiamato dispositivo loop, che mappa un file normale su un dispositivo a blocchi virtuale. Ciò consente di utilizzare il file come "file system virtuale" all'interno di un altro file. Con Linux è possibile creare un file system all'interno di un singolo file. Questi dispositivi di archiviazione sono disponibili come file di dispositivo come /dev/device_name .
Crea un file
1. Il primo passo è creare un file della dimensione desiderata. Il comando seguente creerà un file di 1 GB di dimensione:
# dd if=/dev/zero of=loopbackfile.img bs=100M count=10 10+0 records in 10+0 records out 1048576000 bytes (1.0 GB) copied, 1.26748 s, 827 MB/s
2. Verifica la dimensione del file che hai appena creato.
# du -sh loopbackfile.img 1000M loopbackfile.img
Crea il dispositivo loop
1. Il passaggio successivo consiste nel creare un dispositivo loop con il file. Utilizzare il comando "perdita ” per creare un dispositivo loop “loop0”
# losetup -fP loopbackfile.img
Ecco,
-f – trova il primo dispositivo loop inutilizzato. Se è presente un argomento file, utilizzare questo dispositivo. In caso contrario, stampane il nome.
-P – forza il kernel a scansionare la tabella delle partizioni sul dispositivo loop appena creato.
2. Per stampare il dispositivo loop generato utilizzando il comando precedente, utilizzare "losetup -a".
# losetup -a /dev/loop0: [64769]:4199216 (/root/loopbackfile.img)
Crea il filesystem
1. Ora creiamo un filesystem ext4 sul dispositivo di loopback.
# mkfs.ext4 /root/loopbackfile.img mke2fs 1.42.9 (28-Dec-2013) /root/loopbackfile.img is not a block special device. Proceed anyway? (y,n) y Discarding device blocks: done Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 64000 inodes, 256000 blocks 12800 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=262144000 8 block groups 32768 blocks per group, 32768 fragments per group 8000 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
Monta il filesystem di loopback
1. Possiamo ora montare il filesystem di loopback su una directory. Il "-o loop ” un'opzione aggiuntiva viene utilizzata per montare i filesystem di loopback.
# mkdir /loopfs # mount -o loop /dev/loop0 /loopfs
2. Verifica la dimensione del nuovo punto di montaggio e il tipo di filesystem utilizzando i comandi seguenti.
# df -hP /loopfs/ Filesystem Size Used Avail Use% Mounted on /dev/loop1 969M 2.5M 900M 1% /loopfs
# mount | grep loopfs /dev/loop0 on /loopfs type ext4 (rw,relatime,seclabel,data=ordered)
Rimozione del dispositivo ad anello
Se desideri rimuovere il nuovo filesystem, procedi nel seguente modo:
1. Smonta ed elimina la directory /loopfs
umount /loopfs rmdir /loopfs
2. Elimina il dispositivo di loopback "loop0" creato utilizzando il comando "losetup -d".
# losetup -d /dev/loop0
3. Infine rimuovere il file “/root/loopbackfile.img” utilizzato per creare il dispositivo loop.
# rm /root/loopbackfile.img
Abilita la crittografia sul filesystem di loop
'losetup' consente anche di abilitare la crittografia dei dati per ottenere un filesystem crittografato. La sintassi per creare un dispositivo loop crittografato è come mostrato di seguito:
# losetup [ -e encryption ] loop_device file
Sono accettati i seguenti algoritmi di crittografia:
- NESSUNO non utilizzare la crittografia (impostazione predefinita).
- XOR usa una semplice crittografia XOR.
- DES usa la crittografia DES.
La crittografia DES è disponibile solo se il pacchetto DES opzionale è stato aggiunto al kernel. La crittografia DES utilizza un valore iniziale aggiuntivo che viene utilizzato per proteggere le password dagli attacchi del dizionario.
Dispositivo Lopback massimo consentito
Potresti ricevere un messaggio di errore "nessun dispositivo di questo tipo" durante la creazione di più di 8 dispositivi di loopback. Ciò accade perché sei limitato dalla quantità di dispositivi loop disponibili. A seconda del tuo sistema, aggiungi 'options loop max_loop=X' a /etc/modprobe.conf su CentOS/RHEL 5 o crea un nuovo file chiamato come disk.conf nella directory /etc/modprobe.d su CentOS/RHEL 6. (Dove X è il numero di dispositivi loop necessari).