【合格体験記】LPIC 305  に挑戦してきた【お世話になった ChatGPT】

先日、LPIC 305 試験を受けてきました。

結果は 520 点（合格ラインは 500 点）で合格でした。

あまり高得点ではなく、威張れるほどのものではないですが、試験を受けてみて思ったことを書き留めていこうと思います。

## 試験範囲

以下のシラバスの内容が試験範囲となります。

https://www.lpi.org/ja/exam-305-objectives/

LPIC には少し前まで 304 という試験がありましたが、304 試験の仮想化の範囲が 305 としてリニューアル（移植?）され、さらにコンテナの範囲が追加された形になっていると思われます。

## 勉強に使った書籍・ツール

* 徹底攻略 LPIC Level3 304 教科書+問題集
  * いわゆる黒本というやつです
  * この仮想化の範囲を読むことで、305 試験の一部を学習することができます

https://amzn.asia/d/7rfzgbF

* イラストでわかるDockerとKubernetes
  * containerd, runc 等の説明が図解入りで載っており、なおかつ薄くてさらっと docker や kubenetes のイメージが学習できるかなと思いました

https://amzn.asia/d/1iJN9XI

* ChatGPT
  * 試験範囲のテキストを ChatGPT に書いてもらいました
  * 「試験範囲はこれです。用語とユーティリティはこれです。この範囲のテキストを書いてください。」的な感じで書いてもらいました
    * ざっくりと概要を理解するには良いかもしれません
    * ただ、書かれた情報がすべて合っているとは限らないので、ざっくり理解した後は、最終的に自分でその情報の真偽を判断しなければならないと思います（だいたい合ってる。くらいのものだと思った方が良いと思います。）

## 事前知識

仕事で docker（主に docker compose を用いる）を多少触っているので、docker 周りのなんとなくの概念やできることなどは把握できていたかなと思います。
また、Vagrant についても普段から使っているので、基本的なコマンドや何ができるかくらいは把握できていたと思います。

## それぞれの範囲についての概要・感想

シラバスの範囲に沿って、それぞれの範囲の話をしていきます

### 課題 351: Full Virtualization

#### 351.1 仮想化の概念と理論 (総重量: 6)

LPIC 304 とかなり被っている範囲になるかなと思います。
LPIC 304 の黒本でしっかり勉強しておけると良いのかなと思います。


#### 351.2 Xen (総重量: 3)

LPIC 304 とかなり被っている範囲になるかなと思います。
LPIC 304 の黒本でしっかり勉強しておけると良いのかなと思います。

#### 351.3 QEMU (総重量: 4)

LPIC 304 では KVM となっていた範囲がここに当たると思います。
LPIC 304 の黒本をしっかりやって、実機等で実際にコマンドを打ってみたりしてイメージを深めていくと良いと思いました。
私も QEMU で仮想環境を立ち上げてみたり、`Ctrl + Alt + 2` で QEMU モニタに切り替えてコマンドを打ってみたりしました。

#### 351.4 Libvirt Virtual Machine Management (総重量: 9)

LPIC 304 の黒本にもある範囲にはなると思います。（これだけで足りるかはちょっと微妙?）
LPIC 304 の黒本をしっかりやって、実機等で実際にコマンドを打ってみたりしてイメージを深めていくと良いと思いました。
virsh のコマンドは多岐に渡るので、頑張って覚えられると良いのかなと思います。
libvirt でどんな設定が可能なのか等も勉強しておけると良さそうです。

#### 351.5 仮想マシンのディスクイメージの管理 (総重量: 3)

LPIC 304 の黒本にはあまり記載のない範囲な気がします。
シラバスの用語のユーティリティにある以下の `virt-xxx` のコマンドは一通り使用例とともに使い方を勉強しておいた方が良いと思います。

```
virt-cat
virt-copy-in
virt-copy-out
virt-diff
virt-inspector
virt-filesystems
virt-rescue
virt-df
virt-resize
virt-sparsify
virt-p2v
virt-p2v-make-disk
virt-v2v
virt-sysprep
```

### 課題 352: コンテナ仮想化

#### 352.1 コンテナ仮想化の概念 (総重量: 7)

LPIC 305 でがっつり追加された範囲となります。
runc, containerd, CRI-O 等の概念は先ほどの書籍等でその概要や関係性を掴んでおくと良いかなと思いました
以下の知識は特に持っておくと良さそうに感じました。

- カーネルネームスペース、コントロールグループ、ケイパビリティとはそれぞれ何か
- 用語とユーティリティにある各種コマンドやパスがどんなものか
  - nsenter や unshare のコマンドの使い方や使用例
  - /sys/fs/cgroups の中身の構造
- OpenVZ の vzctl コマンドくらいは覚えておいてもいいかもしれません

#### 352.2 LXC (総重量: 6)

LPIC 305 でがっつり追加された範囲となります。
ChatGPT に書いてもらったテキストを元に基本的なコマンドを覚えて、これで大丈夫かなと試験に臨んだら痛い目をみた分野です。
総重量 6 なので意外に問題数があります。
コマンドにおいては、コンテナの作り方、管理の仕方だけでなく、統計情報の表示くらいのレベルまでは把握しておいた方が良いと思われます。

#### 352.3 Docker (総重量: 9)

LPIC 305 でがっつり追加された範囲となります。
Docker でどんなことができるのかを把握しておくと良さそうです。
Dockerfile の文法の勉強も必要だと思います。こう書くとこのように動く等しっかり理解しておくとよいと思います。
docker のボリュームやネットワークの作成、コンテナ起動時のアタッチ、複数のボリュームやネットワーク等の作成まで実機で実際に動かしつつマスターしておくと良いと思います。

#### 352.4 コンテナオーケストレーションプラットフォーム (総重量: 3)

LPIC 305 でがっつり追加された範囲となります。
主に Kubenetes の基本概念やコマンド、ツールついて学習しておけると良いと思います。
ただ、docker compose や docker swarm についても、どのようなことができるのか、基本的な操作の仕方など把握しておいた方が良いと思います。

### 課題 353: VMのデプロイとプロビジョニング

#### 353.1 クラウド管理ツール (総重量: 2)

LPIC 304 とかなり被っている範囲になるかなと思います。
LPIC 304 の黒本でしっかり勉強しておけると良いのかなと思います。

#### 353.2 Packer (総重量: 2)

LPIC 305 でがっつり追加された範囲となります。
ただ、総重量も少ないので、Packer を何のために使うのか、どんなことができるのかをまずは把握できると良いと思います。
テンプレートファイルの書き方や、文法の検証のコマンド、ビルドのコマンド等くらいを使えるようになっておければいいのかもしれません。

#### 353.3 cloud-init (総重量: 3)

LPIC 305 でがっつり追加された範囲となります。
cloud-init で何ができるのか、/var/lib/cloud/ の path が何に使われるのかなど基本的なところを把握しておけると良いと思います。

#### 353.4 Vagrant (総重量: 3)

LPIC 304 の黒本にもちょっと説明が載っています。
LPIC 304 の黒本に載っているコマンドを使いこなせるようになること、Vagrantfile の書き方を覚えておくことが大事だと思います。

## 全体的な感想

LPIC 304 の黒本はどこまで通用するのかなと若干不安ではありましたが、章末問題、巻末問題はしっかり理解しておけると仮想化の範囲における試験勉強としては有用なのかなと思いました。
残りの分野はひたすら ChatGPT にテキストを書いてとお願いして、そのテキストを読んで概要を掴んで、さらに気になったところを自分で調べたり、実機で動かしたりして学習をしました。

試験本番においては、割と行けるっしょ！的なノリで試験に突っ込んでいった感があり、LXC のあたりは全然わからずボロボロでした...。
ただ、普段から docker や Vagrant 等は触っていたりして、仮想化やコンテナが大体どんな感じのものかのイメージはあったので、選択肢を見て迷った際、これっぽいなというように一応自分なりの答えまで辿り着いた上で回答はできたかなと思います。