チャレンジ一覧 / linux-filesystem-top-level

Day 8:/media と /mnt

Linuxの仕組みとの関係

Linuxではストレージはそのままは使用できず、マウントして初めて使える。マウントによって、異なるストレージも1つのディレクトリ構造として扱える。

すべてのストレージはディレクトリツリーに統合される。

/mediaは自動マウント用

/mntは手動マウント用(管理者向け)

ディレクトリの概要

/media

/mediaは、USBメモリや外付けHDDなどのリムーバブルメディアを(主にデスクトップ環境で)自動マウントされる場所。ユーザがデバイス接続したときに使われる。

※マウントとは、ストレージの中身をLinuxのディレクトリとしてアクセスできるようにすること。(デバイスをフォルダとして扱えるようにする仕組み)

/mnt

/mntは、一時的にストレージを手動でマウントするためのディレクトリ。主に管理者が検証や作業目的で使う「作業用のマウントポイント」。

※ISOとはCD/DVDなどの光ディスクの中身を、構造ごと1つのファイルにまとめたディスクイメージ

よくある中身

/media

/mnt

基本的に固定の中身はなく、用途に応じて自由に作る。

検証してみる

/mnt

%dd if=/dev/zero of=sample.img bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.00820565 s, 1.3 GB/s

(つまり中身が全部0の10MBのファイルができる)

%mkfs.ext4 sample.img
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done                            
Creating filesystem with 2560 4k blocks and 2560 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
%sudo mount -o loop sample.img ~/mnt_test/

マウント対象:sample.img、マウントポイント:~/mnt_test

流れ:

sample.imgを読む ↓

中にあるext4ファイルシステムを認識

↓ loopデバイスに割り当て(カーネルが仮想デバイスを作る) ↓ /mnt_test に接続

※GUI上にもmountされたmnt_testが表示された

image.png

%sudo mount -o loop sample.img ~/mnt_test/
%ls ~/mnt_test/
lost+found
%sudo touch ~/mnt_test/hello.txt
%ls ~/mnt_test/
hello.txt  lost+found

~/mnt_testに書き込んでいるように見えるが、実際にはsample.imgの中にデータが保存されている。

%sudo umount ~/mnt_test
%ls ~/mnt_test/
(何もない)

アンマウントすると仮想デバイスが切断され、~/mnt_testの中身が見えなくなる

%sudo mount -o loop sample.img ~/mnt_test/
%ls ~/mnt_test/
hello.txt  lost+found

再マウントするとさっき作ったhello.txtが見える

/media

%sudo mkdir -p /media/$USER/testusb 
%sudo mount -o loop sample.img /media/$USER/testusb
%ls /media/$USER/testusb
hello.txt  lost+found

/media/$USER/testusbディレクトリを作成し、さっき作ったsample.imgをマウント

中身を確認すると、先程作成したhello.txtが入っている。

%sudo umount /media/$USER/testusb
%ls /media/$USER/testusb

アンマウント後にもう一度media/$USER/testusbディレクトリを確認すると中身が見えなくなる。