LPIC Level1 復習ラジオ 15:ディスク管理

投稿日:2026-07-11

音声

※ AI音声で読み上げます

目次

  1. ディスク管理コマンドの使い分け
  2. df
  3. du
  4. dfとduの結果が違う理由
  5. lsblk
  6. blkid
  7. mountの基本
  8. マウントオプションとfstab
  9. umount
  10. 確認からマウント解除までの実践手順
  11. 30秒チェック
  12. 要約

ディスク管理コマンドの使い分け

ディスク容量、ファイルサイズ、デバイス構成、マウント状態は、似ているようで確認対象が異なります。

コマンド主な確認対象代表的な用途
dfマウント済みファイルシステム使用量、空き容量、使用率、inode使用状況
duファイルやディレクトリどの場所が容量を使っているか調べる
lsblkブロックデバイスディスク、パーティション、LVM、マウント先の構成
blkidデバイス上の識別情報UUID、LABEL、ファイルシステムタイプ
mountファイルシステムとディレクトリの接続ファイルシステムをディレクトリツリーへ組み込む
umountマウント済みファイルシステムディレクトリツリーから安全に切り離す

特に混同しやすいのは、dfdulsblkです。

  • df:ファイルシステム全体の使用状況
  • du:指定したファイルやディレクトリの使用量
  • lsblk:未マウント領域も含むブロックデバイス構成
df -h
du -sh /var/log
lsblk -f

df

dfは、マウント済みファイルシステムについて、使用済み容量と利用可能容量を表示します。

df [オプション] [ファイル...]

引数を指定しない場合はファイルシステムを一覧表示します。ファイルやディレクトリを指定した場合は、そのパスが属するファイルシステムを表示します。

基本表示

df
df /var/log
df /home

df /var/logは、ログディレクトリ自体の容量ではなく、そのディレクトリを収容するファイルシステム全体の容量を表示します。

読みやすい単位とタイプ

df -h
df -H
df -hT
オプション意味
-h1024の累乗を基準にK、M、Gなどで表示する
-H1000の累乗を基準にk、M、Gなどで表示する
-Text4、XFS、tmpfsなどのファイルシステムタイプを表示する

inode使用状況

df -i
df -ih

-iは、ブロック容量ではなくinodeの総数、使用数、空き数、使用率を表示します。小さなファイルが大量に作成されると、容量が残っていてもinodeを使い切り、新しいファイルを作れない場合があります。

タイプの絞り込みと合計

df -t ext4
df -x tmpfs -x devtmpfs
df -h --total
  • -t タイプ:指定タイプだけを表示する
  • -x タイプ:指定タイプを除外する
  • --total:表示対象の合計行を追加する

必要な列を指定する

df -h --output=source,fstype,size,used,avail,pcent,target

GNU df--outputでは、必要な列を明示できます。代表的な列は、ソース、全体容量、使用済み容量、利用可能容量、使用率、マウントポイントです。

SizeからUsedを引いた値とAvailが一致しない場合があります。ファイルシステムの予約領域や管理用領域などが関係します。

du

duは、指定したファイルやディレクトリが使用しているディスク領域を見積もります。

du [オプション] [ファイル...]

引数を省略すると、現在のディレクトリを対象にします。

合計を表示する

du -s /var/log
du -sh /var/log
  • -s:指定した対象ごとの合計だけを表示する
  • -h:人が読みやすい単位で表示する

du -shは、ディレクトリ容量を簡潔に確認する代表的な組み合わせです。

段階的に絞り込む

du -h --max-depth=1 /var
du -h -d 1 /var
du -h -d 1 /var | sort -h

--max-depth=1またはGNU版の-d 1は、指定した深さまで表示します。大きなディレクトリを見つけたら、その中を同じ方法で調べます。

ファイルや総合計も表示する

du -ah /var/log
du -ah /var/log | sort -h | tail
du -ch file1 file2 directory/
  • -a:ディレクトリだけでなくファイルも表示する
  • -c:各対象に加えて総合計を表示する

同じファイルシステム内だけを調べる

sudo du -x -h -d 1 /

-x--one-file-systemは、別のファイルシステムへ移動しません。ルート以下を調べるときに、別マウントの/proc/sys、外付けディスクなどへまたがるのを避けられます。

実使用量と見かけのサイズ

du -h file.img
du -h --apparent-size file.img
ls -lh file.img

通常のduは、ファイルが実際に使用するディスクブロックを基準にします。--apparent-sizeは、ファイル内容として見える論理的なサイズを表示します。スパースファイルなどでは、両者が大きく異なる場合があります。

シンボリックリンクと権限

du -h link
du -h -L link
sudo du -x -h -d 1 /

標準ではシンボリックリンクのリンク先をたどりません。-Lを付けるとたどりますが、意図しない大規模な探索や循環に注意します。読み取り権限がない場所では正確な合計を得られない場合があります。

dfとduの結果が違う理由

dfduは、容量を別の方法で調べるため、値が一致しないことがあります。

コマンド確認方法
dfファイルシステムが管理する使用済みブロックと空きブロックを確認する
duディレクトリツリーをたどり、見つかったファイルの使用量を合計する

削除済みだが開かれているファイル

プロセスがファイルを開いたままファイル名だけが削除された場合、duでは見つけられません。しかし、プロセスが閉じるまでブロックは解放されないため、dfでは使用済みのままです。

sudo lsof +L1

対象プロセスを確認し、サービスの再起動や適切なログ再オープンなどを検討します。

そのほかの原因

  • 管理者用の予約ブロック、ジャーナル、メタデータ
  • 論理サイズと実使用量が異なるスパースファイル
  • 圧縮や重複排除を行うファイルシステム
  • マウントポイントの下に隠れた元のファイル
ls -lh sparse.img
du -h sparse.img
du -h --apparent-size sparse.img

容量不足の基本順序

df -hT
df -ih
sudo du -x -h -d 1 / | sort -h
sudo lsof +L1
  1. df -hTで不足しているファイルシステムを特定する
  2. df -iでinode不足も確認する
  3. du -xで同じファイルシステム内を段階的に絞り込む
  4. 差が大きい場合は削除済みの開いたファイルなどを調べる

lsblk

lsblkは、利用可能なブロックデバイスの情報を表示します。標準では、ディスクとパーティションなどの関係をツリー形式で表示します。

lsblk [オプション] [デバイス...]

基本表示と主な列

lsblk
意味
NAMEデバイス名
SIZEデバイス容量
RMリムーバブルデバイスか
RO読み取り専用か
TYPEdisk、part、lvm、romなどの種類
MOUNTPOINTS関連付けられたマウントポイント

ファイルシステム情報

lsblk -f

-fは、ファイルシステムタイプ、LABEL、UUID、空き容量、使用率、マウントポイントなどを表示します。

必要な列とフルパス

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,LABEL,UUID,MOUNTPOINTS
lsblk -p

-oは表示列を明示し、-p/dev/sdb1のような完全なデバイスパスを表示します。既定出力はバージョンによって変わる可能性があるため、スクリプトでは列を指定します。

ディスク本体、バイト、JSON

lsblk -d -o NAME,MODEL,SERIAL,SIZE,ROTA,TRAN
lsblk -b -o NAME,SIZE
lsblk -J -o NAME,TYPE,SIZE,FSTYPE,UUID,MOUNTPOINTS
  • -d:パーティションなどの子デバイスを表示しない
  • -b:サイズをバイト単位で表示する
  • -J:JSON形式で表示する

dfとの違い

dfは主にマウント済みファイルシステムを表示します。lsblkは、未マウントのパーティションやディスク本体も表示できます。

blkid

blkidは、ブロックデバイスの内容を調べ、ファイルシステムタイプ、UUID、LABELなどの属性を表示します。

blkid [オプション] [デバイス...]

一覧と指定デバイス

sudo blkid
sudo blkid /dev/sdb1

環境や権限によっては、一般利用者ではキャッシュにある情報だけが表示され、すべてのデバイスを直接調査できない場合があります。

項目や値だけを表示する

sudo blkid -s UUID /dev/sdb1
sudo blkid -s TYPE /dev/sdb1
sudo blkid -s UUID -o value /dev/sdb1

-sは表示するタグを指定し、-o valueは値だけを表示します。

LABELやUUIDから探す

blkid -L DATA
blkid -U 12345678-1234-1234-1234-123456789abc
  • -L ラベル:LABELに対応するデバイス名を表示する
  • -U UUID:UUIDに対応するデバイス名を表示する

低レベルの調査

sudo blkid -p /dev/sdb1

-pは、指定デバイスを低レベルのプローブモードで調べます。通常の一覧確認ではlsblk -f、指定デバイスの詳細確認ではblkidという流れが分かりやすいです。

UUIDを使う理由

/dev/sdb1などのデバイス名は、接続順序や構成変更により変化する可能性があります。そのため、/etc/fstabではUUIDやLABELを使う方法が一般的です。

UUID=12345678-1234-1234-1234-123456789abc /data ext4 defaults 0 2

ディスク複製などでUUIDが重複する場合もあるため、システム内の識別子を確認します。

mountの基本

mountは、デバイスなどにあるファイルシステムを、指定したディレクトリへ接続します。この接続先をマウントポイントと呼びます。

mount [オプション] ソース マウントポイント

基本操作

sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data
sudo mount -t ext4 /dev/sdb1 /mnt/data

-tはファイルシステムタイプを指定します。多くの場合は自動判定されます。標準では管理者権限が必要です。

UUIDやLABELで指定する

sudo mount UUID=12345678-1234-1234-1234-123456789abc /mnt/data
sudo mount LABEL=DATA /mnt/data

状態を確認する

findmnt /mnt/data
findmnt -S /dev/sdb1
df -hT /mnt/data
lsblk -f

引数なしのmountでも一覧表示できますが、柔軟で機械処理しやすい確認にはfindmntが適しています。

マウントポイントに元からある内容

マウントポイントに元からファイルがある場合、マウント中は通常のパスから見えなくなり、代わりにマウントしたファイルシステムの内容が見えます。元のファイルが削除されたわけではなく、アンマウントすると再び見えます。

ループマウントとbindマウント

sudo mkdir -p /mnt/iso
sudo mount -o loop,ro image.iso /mnt/iso

sudo mkdir -p /mnt/shared
sudo mount --bind /srv/data /mnt/shared

loopは通常ファイルをブロックデバイスのように扱います。bindマウントは既存のディレクトリツリーを別のパスからも見えるようにする処理で、データをコピーするものではありません。

マウントオプションとfstab

主なマウントオプション

オプション主な意味
ro読み取り専用でマウントする
rw読み書き可能でマウントする
remountマウント済みファイルシステムのオプションを変更する
noexecそのマウント上のバイナリを直接実行しないようにする
nosuidSUID・SGIDビットの効果を無効にする
nodevデバイスファイルをデバイスとして解釈しない
noatimeファイルアクセス時刻を更新しない
defaults一般的な既定オプション群を指定する
sudo mount -o ro /dev/sdb1 /mnt/data
sudo mount -o rw,nodev,nosuid /dev/sdb1 /mnt/data
sudo mount -o remount,ro /mnt/data

-oの後ろへ、カンマ区切りで複数のオプションを指定します。利用可能なオプションはファイルシステムによっても異なります。

/etc/fstab

/etc/fstabは、通常マウントするファイルシステムのソース、マウントポイント、タイプ、オプションなどを記述するファイルです。

UUID=12345678-1234-1234-1234-123456789abc /data ext4 defaults 0 2
フィールド内容
1デバイス、UUID、LABELなどのソース
2マウントポイント
3ファイルシステムタイプ
4マウントオプション
5dumpで使用する値
6起動時のファイルシステム検査順序

fstabを使ったマウント

sudo mount /data
sudo mount -a
findmnt --verify

ソースまたはマウントポイントだけを指定すると、mountはfstabから対応設定を探せます。mount -aは通常、noautoがない対象をまとめてマウントします。

fstab編集後は、再起動前に構文と実際のマウントを確認します。systemd環境では必要に応じて次も実行します。

sudo systemctl daemon-reload

umount

umountは、マウントされたファイルシステムをディレクトリツリーから切り離します。コマンド名はunmountではなくumountです。

umount [オプション] 対象

基本操作

sudo umount /mnt/data
sudo umount /dev/sdb1

同じファイルシステムが複数箇所へマウントされている可能性もあるため、findmntなどで対応関係を確認します。

複数対象と再帰解除

sudo umount -a -t nfs,nfs4
sudo umount -R /mnt/tree

-aは複数の対象をまとめて解除し、-tはタイプを絞ります。-Rは指定マウントの下にある入れ子のマウントも再帰的に解除します。

target is busy

対象が使用中の場合、通常はアンマウントできません。

umount: /mnt/data: target is busy.

主な原因は、シェルのカレントディレクトリが対象内にある、プロセスがファイルを開いている、対象以下に別のファイルシステムがある、サービスが利用していることです。

cd /
findmnt -R /mnt/data
sudo lsof +f -- /mnt/data
sudo fuser -vm /mnt/data

利用中のプロセスを確認し、正常な方法で停止してから再実行します。

遅延解除と強制解除

sudo umount -l /mnt/data
sudo umount -f /mnt/nfs

-lは遅延アンマウントです。-fは主に到達不能なNFSなどで使う強制アンマウントで、データ損失や不整合の危険があります。通常の解除ができない原因を調べずに多用しません。

取り外し前の確認

sudo umount /mnt/data
findmnt /mnt/data
lsblk -f

USBメモリなどを物理的に取り外す前に、アンマウントが完了したことを確認します。

確認からマウント解除までの実践手順

1. デバイス構成を確認する

lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,LABEL,UUID,MOUNTPOINTS

デバイス名だけでなく、サイズ、タイプ、LABEL、UUID、現在のマウント先を照合します。

2. 識別情報を確認する

sudo blkid /dev/sdb1

3. マウントポイントを準備する

sudo mkdir -p /mnt/data
ls -la /mnt/data

中身のあるディレクトリへマウントすると、元の内容が一時的に見えなくなるため、事前に確認します。

4. 読み取り専用で確認する

sudo mount -o ro /dev/sdb1 /mnt/data
findmnt /mnt/data
ls -la /mnt/data

内容が不明な外部メディアは、最初に読み取り専用で確認すると誤書き込みの危険を減らせます。

5. 容量を確認する

df -hT /mnt/data
df -i /mnt/data
du -sh /mnt/data

6. 利用を終了して解除する

cd /
sudo lsof +f -- /mnt/data
sudo umount /mnt/data
findmnt /mnt/data
lsblk -f

容量不足の切り分け例

df -hT
df -ih
sudo du -x -h -d 1 /var | sort -h
sudo du -x -h -d 1 /var/log | sort -h
sudo lsof +L1

よくある間違い

間違いやすい点確認すること
df /var/logをログディレクトリのサイズだと思うdfは所属するファイルシステム全体を表示する
duで空き容量を確認する空き容量はdf、ファイル使用量はdu
容量が残っていればファイルを作れると思うdf -iでinode不足も確認する
lsblkdfの表示差を異常と考えるlsblkは未マウント領域も表示する
/dev/sdb1が常に同じだと思う永続設定ではUUIDやLABELを検討する
中身のあるディレクトリへマウントする元の内容がマウント中は見えなくなる
umountunmountと入力するコマンド名はumount
target is busyで直ちに-fを使うカレントディレクトリ、開いたファイル、入れ子のマウントを調べる
fstab編集後にすぐ再起動するmount -afindmnt --verifyで事前確認する
USBメモリを解除せず取り外すumount後に解除状態を確認する

manページとinfo

man df
man du
man lsblk
man blkid
man mount
man umount
man fstab

info coreutils 'df invocation'
info coreutils 'du invocation'

30秒チェック

  1. dfdulsblkは、それぞれ何を確認するコマンドでしょうか。
  2. df -hdf -iは、何を表示するでしょうか。
  3. du -sh /var/log-s-hは何を意味するでしょうか。
  4. du -xは、探索範囲をどのように制限するでしょうか。
  5. lsblk -fでは、どのような情報を確認できるでしょうか。
  6. blkid -s UUID -o value /dev/sdb1は何を表示するでしょうか。
  7. mountで接続先となるディレクトリを何と呼ぶでしょうか。
  8. mount -o romount -o remount,roの用途は何でしょうか。
  9. umounttarget is busyとなる原因を一つ答えてください。
  10. 永続設定でデバイス名よりUUIDがよく使われる理由は何でしょうか。
答えを表示
  1. dfはファイルシステム容量、duはファイルやディレクトリの使用量、lsblkはブロックデバイス構成
  2. -hは読みやすい容量、-iはinode使用状況
  3. -sは合計のみ、-hは読みやすい単位
  4. 別のファイルシステムへ移動せず、同じファイルシステム内だけを調べる
  5. ファイルシステムタイプ、LABEL、UUID、空き容量、使用率、マウントポイントなど
  6. /dev/sdb1のUUIDの値だけ
  7. マウントポイント
  8. roは読み取り専用でマウントし、remount,roはマウント済み対象を読み取り専用へ再マウントする
  9. カレントディレクトリが対象内、ファイルが開かれている、下位に別マウントがあるなど
  10. /dev/sdb1などの名前は接続順や構成変更で変わる可能性があるため

要約

  • dfはマウント済みファイルシステムの使用量と空き容量を表示します。
  • df -hは読みやすい容量、df -Tはタイプ、df -iはinode使用状況です。
  • duはファイルやディレクトリが使用するディスク領域を調べます。
  • du -shは合計を簡潔に表示し、du -xは同じファイルシステム内だけを探索します。
  • dfduの差には、削除済みだが開かれたファイル、予約領域、スパースファイルなどが関係します。
  • lsblkは、未マウント領域を含むブロックデバイス構成を表示します。
  • lsblk -fは、タイプ、LABEL、UUID、マウントポイントなどを表示します。
  • blkidは、指定デバイスのUUID、LABEL、ファイルシステムタイプなどを調べます。
  • mountはファイルシステムをマウントポイントへ接続し、umountは切り離します。
  • マウントポイントに元からある内容は、マウント中は通常のパスから見えなくなります。
  • /etc/fstabでは、変化しやすいデバイス名よりUUIDやLABELがよく使われます。
  • target is busyでは、強制解除の前に、カレントディレクトリ、開いたファイル、入れ子のマウントを確認します。

参考資料