ほとんどの場合、「losetup」を使用してループバック デバイスを作成し、「-o loopback」オプションを使用してマウントするだけです。ただし、ループバック ファイルを作成し、それをパーティション分割し、最後にサブパーティションをマウントする場合、このオプションは使用できません。ループバック イメージ内にパーティションを作成する方法を見てみましょう。
ループバック デバイスを作成しています
1. まず、「dd」コマンドを使用して約 1GB のサイズのファイルを作成します。
# 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. 上記の手順で作成したファイルの上にループバック デバイスを作成します。
# losetup -fP loopbackfile.img
3. 上記のコマンドを使用して生成されたループ デバイスを出力するには、「losetup -a」を使用します。
# losetup -a /dev/loop0: [64769]:4199216 (/root/loopbackfile.img)
fdisk を使用してループバック イメージ内にパーティションを作成する
1. fdisk コマンドを使用して、ループバック デバイス /dev/loop0 にパーティションを作成します。以下に示すように、サイズ 500MB のプライマリ パーティションが作成されます。
# fdisk /dev/loop0 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x4d455ea1. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-2047999, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2047999, default 2047999): +500M Partition 1 of type Linux and of size 500 MiB is set
2. パーティション テーブルを保存し、fdisk ユーティリティを終了します。
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
ファイルシステムの作成とマウント
1. 上記の手順で作成した /dev/loop0p1 パーティションに ext4 ファイルシステムを作成します。
# mkfs.ext4 /dev/loop0p1 mke2fs 1.42.9 (28-Dec-2013) Discarding device blocks: done Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 128016 inodes, 512000 blocks 25600 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=34078720 63 block groups 8192 blocks per group, 8192 fragments per group 2032 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
2. ファイルシステムを目的のディレクトリにマウントします。
# mkdir /loopfs # mount -o loop /dev/loop0p1 /loopfs
3. マウント ポイントのサイズとファイル システムの種類を確認します。
# df -hP /loopfs Filesystem Size Used Avail Use% Mounted on /dev/loop1 477M 2.3M 445M 1% /loopfs
# mount | grep loopfs /dev/loop0p1 on /loopfs type ext4 (rw,relatime,seclabel,data=ordered)Linux で仮想ブロック デバイス (ループ デバイス/ファイルシステム) を作成する方法