Linuxサーバー起動時ファイルシステムチェックをスキップ

概要

Linuxサーバーを再起動した場合fsckが自動で走りなかなか起動しないときがあります。
fsckは重要ですが早く起動したいときに困ることがあります。
そんなときに使えるTIPSです。

方法その1. カーネルパラメータにfastbootを指定

以下のように起動時にgrubカーネルパラメータの最後にfastbootをつけることでfsckをスキップして起動することが出来ます。

kernel /boot/vmlinuz-2.6.32-754.10.1.el6.x86_64 ro root=LABEL=/ LANG=en_US.UTF-8 console=tty0 console=ttyS0,115200n8 fastboot

方法その2. ファイルシステムチェック無しで直ちに再起動

shutdownコマンドを使って再起動する際に小文字のfオプションをつけることでfsckをスキップして再起動させることが出来ます。

shutdown -fr now


上記を実行するとシャットダウン時のターミナルに以下の表示が出ます。

Stopping xinetd: [ OK ]
Stopping crond: [ OK ]
Shutting down ntpd: [ OK ]
Shutting down interface eth0: [ OK ]
Shutting down interface eth1: [ OK ]
Shutting down loopback interface: [ OK ]
Starting killall: [ OK ]
Sending all processes the TERM signal...
Sending all processes the KILL signal...
Saving random seed:
Syncing hardware clock to system time
Turning off swap:
Turning off quotas:
Unmounting file systems:
Halting system...
On the next boot fsck will be skipped.
md: stopping all md devices.
Shutdown: vda
Power down.
acpi_power_off called


ちなみに強制的にファイルシステムチェックが行われるように再起動する場合

大文字のFオプションをつけることで強制的にfsckが行われるように出来ます。

shutdown -Fr now

fstabのデバイス指定をUUIDにする

ちょっと前に見かけたこちらのツイート

/dev/sda	/	 ext4	defaults	0 0
/dev/sdb	/data	 ext4	defaults	0 0

fstabにこういったデバイス名の指定をしているとsdasdbがOS再起動等でデバイス名が入れ替わってしまいトラブルが起きてしまいます。
そういった場合はUUIDで指定してあげることでマウントされるデバイスを任意に指定出来るためこういった事前にトラブルを防ぐことが出来ます。

bukidコマンドを使って各デバイスのUUIDを調べます。

$ blkid
/dev/sda: UUID="xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" TYPE="ext4" PARTUUID="xxxxx-xx"
/dev/sdb: UUID="yyyyy-yyyyy-yyyyy-yyyyy-yyyyy" TYPE="ext4" PARTUUID="yyyyy-yy"

sdasdbのUUIDが確認出来ます。

このUUIDを使ってfstabにデバイスを指定します。

UUID=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx /	 ext4	defaults	0 0
UUID=yyyyy-yyyyy-yyyyy-yyyyy-yyyyy /data	 ext4	defaults	0 0

google-betaのエラーが出たときの対処法

概要

いつからのタイミングかTerraformでGCPのリソース管理している環境で以下エラーが出るようになってしまいました。

Error: module : provider alias must be defined by the module: google-beta


対応

以下のようにproviderの設定でgoogle-betaの設定を追加することで解消しました。

provider "google" {
  project = "my-project-id"
  region  = "asia-northeast1"
}

provider "google" {
  project = "my-project-id"
  region  = "asia-northeast1"
}
provider "google-beta" {
  project = "my-project-id"
  region  = "asia-northeast1"
}

変更後、terraform initでOKです。