本文へスキップ

レスキューモード

ネットワークが壊れたり、インストールミス、設定ミス、カーネルアップグレード、ファイアウォールルールなどが原因で、サーバーにSSHでアクセスできなくなることがあります。サーバーに全くログインできない場合(rootパスワードを持っていない、またはサーバーが起動しない)、サーバーのRAMにバニラAlpine Linuxイメージをロードするレスキューモードを使用することができます。

サーバーの root パスワードと SSH キーをお持ちの場合は、Serial Over SSH コンソール をご利用ください。

必要条件

レイヤ 3 ネットワーキング - お客様のサーバーにレスキュー OS をロードするには、IP アドレスで到達可能である必要があります。そのため、サーバーがレイヤ 3 またはハイブリッドネットワーキングモードである必要があります。現在サーバーが純粋なレイヤ 2 構成の場合、レスキュー モードを使用するには レイヤ 3 またはハイブリッド ネットワーキング モードに変換 する必要があります。

SSH 鍵 - レスキュー OS の起動後にサーバーにアクセスするには、有効な SSH 鍵が必要です。Rescue OS は、サーバーを最初にプロビジョニングしたときに関連付けられた SSH 公開鍵を使用します。

ルートパーティション - 修復またはリカバリ操作の種類によっては、元のオペレーティングシステムのルートパーティションの場所が必要になります。この情報を見つける最良の方法は、レスキューモードが必要になる前に、オペレーティングシステム自体から見つけることです。例えば、Ubuntuではルートパーティションをdf -hで見つけることができます。

レスキューモードへの起動

レスキューモードに入るには、サーバーのメイン_Overview_ページからレスキューモードを見つけることができます。Server Actions をクリックし、ドロップダウンからRescue OS を選択します。

Rescue OS in the Server Actions Menu

サーバを再起動し、RAMにRescue OS Alpine Linuxイメージをロードし、サーバを Alpine Linuxにブートします。サーバーのパブリックIPv4アドレスはそのままです。

サーバーが起動したら、認証されたSSHキーを使ってrootとしてSSH接続できる。以前SSHを使ってサーバーに接続していた場合は、ホスト鍵が変更されたという警告が表示されるかもしれませんので、接続する前にローカルマシンのknown hostsファイルからホスト鍵を削除してください。

ssh root@<server_ip_address>

サーバーにSSH接続に成功すると、Rescue OSのイントロとコマンドラインプロンプトが表示されます。

,------. ,--. ,--.
| .---' ,---. ,--.,--.`--',--,--, `--',--. ,--.
| `--, | .-. || || |,--.| \,--. \ `' /
| `---.' '-' |' '' '| || || || | / /. \
`------' `-| | `----' `--'`--''--'`--''--' '--'
`--'
===============================================
OS Rescue Environment
Commit: dd4b2268 (main) BuildNo: unknown
===============================================
Based on Alpine Linux 3.18.4

Use "apk" package manager for additional utilities.
See docs at http://wiki.alpinelinux.org
localhost:~#

オリジナルのルートパーティションのマウント

多くの問題を解決するには、元のOSのルートパーティションをマウントする必要があります。元の OS のルートパーティションがどこにあるかわからなければ、推測してみましょう。多くの場合、dev/sda3dev/sdc3です。サーバによってはdev/mdxxxにあるかもしれませんが、xxxmdデバイスの番号です。

このページの例はdev/sda3から/mntをマウントしています。

mount -t ext4 /dev/sda3 /mnt

パーティションのマウントに成功したら、cd をパーティションに追加します。

cd /mnt

lsを実行すると、元のOSのファイルシステムが表示されます。

localhost:/mnt# ls

この出力例はUbuntu 20.04のものです。

bin home libx32 opt sbin tmp
boot lib lost+found proc snap usr
dev lib32 media root srv var
etc lib64 mnt run sys

ルートパーティションにアクセスできたら、修復することができます。

一般的な使用例と修理

ルートパスワードのリセット

rootパスワードを忘れたり、保存していないために、通常SSHでサーバーに入ることができ、SOS/OOBコンソールを使用できない場合、レスキューモードでリセットすることができます。

/mntにルートファイルシステムをマウントした後、chrootを使用してマウントされたファイルシステムをロードし、passwdコマンドを直接使用して既存のルートパスワードを変更することができます。

chroot /mnt /bin/bash
>
passwd

ファイルの復元

サーバーが元の OS で起動できなくなり、重要なファイルを復元する必要がある場合は、レスキューモードから scp を使用してファイルを別の場所に移動できます。

ホームディレクトリの /demo フォルダにデモフォルダがある場合、scp を使用してローカルマシンに保存できます。

scp -r root@<server_ip_address>:/mnt/home/demo /User/Downloads

パーティションのサイズ変更と追加

デフォルトでは、ブートドライブにはすべてのドライブ領域を使用するルートパーティションがあります。サーバーによっては、さらにフォーマットされていないドライブがありますが、同じブートドライブに複数のパーティションを作成する必要がある場合は、レスキューモードに入ってルートパーティションを縮小し、新しいパーティションを作成することができます。

このプロセスは使用するファイルシステムによって異なりますが、Ubuntu などの ext4 を搭載した OS を使用している場合は、resize2fsgdisk を使用してファイルシステム/パーティションのサイズを変更し、追加のパーティションを作成できます。

私たちのイメージに含まれるデフォルトの cloud-init 設定ファイルでは growpartresizefs モジュールが有効になっており、パーティションを縮小するだけで追加パーティションを作成しない場合、ルートパーティションのサイズを最大ドライブサイズに戻します。この動作を避けたい場合は、/etc/cloud/cloud.cfg にある cloud-init 設定ファイルを編集して -growpart-resizefs モジュールを削除してください。ファイルを保存すると、cloud-init は OS が起動するたびにパーティションのサイズを変更しようとしなくなります。

Alpine Linux用追加パッケージ

レスキューモードに使用される Alpine Linux イメージには、特別なオペレーションに必要なパッケージが欠けている可能性があります。例えば、fsckを実行するにはe2fsprogsパッケージをインストールする必要があります。

apk add e2fsprogs

インストールに成功したら、例えば sda1 上で fsck を実行できます。

fsck.ext4 -f -y /dev/sda1

ext4 以外のファイルシステムでパーティションをフォーマットする場合、zfs のような他のパッケージが必要になるかもしれません。Alpine Linux パッケージディレクトリ にインストール可能なパッケージが全てあります。

元のオペレーティング・システムに戻る

元のOSに戻すには、サーバーを再起動すればいい。

アルパイン・リナックスより:

Alpine Linuxを再起動するには、rebootコマンドを使用します。

reboot

コンソールから:

サーバーの_Overview_ページからサーバーを再起動するには、Server Actions をクリックし、ドロップダウンからReboot を選択します。

Rebooting a Server from the Console

いずれかのプロセスでサーバーの再起動が完了すると、元のオペレーティングシステムにブートし直します。

このページは役に立ちましたか?