LinuxのRead-only file systemエラーを復旧する方法|原因の切り分けとfsckによるファイルシステム修復手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxトラブルシューティング > LinuxのRead-only file systemエラーを復旧する方法|原因の切り分けとfsckによるファイルシステム修復手順
「ファイルを保存しようとしたら Read-only file system と表示されて書き込めなくなった」「サービスがログを書き込めずに停止した」——こうした障害は、Linuxサーバーを運用していれば必ず経験します。
read-only file system エラーは、原因によって対処方法がまったく変わります。軽微なジャーナル不整合なら remount で即時復旧できますが、ファイルシステム破損が疑われる場合は fsck による本格修復が必要です。

この記事では、Read-only file system エラーの原因を切り分ける手順と、fsck(file system check)を使ったファイルシステム修復手順をステップごとに解説します。
RHEL 9.4 / Ubuntu 24.04 LTS・ext4/XFS ファイルシステムで動作確認済みの手順です。

この記事のポイント

・read-only file systemの原因はまずdmesgとjournalctlで確認する
・軽微な不整合はmount -o remount,rwで即時復旧できる
・fsckはアンマウント後またはシングルユーザーモードで実行する
・XFSはxfs_repair、ext4はe2fsckで修復する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Read-only file systemエラーとは

Read-only file system エラーは、Linux カーネルがファイルシステムを「書き込み禁止(read-only)」モードに切り替えた状態で発生します。

通常、Linux のファイルシステムは読み書き可能(read-write)でマウントされています。しかし以下のような状況が発生すると、カーネルが自動的にファイルシステムを read-only に切り替えます。

I/O エラーの検出:ストレージデバイスへの書き込みが失敗し、カーネルがデータ保護のために読み取り専用に切り替える
ジャーナル不整合:停電や強制終了によりジャーナルが中途半端な状態になった場合
ハードウェア障害:ディスク、RAID コントローラー、SATA ケーブルの物理的な問題
ext4 の errors ポリシー:/etc/fstab や tune2fs で errors=remount-ro を設定している場合(デフォルト動作)

典型的な症状は以下のとおりです。

・ファイル作成・書き込みで「Read-only file system」が表示される
・ログファイルへの書き込みが停止し、サービスが異常終了する
・/proc/mounts を確認すると ro(read-only)フラグが立っている

原因の切り分け:dmesgとjournalctlで確認する

まず焦らずに、カーネルが何を検出して read-only に切り替えたのかを確認します。ここでの切り分けが正しければ、以降の対処が格段に楽になります。

1. dmesgでカーネルエラーを確認する

# 最新のカーネルメッセージを末尾50行確認する $ dmesg | tail -50 # "error" "ext4" "ata" "i/o" "read-only" で絞り込む $ dmesg | grep -iE 'error|ext4|ata[0-9]|i/o error|read-only' # 出力例(I/O エラー+ジャーナル中断の場合) [123456.789] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0 [123456.793] ata1.00: error: { UNC } [123456.800] EXT4-fs error (device sda1): ext4_journal_check_start:61: Detected aborted journal [123456.801] EXT4-fs (sda1): Remounting filesystem read-only

「ata」や「I/O error」が連続している場合はストレージデバイスの物理障害が疑われます。この場合は remount だけでは根本解決にならず、ハードウェアの点検も並行して行う必要があります。
「Detected aborted journal」だけが出ていて I/O エラーの連続がなければ、ジャーナル不整合が原因の可能性が高く、fsck で修復できるケースです。

2. journalctlでシステムログを確認する

# 今回の起動分のカーネルログを確認する $ journalctl -k --no-pager | grep -iE 'error|read-only|ext4|xfs' # 前回の起動分(強制終了した直前)も確認する $ journalctl -k -b -1 --no-pager | grep -iE 'error|read-only|ext4|xfs' # 出力例(ジャーナル不整合のみの場合) Jul 12 03:21:44 server01 kernel: EXT4-fs error (device sda1): ext4_journal_check_start:61: Detected aborted journal Jul 12 03:21:44 server01 kernel: EXT4-fs (sda1): Remounting filesystem read-only

3. ファイルシステムの状態をtune2fsで確認する

# ext4 ファイルシステムの詳細情報を確認する $ tune2fs -l /dev/sda1 | grep -E 'Filesystem state|Errors behavior|Last checked' # 出力例(不整合あり) Filesystem state: with errors Errors behavior: Remount read-only Last checked: Wed May 1 10:00:00 2026 # 出力例(正常) Filesystem state: clean

「Filesystem state: with errors」と表示されている場合は、fsck による修復が必要です。「clean」でも read-only になっている場合は、ハードウェア側の問題を疑ってください。

対処1:remountで即時復旧(軽微なエラーの場合)

dmesg に I/O エラーがなく、ジャーナル不整合のみが原因と判断できた場合は、アンマウント不要で remount によって即時復旧できる場合があります。

mount コマンドの使い方でも解説していますが、remount は既にマウント済みのファイルシステムに対してマウントオプションを変更する操作です。

1. mount -o remount,rw で再マウントする

# 現在のマウント状態を確認する(ro フラグを探す) $ cat /proc/mounts | grep sda1 /dev/sda1 / ext4 ro,relatime,errors=remount-ro 0 0 # read-write で再マウントする $ mount -o remount,rw / # 再マウント後の状態を確認する $ cat /proc/mounts | grep sda1 /dev/sda1 / ext4 rw,relatime,errors=remount-ro 0 0

「ro」が「rw」に変わっていることを確認してください。

2. 再マウント後に書き込みを確認する

# テスト書き込みで書き込み可能になったことを確認する $ touch /tmp/test_write && echo "書き込みOK" 書き込みOK # テストファイルを削除する $ rm /tmp/test_write

重要:remount はあくまで緊急回避です。根本的なファイルシステムの健全性確認のため、次のメンテナンスウィンドウに必ず fsck を実行してください。

障害対応の手順を「型」として身につけると、パニックにならずに冷静に動けます

read-only file system エラーは焦ると手順を飛ばして事態を悪化させます。dmesg での原因切り分けからfsck 実行まで、体系的なLinuxサーバー運用の「型」を身につければ、障害時に冷静に動けます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

対処2:fsckでファイルシステムを修復する

ファイルシステムの不整合が確認された場合や、read-only 状態を完全に解消したい場合は fsck(file system check)を実行します。

fsck は必ずアンマウントされたファイルシステムに対して実行します。稼動中のマウント済みファイルシステムに対して fsck を実行すると、データが破損する危険があります。ルートパーティション(/)の場合はシングルユーザーモードで作業します。

1. シングルユーザーモードで起動する

# 方法1: GRUB メニューからシングルユーザーモードで起動する # 1. 起動時に GRUB メニューが表示されたら "e" キーを押す # 2. "linux" で始まる行の末尾に以下を追記する # RHEL/Rocky Linux 系: systemd.unit=rescue.target # Ubuntu 系: single または init=/bin/bash # 3. Ctrl+X で起動する # 方法2: systemctl コマンドで移行する(稼動中のシステムから) $ systemctl rescue

2. fsckを実行する

# 対象デバイスを確認する $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 100G 0 disk ├─sda1 8:1 0 50G 0 part / └─sda2 8:2 0 50G 0 part /home # ルートパーティション /dev/sda1 に対して fsck を実行する # -y : すべての修復質問に自動で Yes と回答する $ fsck -y /dev/sda1 # 出力例(修復が行われる場合) fsck from util-linux 2.37.4 e2fsck 1.46.5 (30-Dec-2021) /dev/sda1: recovering journal Inode 1234 has illegal blocks. FIXED. /dev/sda1: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda1: clean, 150432/3276800 files, 2104567/13107200 blocks # 出力例(問題がない場合) /dev/sda1: clean, 150432/3276800 files, 2104567/13107200 blocks # 動作確認: RHEL 9.4 / e2fsprogs 1.46.5

3. fsck実行結果の見方

「clean」で終わる:修復完了または問題なし。再起動して通常動作を確認する
「FILE SYSTEM WAS MODIFIED」:不整合が修復された。再起動後に正常動作するはず
「errors left uncorrected」:修復できない問題が残っている。ハードウェア障害を強く疑う
「aborting」で終わる:fsck が途中で中断。デバイスが読み取れない可能性があり、ハードウェア確認が必要

応用・実務Tips

1. e2fsckの詳細オプション

fsck コマンドは内部的に ext4 の場合は e2fsck を呼び出します。詳細なオプションが必要な場合は e2fsck を直接使います。

# -f : 強制チェック(Filesystem state が "clean" でも強制実行する) $ e2fsck -f /dev/sda1 # -y : すべての質問に自動で Yes(バッチ処理向け) $ e2fsck -fy /dev/sda1 # -n : 読み取り専用でチェックのみ(修復しない・影響確認用) $ e2fsck -n /dev/sda1 # -C 0 : 進捗バーを表示する(大容量ディスクで経過確認したい場合) $ e2fsck -C 0 /dev/sda1 # 動作確認: RHEL 9.4 / e2fsprogs 1.46.5

2. XFSファイルシステムの場合(RHEL 8以降のデフォルト)

RHEL 8 以降では XFS がデフォルトのファイルシステムです。XFS の場合は xfs_repair コマンドを使います。

# XFS ファイルシステムの確認 $ blkid /dev/sda1 /dev/sda1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="xfs" # XFS の修復(アンマウントが必須) $ xfs_repair /dev/sda1 # 修復前のドライランチェック(実際には修復しない) $ xfs_repair -n /dev/sda1 # 動作確認: RHEL 9.4 / xfsprogs 5.14.2

3. 再発防止:errorsポリシーの見直し

ext4 のデフォルトは errors=remount-ro(エラー検出時に自動で read-only にする)です。
本番環境では、管理者に検出させるために errors=panic(カーネルパニックで強制停止)や errors=continue(ログのみ・継続動作)に変更する選択肢もあります。変更は tune2fs で行います。

# 現在の errors ポリシーを確認する $ tune2fs -l /dev/sda1 | grep 'Errors behavior' # errors ポリシーを変更する(例: continue に変更) $ tune2fs -e continue /dev/sda1 # 変更を確認する $ tune2fs -l /dev/sda1 | grep 'Errors behavior' Errors behavior: Continue

「Read-only file system」修復でよくある失敗

1. 「fsck: Device or resource busy」が出た場合

# エラー例 $ fsck /dev/sda1 fsck.ext4: Device or resource busy while trying to open /dev/sda1 Filesystem mounted or opened exclusively by another program! # マウント状態を確認する $ findmnt /dev/sda1 # umount してから fsck を実行する $ umount /dev/sda1 $ fsck -y /dev/sda1 # ルートパーティション等でumountできない場合はシングルユーザーモードで実施する

2. 「fsck: unable to resolve UUID」が出た場合

# エラー例 $ fsck UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx fsck: unable to resolve 'UUID=xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # blkid で UUID とデバイスの対応を確認してからデバイスパスで直接指定する $ blkid /dev/sda1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4" $ fsck /dev/sda1

3. fsck後もread-onlyが続く場合

fsck を実行して「clean」と出たにもかかわらず、再起動後も read-only になる場合はハードウェア障害の可能性が高いです。

・smartctl -a /dev/sda でディスクのSMART情報を確認する
・dmesg に「ata」「I/O error」が繰り返し出ていないか確認する
・RAID 構成の場合は RAID コントローラーのイベントログを確認する

本記事のまとめ

Read-only file system エラーは「切り分け」が最も重要です。dmesg の出力内容によって対処方法が変わります。
やりたいこと コマンド
カーネルエラーを確認する dmesg | grep -iE 'error|ext4|i/o'
システムログを確認する journalctl -k --no-pager | grep -i error
ファイルシステム状態を確認する tune2fs -l /dev/sda1 | grep state
マウント状態を確認する cat /proc/mounts | grep ro
緊急の読み書き復旧(remount) mount -o remount,rw /
ext4 ファイルシステムの修復 fsck -y /dev/sda1
ext4 の強制チェックと修復 e2fsck -fy /dev/sda1
XFS ファイルシステムの修復 xfs_repair /dev/sda1
UUID とデバイスの対応を確認する blkid
焦った時こそ「dmesg で確認 → 状態確認 → 切り分け → 対処」の順番を守ってください。手順を飛ばして fsck を実行してしまうことが、後の作業を難しくする一番の原因です。

ファイルシステム障害から素早く復旧できるエンジニアは「Linuxの構造」を体系的に理解している

read-only file system エラーの切り分けができるエンジニアとそうでないエンジニアの差は、ファイルシステムとカーネルの関係を「知っているかどうか」にあります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。