Laravel Homestead の MySQL の容量を増やす

# なにがしたい？

ある日、いつものようにLaravelのローカル開発環境「Homestead」でクエリを実行したらこんなことを言われた。

> No Space Left On Device.

ディスクがいっぱい？(・∀・)
えーと…

```
 $ df
Filesystem                              1K-blocks      Used Available Use% Mounted on
udev                                       989080         0    989080   0% /dev
/dev/mapper/homestead--vg-root           18108240   5502200  11663144  33% /
/dev/mapper/homestead--vg-mysql--master  10255636   9714964         0 100% /homestead-vg/master 
↑ これか
vagrant                                 998910972 245466996 753443976  25% /vagrant
home_vagrant_code                       998910972 245466996 753443976  25% /home/vagrant/code
```

まじか……。

# 結論

こいつは `vg-mysql` という名前から察することができるように論理ボリュームになっているので、いくつかのコマンドで簡単に増やすことができます。

まずはボリュームの情報をチェック。

```
$ sudo lvdisplay
...
  --- Logical volume ---
  LV Path                /dev/homestead-vg/mysql-master ★ これを控える
  LV Name                mysql-master
  VG Name                homestead-vg
  LV UUID                z8kvQI-F9c3-8irz-y0t7-dm3b-6ius-EyBcfd
  LV Write Access        read/write
  LV Creation host, time vagrant, 2019-12-02 23:39:47 +0000
  LV Pool name           thinpool
  LV Status              available
  # open                 1
  LV Size                10.00 GiB  ★ 10GBしかないってこと
  Mapped size            95.26%
  Current LE             2560 ★ これが現在のサイズ
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:6
```

次に、論理ボリュームのサイズを拡張。

```
 $ sudo lvextend -l +4607 /dev/homestead-vg/mysql-master
  Size of logical volume homestead-vg/mysql-master changed from 10.00 GiB (2560 extents) to <28.00 GiB (7167 extents).
  Logical volume homestead-vg/mysql-master successfully resized.
```

この「+4607」が増やすサイズ。1単位で4096kiBっぽいので、10GBだと「+2560」、18GBだと「+4607」ということらしい。（4608じゃないの？と思ったけど未検証）
確認する。

```
$sudo lvdisplay
...
  --- Logical volume ---
  LV Path                /dev/homestead-vg/mysql-master
  LV Size                <28.00 GiB ★ 増えた
  Current LE             7167       ★ 増えた
...
```

このままだと実ディスクサイズが変わらないので

```
$ sudo resize2fs /dev/homestead-vg/mysql-master
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/homestead-vg/mysql-master is mounted on /homestead-vg/master; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/homestead-vg/mysql-master is now 7339008 (4k) blocks long.
```

確認する。

```
$ df
Filesystem                              1K-blocks      Used Available Use% Mounted on
udev                                       989080         0    989080   0% /dev
/dev/mapper/homestead--vg-root           18108240   5502200  11663144  33% /
/dev/mapper/homestead--vg-mysql--master  28829732   9723068  17790228  36% /homestead-vg/master
★ おおー。増えた。
vagrant                                 998910972 245468216 753442756  25% /vagrant
home_vagrant_code                       998910972 245468216 753442756  25% /home/vagrant/code
vagrant@kd9951vm ~☺ $
```


# 感想

だって、Google先生がちゃんと教えてくれなかったんだもん！（穴埋め係根性）

というのも「Homesteadの容量を増やす」的なことをググると、VMそのものの容量を増やす方法がでてきます。でもね、Homesteadは標準で128GBのHDDを積んでるんです。今回はどう考えてもMySQLの容量が100GBを超えているなんてことはなく、よくよく原因を調べてみたら、**MySQLのボリュームが10GBしかなかった**、と。それを、LVの範囲内で（コードベースの使用量によるけど、うちの場合は70GB程度まで）増やすだけだったらLinuxコマンドだけで簡単にできたよ！

ということを、後世に伝えていきたいと思い筆を執りました…。

そもそも、ローカル開発環境でMySQLが10GBを超えるというのもどうかと思うけど（今回は調子に乗って本番環境のデータを全部突っ込んだので…。しかも複数のアプリの……。）