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で修復する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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
「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
対処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
2. 再マウント後に書き込みを確認する
# テスト書き込みで書き込み可能になったことを確認する $ touch /tmp/test_write && echo "書き込みOK" 書き込みOK # テストファイルを削除する $ rm /tmp/test_write
障害対応の手順を「型」として身につけると、パニックにならずに冷静に動けます
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 |
ファイルシステム障害から素早く復旧できるエンジニアは「Linuxの構造」を体系的に理解している
read-only file system エラーの切り分けができるエンジニアとそうでないエンジニアの差は、ファイルシステムとカーネルの関係を「知っているかどうか」にあります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:systemdサービスが起動しない・failedになる時の調査手順|依存関係とユニット設定の直し方
- この記事の属するカテゴリ:Linuxトラブルシューティングへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます