Linux は、通常のファイルを仮想ブロック デバイスにマップするループ デバイスと呼ばれる特別なブロック デバイスをサポートしています。これにより、ファイルを別のファイル内の「仮想ファイル システム」として使用できます。 Linux では、単一のファイル内にファイル システムを作成できます。これらのストレージ デバイスは、/dev/device_name などのデバイス ファイルとして利用できます。 .
ファイルを作成
1. 最初のステップは、目的のサイズのファイルを作成することです。次のコマンドは、サイズが 1 GB のファイルを作成します:
# 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. 作成したファイルのサイズを確認します。
# du -sh loopbackfile.img 1000M loopbackfile.img
ループ デバイスを作成する
1. 次のステップは、ファイルを使用してループ デバイスを作成することです。コマンド「losetup」を使用します ” ループデバイス “loop0” を作成します
# losetup -fP loopbackfile.img
ここで、
-f – 最初の未使用のループ デバイスを見つけます。ファイル引数が存在する場合、このデバイスを使用します。それ以外の場合は、その名前を出力します。
-P – 新しく作成されたループ デバイスのパーティション テーブルをカーネルがスキャンするように強制します。
2. 上記のコマンドを使用して生成されたループ デバイスを出力するには、「losetup -a」を使用します。
# losetup -a /dev/loop0: [64769]:4199216 (/root/loopbackfile.img)
ファイルシステムを作成
1. 次に、ループバック デバイスに ext4 ファイルシステムを作成します。
# 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
ループバック ファイルシステムをマウントする
1. これで、ループバック ファイルシステムをディレクトリにマウントできます。 「-o ループ」 追加のオプションは、ループバック ファイルシステムをマウントするために使用されます。
# mkdir /loopfs # mount -o loop /dev/loop0 /loopfs
2. 以下のコマンドを使用して、新しいマウント ポイントのサイズとファイル システムのタイプを確認します。
# 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)
ループ デバイスの削除
新しいファイル システムを削除する場合は、次の手順に従います。
1.ディレクトリ /loopfs をアンマウントして削除します
umount /loopfs rmdir /loopfs
2.「losetup -d」コマンドで作成したループバックデバイス「loop0」を削除します。
# losetup -d /dev/loop0
3. 最後に、ループ デバイスの作成に使用されたファイル「/root/loopbackfile.img」を削除します。
# rm /root/loopbackfile.img
ループ ファイルシステムで暗号化を有効にする
「losetup」では、暗号化されたファイルシステムを取得するためにデータ暗号化を有効にすることもできます。以下に示すように、暗号化されたループ デバイス si を作成するための構文:
# losetup [ -e encryption ] loop_device file
次の暗号化アルゴリズムが受け入れられます:
- なし 暗号化を使用しません (デフォルト)。
- XOR 単純な XOR 暗号化を使用します。
- DES DES 暗号化を使用します。
DES 暗号化は、オプションの DES パッケージがカーネルに追加されている場合にのみ使用できます。 DES 暗号化は、辞書攻撃からパスワードを保護するために使用される追加の開始値を使用します。
許容される最大 Lopback デバイス
8 つを超えるループバック デバイスを作成しているときに、「そのようなデバイスはありません」というエラー メッセージが表示される場合があります。これは、使用可能なループ デバイスの量によって制限されているために発生します。システムに応じて、「options loop max_loop=X」を CentOS/RHEL 5 の /etc/modprobe.conf に追加するか、disk.conf のような名前の新しいファイルを作成します。 ディレクトリ /etc/modprobe.d 内 CentOS/RHEL 6. (X は必要なループ デバイスの番号)。