Linuxサーバーの運用において、ディスク・ストレージトラブルは最も頻繁に発生する問題の一つです。「ディスク容量が足りない」「ファイルが書き込めない」「起動時にファイルシステムエラーが出る」「ディスクがマウントできない」など、ストレージに関連するトラブルは多岐にわたります。
この記事では、Linuxディスクトラブル・ストレージトラブルの対処法として、ディスク容量不足の調査から、ファイルシステムエラーの修復、マウント問題への対処、パーティション操作の基本、そしてデータ保護のためのバックアップ戦略まで、実践的な手法を体系的に解説します。
前提条件と動作確認環境#
本記事の内容は以下の環境で動作確認しています。
| 項目 |
内容 |
| OS |
Ubuntu 24.04 LTS / AlmaLinux 9 |
| ファイルシステム |
ext4 / XFS |
| カーネル |
6.5以上 |
| シェル |
bash 5.2 |
| 権限 |
一部コマンドでsudo権限が必要 |
必要なパッケージのインストール方法は以下のとおりです。
1
2
3
4
5
|
# Ubuntu/Debian系
sudo apt install ncdu e2fsprogs xfsprogs parted rsync
# RHEL/AlmaLinux/Rocky系
sudo dnf install ncdu e2fsprogs xfsprogs parted rsync
|
Linuxディスクトラブル対処の全体像#
ディスク・ストレージトラブルは、大きく分けて4つのカテゴリに分類できます。それぞれに対応した調査・対処の手順を把握しておくことで、迅速に問題を解決できます。
flowchart TD
A[ストレージトラブル発生] --> B{症状の特定}
B -->|書き込み不可<br/>容量警告| C[容量不足]
B -->|I/Oエラー<br/>データ破損| D[ファイルシステムエラー]
B -->|マウント失敗<br/>デバイス認識不可| E[マウント問題]
B -->|パーティション<br/>拡張・縮小| F[パーティション操作]
C --> C1[df/duで状況確認]
C1 --> C2[ncdu/findで原因特定]
C2 --> C3[不要ファイル削除]
D --> D1[dmesg/ログ確認]
D1 --> D2[アンマウント]
D2 --> D3[fsckで修復]
E --> E1[lsblk/blkidで確認]
E1 --> E2[fstab設定確認]
E2 --> E3[手動マウント試行]
F --> F1[現状把握]
F1 --> F2[バックアップ取得]
F2 --> F3[パーティション操作]
style A fill:#ffcdd2,stroke:#c62828
style C fill:#fff3e0,stroke:#f57c00
style D fill:#e8f5e9,stroke:#388e3c
style E fill:#e3f2fd,stroke:#1976d2
style F fill:#f3e5f5,stroke:#7b1fa2ディスク容量不足の調査と対処#
ディスク容量不足はLinuxストレージトラブルの中で最も多く発生する問題です。容量枯渇に至る前の早期発見と、原因となるファイルの特定が重要です。
df コマンドでディスク使用状況を確認する#
まずdfコマンドで全体的なディスク使用状況を把握します。
1
2
3
4
5
|
# ファイルシステムごとの使用状況を確認
df -h
# inodeの使用状況も確認(小さいファイルが大量にある場合に重要)
df -i
|
実行結果の例:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 45G 2.5G 95% /
/dev/sda2 200G 120G 70G 63% /home
tmpfs 7.8G 1.2M 7.8G 1% /run
Use%が90%を超えている場合は、早急に対処が必要です。特に95%を超えると、システムの動作に影響を与える可能性があります。
inode枯渇問題の確認#
ディスク容量に余裕があるにもかかわらず「No space left on device」エラーが出る場合は、inode枯渇の可能性があります。
1
2
3
4
5
6
7
8
|
# inode使用状況の確認
df -i
# 特定ディレクトリ配下のファイル数を確認
find /var -xdev -type f | wc -l
# ディレクトリごとのファイル数を集計
find /var -xdev -type d -exec sh -c 'echo "$(find "$1" -maxdepth 1 -type f | wc -l) $1"' _ {} \; | sort -rn | head -20
|
inode枯渇の主な原因は、小さいファイルの大量生成です。特に以下の場所でよく発生します。
| 場所 |
原因 |
対処法 |
| /var/spool/mail |
大量のメールキュー |
古いメールの削除 |
| /tmp |
一時ファイルの蓄積 |
定期クリーンアップ |
| /var/log |
ログファイルの断片化 |
logrotateの設定見直し |
| セッションファイル |
PHPセッションなど |
有効期限切れファイルの削除 |
du コマンドで大きいディレクトリを特定する#
duコマンドを使って、容量を消費しているディレクトリを特定します。
1
2
3
4
5
6
7
8
|
# ルート直下の各ディレクトリのサイズを確認
sudo du -sh /* 2>/dev/null | sort -rh | head -20
# /var配下の詳細を確認(ログやキャッシュが多い)
sudo du -sh /var/* 2>/dev/null | sort -rh | head -20
# 特定ディレクトリ配下の容量上位を確認
sudo du -h /var/log --max-depth=2 | sort -rh | head -20
|
実行結果の例:
15G /var
8.5G /home
6.2G /usr
2.1G /opt
ncdu で対話的に調査する#
ncdu(NCurses Disk Usage)は、ディレクトリ構造をインタラクティブに探索できる便利なツールです。大量のファイルがあるディレクトリでも高速に動作します。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# ncduのインストール
sudo apt install ncdu # Debian/Ubuntu
sudo dnf install ncdu # RHEL/AlmaLinux
# ルートディレクトリから調査(時間がかかる場合がある)
sudo ncdu /
# 特定ディレクトリのみ調査
sudo ncdu /var
# 結果をファイルにエクスポートして後で確認
sudo ncdu -o /tmp/disk-usage.json /var
ncdu -f /tmp/disk-usage.json
|
ncduの操作方法:
| キー |
動作 |
| 上下矢印 |
項目の選択 |
| Enter |
ディレクトリに入る |
| d |
選択項目を削除(確認あり) |
| n |
名前順でソート |
| s |
サイズ順でソート |
| q |
終了 |
find コマンドで大きいファイルを特定する#
特定サイズ以上のファイルを検索して、削除候補を見つけます。
1
2
3
4
5
6
7
8
9
10
11
|
# 100MB以上のファイルを検索
sudo find / -xdev -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh
# 特定ディレクトリ内で1GB以上のファイルを検索
sudo find /var -type f -size +1G -exec ls -lh {} \; 2>/dev/null
# 30日以上アクセスされていない大きいファイルを検索
sudo find /home -type f -size +500M -atime +30 -exec ls -lh {} \; 2>/dev/null
# 検索結果をファイル名、サイズ、更新日時で一覧表示
sudo find / -xdev -type f -size +100M -printf '%s %T+ %p\n' 2>/dev/null | sort -rn | head -30
|
削除済みファイルがディスク容量を占有している場合#
ファイルを削除しても、そのファイルを開いているプロセスがある場合、ディスク容量は解放されません。この状況を確認して対処します。
1
2
3
4
5
|
# 削除されたが開かれたままのファイルを確認
sudo lsof +L1
# 特定のディレクトリ(/varなど)に限定して確認
sudo lsof +L1 | grep '/var'
|
実行結果の例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
nginx 1234 www 10w REG 252,1 10737418240 0 12345 /var/log/nginx/access.log (deleted)
この場合の対処法:
1
2
3
4
5
6
7
8
9
|
# 方法1: プロセスを再起動してファイルハンドルを解放
sudo systemctl restart nginx
# 方法2: プロセスを停止せずにファイルを切り詰める(ログファイルの場合)
# プロセスIDを確認してファイルディスクリプタを空にする
sudo truncate -s 0 /proc/1234/fd/10
# 方法3: logrotateを強制実行
sudo logrotate -f /etc/logrotate.conf
|
よくある容量消費の原因と対処法#
Linuxディスクトラブルでよく見られる容量消費の原因と対処法をまとめます。
| 原因 |
場所 |
対処法 |
| 古いログファイル |
/var/log |
logrotateの設定、古いログの削除 |
| パッケージキャッシュ |
/var/cache/apt, /var/cache/dnf |
apt clean, dnf clean all |
| 古いカーネル |
/boot, /lib/modules |
apt autoremove, dnf autoremove |
| Dockerイメージ |
/var/lib/docker |
docker system prune -a |
| systemdジャーナル |
/var/log/journal |
journalctl --vacuum-size=500M |
| 一時ファイル |
/tmp, /var/tmp |
再起動または手動削除 |
| コアダンプ |
/var/crash, /var/lib/systemd/coredump |
古いコアダンプの削除 |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# パッケージキャッシュのクリーンアップ
sudo apt clean && sudo apt autoremove # Debian/Ubuntu
sudo dnf clean all && sudo dnf autoremove # RHEL/AlmaLinux
# systemdジャーナルのサイズ制限
sudo journalctl --vacuum-size=500M
sudo journalctl --vacuum-time=30d
# Dockerの不要なリソースを削除
docker system prune -a --volumes
# 古いカーネルの削除(Ubuntu)
sudo apt autoremove --purge
|
ファイルシステムエラーの修復(fsck)#
ファイルシステムエラーは、予期しないシャットダウン、ハードウェア障害、ディスクの老朽化などが原因で発生します。fsckコマンドを使って修復を行います。
ファイルシステムエラーの兆候#
以下のような症状が見られる場合、ファイルシステムエラーの可能性があります。
- 「Structure needs cleaning」エラーの発生
- 読み取り専用でマウントされる
- I/Oエラーがログに出力される
- ファイルの読み書きが異常に遅い
- ファイルやディレクトリが消える
1
2
3
4
5
6
7
8
|
# dmesgでエラーを確認
dmesg | grep -i -E 'error|fail|warn|ext4|xfs|sda'
# システムログでファイルシステム関連のエラーを確認
journalctl -k | grep -i -E 'ext4|xfs|error|fail'
# ファイルシステムの状態を確認
sudo tune2fs -l /dev/sda1 | grep -E 'state|Mount count|errors'
|
fsck の基本的な使い方#
fsckを実行する際は、対象のファイルシステムをアンマウントする必要があります。マウント中に実行すると、データ破損のリスクがあります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# ファイルシステムの種類を確認
lsblk -f
# アンマウント
sudo umount /dev/sda2
# 基本的なfsck実行(対話形式)
sudo fsck /dev/sda2
# 自動修復オプション付き(-y: すべての質問にyesと回答)
sudo fsck -y /dev/sda2
# ドライラン(実際には修復しない)
sudo fsck -n /dev/sda2
|
fsckの主なオプション:
| オプション |
説明 |
| -y |
すべての質問に自動的にyesと回答 |
| -n |
読み取り専用でチェック(修復しない) |
| -f |
強制的にチェック(cleanとマークされていても) |
| -p |
安全な修復を自動実行 |
| -c |
不良ブロックをチェック |
| -v |
詳細な出力 |
ext4 ファイルシステムの修復#
ext4ファイルシステムにはe2fsckを使用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# ext4のチェックと修復
sudo e2fsck -f /dev/sda1
# 自動修復
sudo e2fsck -p /dev/sda1
# 強制チェックと自動修復
sudo e2fsck -fy /dev/sda1
# 不良ブロックも含めてチェック(時間がかかる)
sudo e2fsck -c /dev/sda1
# スーパーブロックが破損している場合、バックアップから復元
sudo mke2fs -n /dev/sda1 # バックアップスーパーブロックの位置を確認
sudo e2fsck -b 32768 /dev/sda1 # バックアップスーパーブロックを使用
|
XFS ファイルシステムの修復#
XFSファイルシステムにはxfs_repairを使用します。
1
2
3
4
5
6
7
8
|
# XFSのチェック(ドライラン)
sudo xfs_repair -n /dev/sda2
# XFSの修復
sudo xfs_repair /dev/sda2
# ログをクリアして修復(ログが破損している場合)
sudo xfs_repair -L /dev/sda2
|
注意点:xfs_repair -Lはジャーナルをクリアするため、最後の手段として使用してください。データ損失のリスクがあります。
ルートファイルシステムの修復#
ルートファイルシステムに問題がある場合は、ライブUSBやレスキューモードから起動して修復します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# レスキューモードでの起動手順
# 1. GRUBメニューで 'e' を押して編集モードに入る
# 2. linux行の末尾に 'systemd.unit=rescue.target' を追加
# 3. Ctrl+X で起動
# レスキューモードに入ったら
# ルートファイルシステムを読み取り専用で再マウント
mount -o remount,ro /
# fsckを実行
fsck -fy /dev/sda1
# 修復後、読み書き可能で再マウント
mount -o remount,rw /
# 再起動
reboot
|
fsck 実行時のベストプラクティス#
ファイルシステムの修復を安全に行うためのベストプラクティスです。
flowchart TD
A[fsck実行前] --> B[バックアップ確認]
B --> C[ファイルシステム確認<br/>lsblk -f]
C --> D[アンマウント<br/>umount]
D --> E{マウント中?}
E -->|Yes| F[使用プロセス確認<br/>lsof/fuser]
F --> G[プロセス停止]
G --> D
E -->|No| H[ドライラン<br/>fsck -n]
H --> I{問題あり?}
I -->|Yes| J[修復実行<br/>fsck -y]
I -->|No| K[完了]
J --> L[結果確認]
L --> M[再マウント]
M --> K
style A fill:#e3f2fd,stroke:#1976d2
style K fill:#c8e6c9,stroke:#388e3cマウント問題の対処#
ディスクがマウントできない、起動時にマウントエラーが発生するなどの問題に対処します。
マウント状態の確認#
現在のマウント状態と設定を確認します。
1
2
3
4
5
6
7
8
9
10
11
|
# 現在マウントされているファイルシステムを確認
findmnt
# 特定のデバイスのマウント状態を確認
findmnt /dev/sda1
# ブロックデバイスの一覧とファイルシステム情報
lsblk -f
# UUIDとラベルの確認
sudo blkid
|
マウントできない場合の調査#
マウント失敗時は、エラーメッセージを確認して原因を特定します。
1
2
3
4
5
6
7
8
9
10
11
|
# 詳細なエラーメッセージを確認
sudo mount -v /dev/sda2 /mnt
# dmesgでカーネルメッセージを確認
dmesg | tail -20
# ファイルシステムタイプを明示的に指定
sudo mount -t ext4 /dev/sda2 /mnt
# 読み取り専用でマウントを試行
sudo mount -o ro /dev/sda2 /mnt
|
よくあるマウントエラーと対処法:
| エラーメッセージ |
原因 |
対処法 |
| wrong fs type |
ファイルシステムタイプの不一致 |
-tオプションで正しいタイプを指定 |
| Structure needs cleaning |
ファイルシステムエラー |
fsckで修復 |
| already mounted |
既にマウント済み |
findmntで確認、必要なら再マウント |
| does not exist |
デバイスが存在しない |
lsblkでデバイス確認 |
| Permission denied |
権限不足 |
sudoを使用 |
| mount point does not exist |
マウントポイントがない |
mkdir でディレクトリ作成 |
fstab の設定と問題対処#
/etc/fstabの設定ミスは、起動時のマウント失敗の主な原因です。
1
2
3
4
5
6
7
8
|
# fstabの内容を確認
cat /etc/fstab
# fstabの構文チェック
sudo mount -a
# 特定のエントリをテストマウント
sudo mount /home
|
fstabのフィールド説明:
# <device> <mount point> <type> <options> <dump> <pass>
UUID=xxx-xxx-xxx /home ext4 defaults,noatime 0 2
| フィールド |
説明 |
| device |
デバイス名、UUID、LABELのいずれか |
| mount point |
マウントポイント |
| type |
ファイルシステムタイプ |
| options |
マウントオプション |
| dump |
バックアップ対象(0:対象外、1:対象) |
| pass |
fsckの実行順序(0:実行しない、1:ルート、2:その他) |
fstab 設定時のベストプラクティス#
1
2
3
4
5
6
7
8
9
|
# デバイス名ではなくUUIDを使用(デバイス名は変わる可能性がある)
sudo blkid /dev/sda2
# 出力: /dev/sda2: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"
# fstabにエントリを追加する前にバックアップ
sudo cp /etc/fstab /etc/fstab.backup
# nofailオプションを追加(マウント失敗時も起動を継続)
# 例: UUID=xxx-xxx-xxx /data ext4 defaults,nofail 0 2
|
nofailオプションは、リムーバブルディスクや障害時に起動を止めたくないディスクに有効です。
マウントポイントが使用中の場合#
アンマウントしようとして「target is busy」エラーが出る場合の対処法です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# マウントポイントを使用しているプロセスを確認
sudo lsof +D /mnt
# または fuser を使用
sudo fuser -mv /mnt
# プロセスを確認してから終了
sudo fuser -k /mnt # 注意: 強制終了
# 遅延アンマウント(プロセス終了後に自動アンマウント)
sudo umount -l /mnt
# 強制アンマウント(最後の手段)
sudo umount -f /mnt
|
パーティション操作の基本#
ディスクの追加、パーティションの作成・変更など、基本的なパーティション操作を解説します。
現在のパーティション構成を確認する#
1
2
3
4
5
6
7
8
9
10
11
|
# ディスクとパーティションの一覧
lsblk
# 詳細なパーティション情報
sudo fdisk -l
# GPTパーティションの詳細
sudo gdisk -l /dev/sda
# partedでの確認
sudo parted /dev/sda print
|
パーティションの作成(fdisk)#
MBRパーティションテーブルを使用するディスクでのパーティション作成例です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# fdiskを起動
sudo fdisk /dev/sdb
# fdisk内のコマンド
# n - 新しいパーティションを作成
# p - プライマリパーティション
# 1 - パーティション番号
# Enter - 開始セクタ(デフォルト)
# +50G - サイズを指定
# w - 変更を書き込んで終了
# パーティションテーブルを再読み込み
sudo partprobe /dev/sdb
# ファイルシステムを作成
sudo mkfs.ext4 /dev/sdb1
|
パーティションの作成(parted)#
GPTパーティションテーブルを使用するディスクでのパーティション作成例です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# GPTパーティションテーブルを作成
sudo parted /dev/sdb mklabel gpt
# パーティションを作成
sudo parted /dev/sdb mkpart primary ext4 0% 100%
# または対話モードで
sudo parted /dev/sdb
# (parted) mkpart
# Partition name? データ
# File system type? ext4
# Start? 0%
# End? 100%
# (parted) quit
# ファイルシステムを作成
sudo mkfs.ext4 /dev/sdb1
|
パーティションのリサイズ#
パーティションのリサイズは、データ損失のリスクがあるため、必ずバックアップを取ってから実行してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# ext4パーティションの拡張
# 1. まずアンマウント
sudo umount /dev/sdb1
# 2. ファイルシステムをチェック
sudo e2fsck -f /dev/sdb1
# 3. パーティションを拡張(partedまたはfdiskで)
sudo parted /dev/sdb resizepart 1 100%
# 4. ファイルシステムを拡張
sudo resize2fs /dev/sdb1
# 5. 再マウント
sudo mount /dev/sdb1 /mnt
|
XFSファイルシステムの拡張(XFSは縮小不可):
1
2
|
# XFSはマウント中に拡張可能
sudo xfs_growfs /mnt
|
LVMでの容量拡張#
LVM(Logical Volume Manager)を使用している場合の拡張手順です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 物理ボリューム(PV)の確認
sudo pvs
sudo pvdisplay
# ボリュームグループ(VG)の確認
sudo vgs
sudo vgdisplay
# 論理ボリューム(LV)の確認
sudo lvs
sudo lvdisplay
# 論理ボリュームの拡張(空き容量がある場合)
sudo lvextend -L +10G /dev/vg_name/lv_name
# または残りすべての空き容量を割り当て
sudo lvextend -l +100%FREE /dev/vg_name/lv_name
# ファイルシステムの拡張
sudo resize2fs /dev/vg_name/lv_name # ext4の場合
sudo xfs_growfs /mount_point # XFSの場合
|
データバックアップ戦略#
ストレージトラブルに備えて、適切なバックアップ戦略を構築することが重要です。
バックアップの3-2-1ルール#
データ保護のベストプラクティスとして、3-2-1ルールが推奨されています。
graph LR
A[3-2-1ルール] --> B[3つのコピー]
A --> C[2種類のメディア]
A --> D[1つはオフサイト]
B --> B1[本番データ]
B --> B2[ローカルバックアップ]
B --> B3[リモートバックアップ]
C --> C1[HDDとSSD]
C --> C2[ディスクとテープ]
C --> C3[ローカルとクラウド]
D --> D1[別拠点]
D --> D2[クラウドストレージ]
style A fill:#e8f5e9,stroke:#388e3crsync によるバックアップ#
rsyncは効率的な差分バックアップを実現する標準的なツールです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 基本的なバックアップ
rsync -av /home/user/ /backup/home/user/
# 削除も同期(ミラーリング)
rsync -av --delete /home/user/ /backup/home/user/
# リモートサーバーへのバックアップ
rsync -avz -e ssh /home/user/ user@backup-server:/backup/home/user/
# 進捗表示付き
rsync -avh --progress /home/user/ /backup/home/user/
# 除外パターンを指定
rsync -av --exclude='*.tmp' --exclude='.cache' /home/user/ /backup/home/user/
|
rsyncの主要オプション:
| オプション |
説明 |
| -a |
アーカイブモード(パーミッション、所有者、タイムスタンプを保持) |
| -v |
詳細出力 |
| -z |
転送時に圧圧縮 |
| -h |
人間が読みやすい形式 |
| –delete |
送信元にないファイルを削除 |
| –progress |
進捗を表示 |
| –dry-run |
実行せずにシミュレート |
バックアップスクリプトの例#
定期バックアップ用のスクリプト例です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#!/bin/bash
# /usr/local/bin/backup.sh
# 設定
BACKUP_SRC="/home /etc /var/www"
BACKUP_DST="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/backup.log"
RETENTION_DAYS=30
# ログ関数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# バックアップ実行
log "バックアップ開始"
for src in $BACKUP_SRC; do
dir_name=$(basename "$src")
rsync -avh --delete \
--exclude='*.tmp' \
--exclude='*.log' \
--exclude='.cache' \
"$src/" "$BACKUP_DST/$dir_name/" \
>> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
log "$src のバックアップ完了"
else
log "エラー: $src のバックアップに失敗"
fi
done
# 古いログの削除
find "$BACKUP_DST" -type f -mtime +$RETENTION_DAYS -delete
log "バックアップ終了"
|
cron でバックアップを自動化#
1
2
3
4
5
6
7
8
|
# crontabを編集
crontab -e
# 毎日深夜2時にバックアップを実行
0 2 * * * /usr/local/bin/backup.sh
# 毎週日曜日にフルバックアップ
0 3 * * 0 /usr/local/bin/full-backup.sh
|
dd によるディスクイメージバックアップ#
ディスク全体のバイトレベルバックアップを作成します。
1
2
3
4
5
6
7
8
9
10
11
|
# ディスク全体のイメージを作成
sudo dd if=/dev/sda of=/backup/sda.img bs=64K status=progress
# 圧縮しながらバックアップ
sudo dd if=/dev/sda bs=64K status=progress | gzip > /backup/sda.img.gz
# イメージからの復元
sudo dd if=/backup/sda.img of=/dev/sda bs=64K status=progress
# 圧縮イメージからの復元
gunzip -c /backup/sda.img.gz | sudo dd of=/dev/sda bs=64K status=progress
|
注意:ddはバイトレベルでコピーするため、書き込み先を間違えるとデータが完全に消失します。必ずデバイス名を確認してから実行してください。
トラブルシューティングのまとめ#
Linuxディスク・ストレージトラブルに対処するための重要なポイントをまとめます。
日常的な監視と予防#
df -hとdf -iを定期的に確認
- ディスク使用量のしきい値アラートを設定
- logrotateの設定を適切に管理
- 定期的なバックアップの実施と検証
容量不足時の対処手順#
df -hで全体状況を確認
duまたはncduで原因ディレクトリを特定
findで大きいファイルを検索
lsof +L1で削除済み未解放ファイルを確認
- 不要ファイルの削除またはプロセス再起動
ファイルシステムエラー時の対処手順#
dmesgでエラーメッセージを確認
- 可能であればデータのバックアップを取得
- 対象ファイルシステムをアンマウント
fsck -nでドライランチェック
fsck -yで修復実行
- 再マウントして動作確認
マウント問題時の対処手順#
lsblk -fでデバイスとファイルシステムを確認
sudo blkidでUUIDを確認
/etc/fstabの設定を確認
sudo mount -vで詳細なエラーを確認
- 必要に応じてfsckを実行してから再マウント
参考リンク#