【KVM入門①】〜KVMを使って仮想マシンを作成する〜

# KVM入門一覧
- [【KVM入門⓪】〜Linuxの基礎知識〜](https://qiita.com/ryutarom128/items/00ed01b0c9dd59716964)
- 【KVM入門①】〜KVMを使って仮想マシンを作成する〜👈今ここ
- [【KVM入門②】〜複数の仮想マシンを作成して仮想マシン間で通信を行えるようにする〜](https://qiita.com/ryutarom128/items/2665a0f871d90f7f5358)
- [【KVM入門③】〜DNSとhostsの設定を行う〜](https://qiita.com/ryutarom128/items/7dd3646beddb96dc647a)
- [【KVM入門④】〜NFSを使って全ての仮想マシンでファイルを共有する〜](https://qiita.com/ryutarom128/items/3d66f1a5d61c3eb4e426)
- [【KVM入門⑤】〜LDAPを使ってユーザ情報などを一元管理する〜](https://qiita.com/ryutarom128/items/b008ca44b7265164879c)

# はじめに
KVMシリーズ第1回です。
今回はKVMで1つ仮想マシンを作成するところまでをしていきます。
まずは実際に行うコマンドを紹介し、その後解説をしていきます。

以下の図のようにホスト上に仮想マシンを1つ作成して、作成した仮想マシンに接続するところまでをこの回の目標とします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2906464/162b8de1-deea-fa2e-722c-b092d9be42c9.png)

全体の流れは大まかにこのような感じです。
1. 必要なパッケージをインストールする
1. kvmサービスを起動する
1. ISOファイルをwgetでダウンロードする
1. ダウンロードしたISOファイルをもとに、仮想マシンを作成する
1. 仮想マシンを起動する

# すること
## 初期設定
### 1. dnfをアップデートする
```bash
dnf update
```

### 2. パッケージをインストールする
```bash
sudo dnf install qemu-kvm qemu-img libvirt virt-manager virt-install virt-viewer libvirt-client guestfs-tools
```

### 3. libvirtのサービスの自動再起動を有効にする
```bash
systemctl enable libvirtd
```

### 4. libvirtのサービスを開始する
```bash
systemctl start libvirtd
```

### 5. libvirtのサービスの状況を確認する
```bash
systemctl status libvirtd
```

### 6. wgetコマンドを使えるようにする
```bash
dnf install wget
```

### 7. Rocky LinuxのISOイメージをダウンロードする
```bash
cd /var/lib/libvirt/images
```

```bash
wget https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.4-x86_64-minimal.iso
```
※ISOイメージについては以下のサイトから適切なものを選択する。

https://rockylinux.org/ja/download

### 8. 仮想マシンを作成する
```bash
sudo virt-install --name test-vm --vcpus 1 --memory 2048 --disk /mnt/images/rocky-test.qcow2,size=30,device=disk,bus=virtio,format=qcow2 --virt-type kvm --os-variant rocky9 --location /var/lib/libvirt/images/Rocky-9.4-x86_64-minimal.iso --graphics none --console pty,target_type=serial --extra-args 'console=ttyS0,115200n8'
```

※Rocky Linuxのバージョンがもし違う場合は、`--os-variant rocky9`の部分を変更する。

このコマンドを入力すると違う画面が表示される。

User text modeを選択して、初期設定をCLIで行う。

全ての項目に×がついたら`b`を押して終了する。

## 接続まで

KVMでは仮想マシンの管理に`virsh`コマンドを使う。

以下のコマンドで仮想マシンの一覧を表示できる。
```bash
[xxx@localhost ~]$ sudo virsh list --all
 Id   Name    State
----------------------
 -   test-vm  shut off
```

以下のコマンドで仮想マシンを起動する。
```bash
sudo virsh start test-vm
```

```bash
[xxx@localhost ~]$ sudo virsh list --all
 Id   Name    State
----------------------
 1   test-vm  running
```

仮想マシンを起動することができていることを確認する。

以下のコマンドで仮想マシンに接続する。
```bash
sudo virsh console test-vm
```

## 終了する
1. `logout`コマンドもしくはCrtl+Dでログインをする
1. Ctrl+]で仮想マシンを抜ける

仮想マシンをシャットダウンするときは以下のコマンドを入力する。
```bash
sudo virsh shutdown test-vm
```

# 解説
## 必要なパッケージ

今回インストールしたパッケージの一覧をまとめておきます。

| パッケージ名 | 役割 |
|:-|:-|
| qemu-kvm | 仮想マシンの作成、管理、実行 |
| qumu-img | ディスクイメージの作成、変換、リサイズ、フォーマット変更 |
| virt-manager | 仮想マシンの作成、設定、起動、停止、コンソールアクセス |
| virt-install | 仮想マシンのインストール、自動インストールスクリプトの使用、ネットワーク経由でのインストール |
| virt-viewer | 仮想マシンのコンソールアクセス、VNCやSPICEプロトコルのサポート |
| libvirt | 仮想マシンのライフサイクル管理、リソースの監視、仮想ネットワークとストレージの管理 |
| libvirt-client | `virsh`コマンドを使用した仮想マシンの作成、起動、停止、スナップショット管理など |
| guestfs-tools | 仮想ディスクの内容表示、ファイルの追加や削除、ファイルシステムの修復、ブートローダのインストール |

## 仮想マシンの削除方法
https://chee-s.net/kvm%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B

# さいごに
今回は仮想マシンを1つ作成して、作成した仮想マシンに接続するところまでの方法を紹介しました。

次回は複数の仮想マシンを作成して、仮想マシン間で通信をできるようにしていきます。

https://qiita.com/ryutarom128/items/2665a0f871d90f7f5358