6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaravelAdvent Calendar 2019

Day 10

Laravel Homestead の MySQL の容量を増やす

Posted at

なにがしたい?

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

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?