【運用】ループバックマウントについて

2026年5月4日

こんにちは、キクです。

サーバを運用していると以下のような場面に遭遇することがあります。

  • OSのインストールイメージ(ISO)の中身をちょっと確認したい
  • ddコマンドで作ったディスクイメージをマウントしてファイルを救出したい

本記事では、そんな場面で登場する「ループバックマウント」について備忘録として残しておきます。

それでは、よろしくお願いします。

1. ループバックマウントとは?

通常、Linuxでファイルシステムを認識させるには、物理的なドライブが/dev/sda1といったデバイスファイルとして存在している必要がある

しかし、ループバックマウントを使うと、OSが「特定のファイルを仮想的なブロックデバイス(/dev/loopX)として扱う」ことができるようになる

これにより、ファイルがあたかも外付けHDDであるかのように振る舞い、マウントが可能になるという仕組み

2. 仕組みの裏側(ループデバイス)

ループバックマウントを実行した際には、OS内部では以下のようなことが起きている

1. 空いているループデバイス(/dev/loop0など)を探す
キク

これまで意識したことがなかったのですが、/dev配下には複数のループデバイスが存在していることを確認できました

kiku@ubuntu:~$ ll /dev/ |grep loop
crw-rw----  1 root disk     10, 237 Apr 22 06:10 loop-control
brw-rw----  1 root disk      7,   0 Mar 31 00:03 loop0
brw-rw----  1 root disk      7,   1 Mar 31 00:03 loop1
brw-rw----  1 root disk      7,   2 Mar 31 00:03 loop2
brw-rw----  1 root disk      7,   3 Mar 31 00:03 loop3
brw-rw----  1 root disk      7,   4 Mar 31 00:03 loop4
brw-rw----  1 root disk      7,   5 Mar 31 00:03 loop5
brw-rw----  1 root disk      7,   6 Mar 31 00:03 loop6
brw-rw----  1 root disk      7,   7 Mar 31 00:03 loop7

2. そのループデバイスを指定したファイルに紐付ける

3. ループデバイスをターゲットのディレクトリにマウントする

なぜ「ループデバイス」が必要なのか?

Linuxの世界には「すべてはファイルである」という大原則があるが、ファイルには大きく2つの階層がある

  1. 通常のファイル:テキストや画像など、中身を直接読み書きするもの
  2. ブロックデバイス:HDDやSSDのように、OSが「ディスク」として認識するもの

OS(カーネル)のmountコマンドは、原則として「ブロックデバイス」しかマウントできないが、ループデバイスがあることで「ただのファイルを、ブロックデバイスのフリをして振る舞わせる」ための仲介役(アダプター)として働いてくれる

ループデバイスは仮想的なSDカードリーダーのようなもの

「ループデバイスは仲介役」と表現したが、例えるなら仮想的なSDカードリーダーのようなイメージに近い

カードリーダー(ループデバイス)を通して、SDカード(ファイル)の中身を読み取るという動作を、すべてOS内部のソフトウェアだけで完結させているのが、ループバックマウントの正体である

3. どんなときに使うのか(ユースケース)

主に以下のような場面で利用される

1. ISOイメージの内容確認

インストールメディアを焼く前に、中身のスクリプトやパッケージを確認する

2. バックアップイメージの操作

ddコマンドで取得したディスクイメージから、特定のファイルだけを取り出したいとき

3. 仮想的なファイルシステムの作成

空のファイルを作成し、それをフォーマットしてマウントすることで、クォータ制限(容量制限)付きの作業領域を擬似的に作る

4. 操作練習

1. 100MBの空ファイルを作成

kiku@ubuntu:~$ dd if=/dev/zero of=test_disk.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.106737 s, 982 MB/s

2. 作成したファイルをファイルシステム(ext4)で初期化

ファイルを作成した時点ではただのデータの塊なので、OSが読み書きできるようにフォーマットする

kiku@ubuntu:~$ mkfs.ext4 test_disk.img 
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done                            
Creating filesystem with 25600 4k blocks and 25600 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

ファイルに対してフォーマットをかけるというループバックならではの不思議な操作

3. マウントポイント(ディレクトリ)を作成

kiku@ubuntu:~$ mkdir ./mnt_test

4. ループバックマウントを実行

kiku@ubuntu:~$ sudo mount -o loop test_disk.img ./mnt_test/

ext4としてマウントされている

kiku@ubuntu:~$ mount |grep test_disk
/home/kiku/test_disk.img on /home/kiku/mnt_test type ext4 (rw,relatime)

作成したファイルが/dev/loop0としてマウントポイント(/home/kiku/mnt_test)にマウントされていることが分かる

kiku@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           165M 1016K  164M   1% /run
/dev/sda1        48G  3.0G   45G   7% /
~省略~
/dev/loop0       90M   24K   83M   1% /home/kiku/mnt_test
kiku@ubuntu:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0     7:0    0  100M  0 loop /home/kiku/mnt_test
sda       8:0    0   50G  0 disk 
├─sda1    8:1    0   49G  0 part /
├─sda14   8:14   0    4M  0 part 
├─sda15   8:15   0  106M  0 part /boot/efi
└─sda16 259:0    0  913M  0 part /boot
sdb       8:16   0   10G  0 disk 
├─sdb1    8:17   0    5G  0 part /test
│                                /mnt/my_btrfs
└─sdb2    8:18   0    5G  0 part 
sr0      11:0    1    4M  0 rom  

読み書きもできた

root@ubuntu:/home/kiku# echo test > mnt_test/test.txt

root@ubuntu:/home/kiku# ll mnt_test/
total 28
drwxr-xr-x 3 root root  4096 Apr 28 23:23 ./
drwxr-x--- 7 kiku kiku  4096 Apr 28 23:14 ../
drwx------ 2 root root 16384 Apr 28 23:13 lost+found/
-rw-r--r-- 1 root root     5 Apr 28 23:23 test.txt

root@ubuntu-linuc:/home/kiku# cat mnt_test/test.txt 
test

専門用語辞典

マウント (Mount)

  • コンピュータに接続した機器やファイルを、OSのディレクトリ構造の一部として組み込み、利用可能にすること

ISOイメージ

  • CDやDVD、Blu-rayの内容を1つのファイルにまとめたもの
  • 国際標準規格(ISO 9660)に準拠している

ブロックデバイス

  • データを一定サイズの「ブロック」単位で読み書きするデバイスのこと
  • HDDやSSD、ループデバイスなどが該当する。

ループバック (Loopback)

  • 送信したデータや信号が、外部へ出ずにそのまま自分自身に戻ってくる仕組み

ループデバイス (/dev/loop)

  • 通常のファイルをブロックデバイスとして利用するための仮想デバイス

ディスクイメージ (.img)

  • ストレージの内容をセクタ単位でそのままコピーしたバイナリファイル

ddコマンド

  • データのコピーや変換を行うコマンド
  • ディスク全体の完全な複製(イメージ作成)によく使われる

-学習記録, 運用
-,