技術・開発

【Linux】HDDマウント忘れで容量100%に!? fstabの正しい設定とマウントオプション一覧

2012年11月4日

ある朝、Webサイトを開こうとしたら全く表示されない。
「また何かおかしくなったのか!?」と原因を調査したところ、恐ろしい事実が判明しました。

データ保存用の「ファイルストレージ(専用HDD)」が正常にマウントされておらず、すべてのデータがメインHDDに書き込まれていたのです。
その結果、メインHDDの容量が100%に達し、システムが正常に動かなくなってしまいました……。

今回はこの反省を踏まえ、サーバー再起動時にも自動でファイルストレージがマウントされるよう、/etc/fstab の設定を正しく行う手順を備忘録としてまとめます。

1. マウントポイント(フォルダ)の作成

まずは、該当するHDDをマウントするための空フォルダを作成します。今回は /storage フォルダを作成します。

mkdir /storage

2. デバイスにラベル(e2label)を付与する

/etc/fstab を開いて /dev/sdb1 を指定しようと思ったのですが、最近のLinuxでは仕様が変わり、デバイス名(/dev/sdb1など)の直書きではなく「ラベル(LABEL)」または「UUID」を使って指定するのが一般的になっているようです。

まずは対象のデバイスに e2label コマンドでラベルを付与します。

e2label /dev/sdb1 /storage

3. /etc/fstab の編集と注意点

ラベルを付与したら、/etc/fstab に以下の1行を追記します。

# デバイス       マウントポイント ファイルシステム オプション  dump fsck
LABEL=/storage  /storage      ext4          defaults  1    2

【重要】再起動前のマウントテスト fstab の記述ミス(ラベルのスペルミス等)があると、最悪の場合Linux自体が起動不能になります(過去にfstabによるサーバー起動エラーで地獄を見た経験があります…)。

そのため、いきなり再起動するのではなく、一時的にfsckオプション(一番右の数字)を 0 にしてテストするか、記述後に mount -a コマンドを叩いてエラーが出ないか必ず確認してください。

4. 再起動後の確認

サーバーを再起動したら、df コマンドで正常にマウントされているか、容量が反映されているかを確認します。

$ df -h
ファイルシステム サイズ 使用 残り 使用% マウント位置
/dev/sdb1       1.8T   75G  1.7T   5% /storage

無事にマウントされました!


補足資料:fstabの書式とオプション一覧

OS起動時にマウントを行うデバイスと場所を指定する fstab の書式と、便利なマウントオプションをまとめました。

fstabの基本書式

デバイスマウントポイントファイルシステムマウントオプションdumpオプションfsckオプション
LABEL=/storage/storageext4defaults12
  • デバイス: e2labelで指定したラベル、またはUUIDを記載。
  • マウントポイント: mkdir で作成したマウント先の空ディレクトリ。
  • ファイルシステム: HDDのフォーマット形式(ext4など)。
  • マウントオプション: 複数指定する場合はカンマ区切りで入力(下記表を参照)。
  • dumpオプション: dump コマンド(バックアップ)の対象にするか(0: 対象外 / 1: 対象)。
  • fsckオプション: 起動時のファイルシステムチェックの順序(0: 行わない / 1: ルートディレクトリ用 / 2: それ以外)。※同一HDDで同じ数値を指定するとチェックが遅くなる場合があります。迷ったら 2 が無難です。

マウントオプション一覧

マウントオプションに defaults を指定すると、標準的な設定(rw, suid, dev, exec, auto, nouser, async)が一括で有効になります。個別で制御したい場合は以下を指定します。

オプション概要備考
asyncすべてのデータ読み書きを非同期処理で行います。同期処理で行う場合は sync を指定。
atimeアクセスする度にinodeのアクセス日時を更新します。更新しない場合は noatime を指定。
automount -a 実行時にマウントの対象にします。対象外にする場合は noauto を指定。
codepage文字コードを指定します。(例: Shift_JISは 932、UTF-8は 65001WindowsフォーマットのHDD等で使用。
defaultsrw, suid, dev, exec, auto, nouser, async を一括で有効にします。基本的なマウントに推奨。
devファイルシステムのデバイスを利用できるようにします。利用させない場合は nodev を指定。
execバイナリの実行を許可します。許可しない場合は noexec を指定。
gidマウントポイント以下のグループを指定したID(数字)に変更します。
iocharsetマウントする際、システムの文字コードを指定します。(例: utf-8
nosuidSUID・SGIDを無効にします。有効にする場合は suid を指定。
nouserroot(管理者)のみマウント可能にします。一般ユーザーにも許可する場合は user
ro読み込み専用でマウントします。
rw読み込み・書き込み可能な状態でマウントします。
uidマウントするユーザーID(数字)を指定します。

-技術・開発
-, , , , , ,