IBM CloudでOS起動を妨げるファイルを削除する手順

## 概要
IBM CloudでのWindows Serverの起動トラブルを、特定のファイル削除で解決する手順を紹介します。
特に、[CrowdStrikeの障害を発端とするWindowsホストの障害](https://www.crowdstrike.jp/statement-on-falcon-content-update-for-windows-hosts/)に対処する方法を例に説明します。

本記事では、IBM Cloud Virtual Server for VPCのWindows Serverにおける復旧手順についての内容です。

## 前提
・VPCが作成されていて、OriginalなWindows Serverが作成されている
・そのWindows Server上に削除したいファイルがある


## 復旧の方針
1. インスタンスのブート・ボリュームのスナップショットを作成する
2. 同じAvailability Zoneでスナップショットから新しいボリュームを作成する
3. 同じAvailability Zoneで新しいWindowsインスタンスを作成する
4. 新しいボリュームをデータ・ボリュームとして新しいインスタンスにアタッチする
5. 作成したWindowsインスタンスにログインする
6. アタッチされたボリュームの X:\Windows\System32\drivers\CrowdStrike\ ディレクトリに移動し、C-00000291*.sysを削除する
※この例では、X: は影響を受けるインスタンスのセカンダリボリュームに割り当てられたドライブ文字である。利用する環境では異なる文字である可能性がある。
7. 新しいインスタンスからボリュームを切り離す
8. 切り離したデータボリュームをブートボリュームとしてWindows Serverを作成する
![スクリーンショット 2024-07-25 14.11.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/26c3517c-aef3-821c-7897-93d5d30ed126.png)

## 復旧の手順
### 1. インスタンスのブート・ボリュームのスナップショットを作成する
IBM Cloud ポータルで、対象の`Virtual Server for VPC`を選択し、`ストレージ・ボリューム`セクションから`ブート・ボリューム`を見つけます。そのボリュームのスナップショットを作成します。

![スクリーンショット 2024-07-25 10.10.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/102771b9-0353-7aa1-1ddb-4907486d6bb8.png)
[IBM Cloud Docs：Block Storage for VPC スナップショットの作成](https://cloud.ibm.com/docs/vpc?topic=vpc-snapshots-vpc-create&interface=ui#snapshots-vpc-create)

### 2. 同じAvailability Zoneでスナップショットから新しいボリュームを作成する
作成したスナップショットから新しいボリュームを同じAvailability Zoneで作成します。
作成した`スナップショット`を選択し、`アクション`メニューから`ボリュームの作成`に進み、スナップショットからボリュームを作成します。

![スクリーンショット 2024-07-25 11.15.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/05f6456f-1240-92b7-98ac-1463c9bb7a44.png)
![スクリーンショット 2024-07-25 11.17.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/f39a8cc4-bb59-054b-a659-5c6be20f2e5f.png)
[スナップショットのリストからボリュームを作成する](https://cloud.ibm.com/docs/vpc?topic=vpc-baas-vpc-restore&interface=ui#baas-vpc-restore-snaphot-list-ui)

### 3. 同じAvailability Zoneで新しいWindows インスタンスを作成する
同じAvailability Zoneで新しいWindows インスタンスを作成します。IBM Cloud ポータルから、新規VSIを作成します。`ロケーション` `名前` `イメージ` `プロファイル` `ネットワーキング` 等を適切に設定します。
![スクリーンショット 2024-07-25 11.11.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/c8057d18-dcd5-16f4-aafa-b23ee8cc3a84.png)
[仮想サーバー・インスタンスの作成](https://cloud.ibm.com/docs/vpc?topic=vpc-creating-virtual-servers&locale=ja&interface=ui)

浮動IPを利用してWindows Serverにログインする場合には、必要に応じて浮動IPを付与しておきます。
[浮動 IP アドレスを使用したネットワーク・インターフェースの作成](https://cloud.ibm.com/docs/vpc?topic=vpc-fip-working&interface=ui)

### 4. 新しいボリュームをデータ・ボリュームとして新しいインスタンスにアタッチする
新しいボリュームを新しいWindowsインスタンスにデータ・ボリュームとしてアタッチします。
新しい`仮想サーバー・インスタンス`の`概要`タブの下部にある`ストレージ・ボリューム`セクションへ移動します。`接続`から2で作成した新しいボリュームを選択して`保存`します。
新しいボリュームがデータ・ボリュームとしてインスタンスにアタッチされていることを確認します。
![スクリーンショット 2024-07-25 11.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/6c45b643-e4ba-dcef-6bb1-e097c4ffb5b6.png)

### 5. 作成したWindowsインスタンスにログインする
今回は、Virtual Serverに浮動IPを付与して、Microsoft Remote DesktopでWindows インスタンスにログインしています。
![スクリーンショット 2024-07-25 11.57.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/7bf4494c-265c-04b5-2f77-c66f14dfe0f0.png)
[IBM Cloud: VPCのWindows仮想サーバーへのログイン方法](https://qiita.com/takason/items/bd9c683acaa39383d809)

### 6. アタッチされたボリュームの X:\Windows\System32\drivers\CrowdStrike\ ディレクトリに移動し、C-00000291*.sysを削除する
スタートメニューを右クリックし、`Disk Management`を選択し、アタッチされたボリュームを確認します。必要に応じてボリュームの初期化、New Simple Volumeを作成し、ボリュームをマウントします。
`X:\Windows\System32\drivers\CrowdStrike\` フォルダに移動し、CrowdStrikeフォルダ内の`.sysファイル`を見つけて削除します。

:::note warn
本検証環境ではCrowdStrikeは利用していないので、Original Serverにtest fileを置いて検証しています。マウントしたボリュームからtest fileを削除できることを確認しています。
:::

### 7. 新しいインスタンスからボリュームを切り離す
新しい`仮想サーバー・インスタンス`の`概要`タブの下部にある`ストレージ・ボリューム`セクションへ移動し、`データ・ボリューム`切り離します。
1番右側の切り離しマークから操作ができます。

![スクリーンショット 2024-07-25 13.04.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/b3877d74-a79f-81b6-8aea-fb840e0732b4.png)
[仮想サーバー・インスタンスからの Block Storage for VPC ボリュームの切り離し](https://cloud.ibm.com/docs/vpc?topic=vpc-managing-block-storage&interface=ui#detach)

### 8. 切り離したデータボリュームをブートボリュームとしてWindows Serverを作成する
[VPC用のブロック・ストレージ・ボリューム](https://cloud.ibm.com/vpc-ext/storage/storageVolumes)のリストからインスタンスから切り離したボリュームを選択し、ボリュームの詳細を確認します。`接続済み仮想インスタンス`セクションで、接続されている仮想インスタンスはないことを確認します。
`接続` → `サーバーの作成` →`ブート・ボリュームとして接続`を選択し、復旧版となるWindows Serverを作成します。

![スクリーンショット 2024-07-25 13.14.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/51661aba-d427-3f55-ff51-0d25ce0a22fe.png)
![スクリーンショット 2024-07-25 13.20.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600839/36dc74cd-0aeb-653d-284c-2517045d0112.png)

## さいごに
ご紹介した手順ではOriginal Serverとは別のIPアドレスに変わってしまいます。IPアドレスが変わらないようにするためには、一度Original Serverを削除した上で、復旧版ServerのIPアドレスを予約済みIPから設定することで解決できます。

:::note warn
Original Server削除時に、boot volumeが一緒に削除されないように、Auto release(自動削除)の設定を無効にしておくと安心です。
:::