fdisk -lの結果からループバックデバイスを除外する

# はじめに

Linuxでストレージやパーティションの一覧を確認したい場合に、`fdisk -l`コマンドを使用することはよくあると思います。  
この時、snapでパッケージをインストールしている場合、各パッケージが作成するループバックデバイスも表示されます。  
特にUbuntuの場合、大量のループバックデバイスが表示されてしまい、邪魔になることが多いです。  
このような場合に、ループバックデバイスの表示を除外する方法を紹介します。

# 方法

まずは通常通り実行した場合。  
今回試したUbuntuマシンでは、20個近くのループバックデバイスが表示され、  
確認したいストレージの情報が埋もれてしまいました。

```shell-session
$ sudo fdisk -l
Disk /dev/loop0: 4 KiB, 4096 bytes, 8 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop1: 74.12 MiB, 77713408 bytes, 151784 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

(略)

Disk /dev/sda: 119.25 GiB, 128035676160 bytes, 250069680 sectors
Disk model: PLEXTOR PX-128M5
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXX

Device       Start       End   Sectors   Size Type
/dev/sda1     2048   1050623   1048576   512M EFI System
/dev/sda2  1050624 250068991 249018368 118.8G Linux filesystem

(略)

Disk /dev/loop19: 55.68 MiB, 58363904 bytes, 113992 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop20: 38.75 MiB, 40615936 bytes, 79328 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
```

ここで、以下のように`sed`コマンドで処理することで、ループバックデバイスの表示を消すことが出来ます。

```shell-session
$ sudo fdisk -l | sed -e '/Disk \/dev\/loop/,+5d'
Disk /dev/sda: 119.25 GiB, 128035676160 bytes, 250069680 sectors
Disk model: PLEXTOR PX-128M5
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXX

Device       Start       End   Sectors   Size Type
/dev/sda1     2048   1050623   1048576   512M EFI System
/dev/sda2  1050624 250068991 249018368 118.8G Linux filesystem
```

# おまけ

`df`コマンドでも、同様にループバックデバイスが大量に表示されてしまいます。

```shell-session
$ df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
udev                    devtmpfs  5.7G     0  5.7G   0% /dev
tmpfs                   tmpfs     1.2G  2.2M  1.2G   1% /run
/dev/sda2               ext4      117G   96G   16G  87% /
tmpfs                   tmpfs     5.7G  636K  5.7G   1% /dev/shm
tmpfs                   tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs                   tmpfs     5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/loop0              squashfs  128K  128K     0 100% /snap/bare/5
/dev/loop3              squashfs   56M   56M     0 100% /snap/core18/2796
/dev/loop9              squashfs  350M  350M     0 100% /snap/gnome-3-38-2004/143
/dev/loop8              squashfs  350M  350M     0 100% /snap/gnome-3-38-2004/140
/dev/loop7              squashfs  219M  219M     0 100% /snap/gnome-3-34-1804/90
/dev/loop11             squashfs  219M  219M     0 100% /snap/gnome-3-34-1804/93
/dev/loop12             squashfs   63M   63M     0 100% /snap/gtk-common-themes/1506
/dev/loop16             squashfs   92M   92M     0 100% /snap/gtk-common-themes/1535
/dev/loop14             squashfs   13M   13M     0 100% /snap/snap-store/959
/dev/sda1               vfat      511M  6.1M  505M   2% /boot/efi
tmpfs                   tmpfs     1.2G   28K  1.2G   1% /run/user/125
tmpfs                   tmpfs     1.2G  208K  1.2G   1% /run/user/1000
/dev/loop19             squashfs   56M   56M     0 100% /snap/core18/2812
/dev/loop1              squashfs   75M   75M     0 100% /snap/core22/1033
/dev/loop17             squashfs   75M   75M     0 100% /snap/core22/1122
/dev/loop6              squashfs   64M   64M     0 100% /snap/core20/2182
/dev/loop10             squashfs   13M   13M     0 100% /snap/snap-store/1113
/dev/loop13             squashfs   40M   40M     0 100% /snap/snapd/21184
/dev/loop18             squashfs  505M  505M     0 100% /snap/gnome-42-2204/172
/dev/loop2              squashfs   64M   64M     0 100% /snap/core20/2264
/dev/loop5              squashfs  506M  506M     0 100% /snap/gnome-42-2204/176
/dev/loop20             squashfs   39M   39M     0 100% /snap/snapd/21465
```

こちらも、以下のように`-x`オプションで`squashfs`を除外することで、表示を消すことが可能です。

```shell-session
$ df -hTx squashfs
Filesystem              Type      Size  Used Avail Use% Mounted on
udev                    devtmpfs  5.7G     0  5.7G   0% /dev
tmpfs                   tmpfs     1.2G  2.2M  1.2G   1% /run
/dev/sda2               ext4      117G   96G   16G  87% /
tmpfs                   tmpfs     5.7G  636K  5.7G   1% /dev/shm
tmpfs                   tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs                   tmpfs     5.7G     0  5.7G   0% /sys/fs/cgroup
/dev/sda1               vfat      511M  6.1M  505M   2% /boot/efi
tmpfs                   tmpfs     1.2G   28K  1.2G   1% /run/user/125
tmpfs                   tmpfs     1.2G  208K  1.2G   1% /run/user/1000
```

ついでに`tmpfs`も除外すると、さらにスッキリします。

```shell-session
$ df -hTx squashfs -x tmpfs
Filesystem              Type      Size  Used Avail Use% Mounted on
udev                    devtmpfs  5.7G     0  5.7G   0% /dev
/dev/sda2               ext4      117G   96G   16G  87% /
/dev/sda1               vfat      511M  6.1M  505M   2% /boot/efi
```

# 参考リンク

- https://askubuntu.com/questions/834093/small-snap-loop-devices-visible-in-gnome-disk-utility-or-what-is-the-function-of
- https://askubuntu.com/questions/1195388/how-to-remove-dev-loops