仮想ディスクでパーティションの作成とマウント
今回は、ファイルを仮想ディスク(ブロックデバイス)化し、パーティションとファイルシステムを作成する。(おまけでマウントまで行う)
OSはUbuntu16.04
準備
$ sudo -i # mkdir /tmp/sample # cd /tmp/sample
仮想ディスクを作成する
仮想ディスクとなるファイルdisk.imgを作成し、ddコマンドで1000MBまでファイルをゼロ埋め。
# touch disk.img # dd if=/dev/zero of=disk.img bs=1M count=1000
先ほど作成したdisk.imgをループバックデバイスとして登録する。
# losetup /dev/loop0 disk.img
ループバックデバイスがブロックデバイスとして認識されているか確認。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 119.2G 0 disk ├─sda1 8:1 0 487M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 118.8G 0 part ├─ubuntu--vg-root 252:0 0 114.9G 0 lvm / └─ubuntu--vg-swap_1 252:1 0 3.9G 0 lvm [SWAP] loop0 7:0 0 1000M 0 loop ★認識されている
パーティションを作成する
先ほど作成したループバックデバイス(/dev/loop0)にディスクラベルを作成する。(今回はmsdos)
ディスクサイズが2TBを超える場合は、ディスクラベルにgptを設定する。
# parted -s -a optimal /dev/loop0 mklabel msdos
続いてパーティションを作成する。今回は基本パーティションを3つ作成。
# parted -s -a optimal /dev/loop0 mkpart primary 0% 30% # parted -s -a optimal /dev/loop0 mkpart primary 30 60% # parted -s -a optimal /dev/loop0 mkpart primary 60% 100%
パーティションが作成されているか確認する。
# parted /dev/loop0 p モデル: Loopback デバイス (loopback) ディスク /dev/loop0: 1049MB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ★ディスクラベルはmsdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 1049kB 315MB 314MB primary ★0%-30%までの基本パーティション 2 315MB 629MB 315MB primary ★30%-60%までの基本パーティション 3 629MB 1049MB 419MB primary ★60%-100%までの基本パーティション
パーティションを作成すると、ループバックデバイスにもパーティションに対応するデバイスが自動的に生成される。
# ls -alF /dev/loop0p* brw-rw---- 1 root disk 259, 0 10月 5 22:18 /dev/loop0p1 brw-rw---- 1 root disk 259, 1 10月 5 22:18 /dev/loop0p2 brw-rw---- 1 root disk 259, 2 10月 5 22:18 /dev/loop0p3
ファイルシステムを作成する。
ubuntu16.04のデフォルトのファイルシステムであるext4で各パーティションをフォーマットする。
# mkfs -t ext4 /dev/loop0p1 # mkfs -t ext4 /dev/loop0p2 # mkfs -t ext4 /dev/loop0p3
ファイルシステムができているか確認する。
# parted /dev/loop0 p モデル: Loopback デバイス (loopback) ディスク /dev/loop0: 1049MB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos ディスクフラグ: 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 1049kB 315MB 314MB primary ext4 ★ext4で作成されている 2 315MB 629MB 315MB primary ext4 3 629MB 1049MB 419MB primary ext4
パーティションをマウント
マウント用のディレクトリを作成する。
# mkdir part{1,2,3}
# mount -t ext4 /dev/loop0p1 /tmp/sample/part1 # mount -t ext4 /dev/loop0p2 /tmp/sample/part2 # mount -t ext4 /dev/loop0p3 /tmp/sample/part3
マウントされているか確認する。
# df -Th Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 385M 6.2M 379M 2% /run /dev/mapper/ubuntu--vg-root ext4 113G 54G 54G 50% / tmpfs tmpfs 1.9G 4.8M 1.9G 1% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 ext2 472M 200M 249M 45% /boot cgmfs tmpfs 100K 0 100K 0% /run/cgmanager/fs tmpfs tmpfs 385M 76K 385M 1% /run/user/1000 /dev/loop0p1 ext4 282M 2.1M 261M 1% /tmp/sample/part1 ★マウントされている /dev/loop0p2 ext4 283M 2.1M 262M 1% /tmp/sample/part2 /dev/loop0p3 ext4 380M 2.3M 354M 1% /tmp/sample/part3
ということで、今回はこんなところで一通り終了。
後片付け
パーティションをアンマウントする。
# umount /tmp/sample/part1 # umount /tmp/sample/part2 # umount /tmp/sample/part3
ループバックデバイスを解除する。
# losetup -d /dev/loop0
確認
# losetup -l ★何も表示されなければうまく解除出来ている