KVM仮想ゲストに、仮想ディスクを追加して使用する方法

# 概要
KVMのゲストに、仮想ディスクを追加して、特定のディレクトリ領域だけ容量を変更できるようにさせたくなる事があるかもしれない。その時は、以下の手順で作成するとよい。

# 手順

virt-managerを起動する。

```
sudo virt-manager
```

1. 対象のゲストを選ぶ。
1. 電球マークを押す。
1. その後、ハードウェアの追加を押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/5919ab7d-ff02-2e86-0d04-55071cf9ee3c.png)

1. その後、ストレージ欄の、仮想マシン用にディスクイメージを作成するから
1. 仮想ディスクの容量をつける。
1. デバイスの種類：ディスクデバイス（デフォルト）
1. バスの種類：virtIO（デフォルト）
上記を選択したら、完了を押す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/569b6b65-75f0-4ce5-40cb-a5d2bb06ee92.png)

電球マークの所から、VirtIO Disk 2が新たに作成され、ストレージサイズが指定された容量になっているのを確認する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/893b33c1-56ab-43b7-0c4e-2464b67feb9d.png)

ここまでできたら、後はゲスト内で行う操作のため、virt-managerを抜ける。

ゲストを起動させる　or　virt-managerのコンソールで入り、ゲスト内で操作していく。

# パーティションの作成

以下のコマンドを実行し、新しく作成した仮想ディスク`dev/vdb`が存在する事を確認する
```
fdisk -l
```
```:実行結果
ディスク /dev/vda: 40 GiB, 42949677056 バイト, 83886088 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: A37C8F32-17F0-4224-9F43-CDE782E5F55C

デバイス   開始位置 終了位置   セクタ サイズ タイプ
/dev/vda1      2048  1230847  1228800   600M EFI システム
/dev/vda2   1230848 11716607 10485760     5G Linux ファイルシステム
/dev/vda3  11716608 83884031 72167424  34.4G Linux ファイルシステム


ディスク /dev/vdb: 800 GiB, 858993459200 バイト, 1677721600 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0xc3ee08dd
```
以下のコマンドで,新しいディスクのパーティションを作成する。
```
fdisk /dev/vdb
```

```:実行結果
Command (m for help):
```
新しいパーティションのために`n`と入力

```:実行結果
Command action
e   extended
p   primary partition (1-4)
```

プライマリーパーティションを作成するため、`p`を入力する。

使用可能なパーティション番号を選択します。`1`を入力して、最初のパーティションを選択します。

```:実行結果
Partition number (1-4): 1
```
パーティションのサイズを選択します。`Enter` を押してディスク全体を割り当てます

```:実行結果
Last cylinder or +size or +sizeM or +sizeK (2048-1677721599, default 1599):
```
`t`を入力して、パーティションタイプを設定します。
前の手順で作成したパーティションを選択します。ここでは`1`を選択します。

```:実行結果
Partition number (1-4): 1
```

次に、Linuxのパーティションを作成するため、`83`を入力します。
```:実行結果
Hex code (type L to list codes): 83
```
その後、`w`を入力して変更を書き込み、終了します。
```:実行結果
Command (m for help): w
```
その後、以下のコマンドで、ext4のファイルシステムを作成する。
extの時は、-j を指定する事でext3にできる。
```:コマンド
mkfs -t ext4 /dev/vdb1
```

# パーティションのマウント＆fatabの設定
以下のコマンドで、マウント先のディレクトリを作成する。
```
mkdir /マウント先
```
その後、先ほど作成したパーティションをマウントさせる。
```
mount /dev/vdb1 /マウント先
```
この状態で、以下のコマンドを実行して、/dev/vdb1のタイプがext4、マウント位置が/マウント先である事を確認する。

```
df -Th
```

```:実行結果
ファイルシス   タイプ   サイズ  使用  残り 使用% マウント位置
devtmpfs       devtmpfs   3.9G     0  3.9G    0% /dev
tmpfs          tmpfs      3.9G     0  3.9G    0% /dev/shm
tmpfs          tmpfs      3.9G   17M  3.9G    1% /run
tmpfs          tmpfs      3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/vda3      xfs         35G   11G   25G   30% /
/dev/vda1      vfat       599M  6.9M  592M    2% /boot/efi
/dev/vda2      xfs        5.0G  114M  4.9G    3% /var/log
/dev/vdb1      ext4       787G   70M  747G    1% /マウント先
tmpfs          tmpfs      796M     0  796M    0% /run/user/30022
```
この状態では、再起動したときにマウントが消えるので、etc/fstabへの記載を行う。以下のコマンドでvdb1のUUIDを確認する。
```
 ls -l /dev/disk/by-uuid/
```

その後、/etc/fstabを以下のように編集する。
```
vi /etc/fstab
```
以下の内容を、etc/fstabに追加する。UUIDは出力に合わせて変更する事。
```
UUID=ls -l~~で確認したUUID /マウント先 ext4    defaults        0 0
```
上記を追記後、:wqで閉じる。これで再起動後も/dev/vdb1が/マウント先で使用される。


# 参考サイト

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/virtualization_administration_guide/sect-virtualization-virtualized_block_devices-adding_storage_devices_to_guests

https://qiita.com/wnoguchi/items/b31e268b6b7236cdf8db

https://engineer-ninaritai.com/linux-fstab/