なにがしたい?
ある日、いつものように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を超えるというのもどうかと思うけど(今回は調子に乗って本番環境のデータを全部突っ込んだので…。しかも複数のアプリの……。)