さくらのクラウドでディスクの容量が一杯になったときにディスクサイズを上げる

さくらのクラウドを使用していて気づいたらサーバのディスク使用量が100%になっていた。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            471M     0  471M   0% /dev
tmpfs            99M  5.1M   94M   6% /run
/dev/vda3        36G   35G     0 100% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup

サーバで使用しているディスクの容量を拡張するには2種類方法がある。

  1. 既存のディスクをコピーしてサイズを拡張したディスクを追加する
    例えば現在のディスクサイズが40GBで100GBに増やしたいとすると、新たに100GBのディスクを追加する際に現在のディスク(40GB)の内容をコピーしてディスクを追加することができる。
  2. アーカイブを使用してディスク容量を増やす
    現在のディスクをアーカイブ化して、そのアーカイブをもとに新たなサイズのディスクを追加する方法。

どちらの方法でも既存のディスクの内容のままでディスクサイズを拡張できたが、アーカイブのほうがバックアップに特化していてできることが多いし料金も安いのでアーカイブを使用してディスクサイズを拡張したほうが良い。アーカイブの作成だとアーカイブの作成+マイアーカイブからのディスクの作成で2倍時間がかかるので、急いでいるときはディスクをコピーして追加したほうが早い。

既存のディスクをコピーしてサイズを拡張したディスクを追加する

まず拡張したいディスクが接続されているサーバを停止する。
ディスクの追加 -> ディスクを選択 -> 容量を拡張したいディスクを選択。
f:id:kyamashiro:20200404061812p:plain 40GBのディスクのコピーで約12分かかった。

2020-03-28 (土) 12:41:50...***.***.***.***石狩第1ゾーン利用開始ディスク 113200516623の作成完了
2020-03-28 (土) 12:41:50...***.***.***.***石狩第1ゾーンタスク完了ディスク 113200516623にディスク 113200428285をコピー
2020-03-28 (土) 12:32:08...***.***.***.***石狩第1ゾーンタスク開始ディスク 113200516623にディスク 113200428285をコピー

そのままディスクをサーバに接続してもディスク容量は増えないので、ディスクのコピーが完了したらパーティションサイズの拡張を行う。 manual.sakura.ad.jp

ディスク -> その他のディスク操作 -> パーティションサイズの拡張 f:id:kyamashiro:20200404062843p:plain f:id:kyamashiro:20200404062247p:plain

サーバ -> 詳細 -> ディスクからディスクの取り外し・接続を行う。

サーバを起動して確認すると増えている。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            471M     0  471M   0% /dev
tmpfs            99M  4.9M   94M   5% /run
/dev/vda3        95G   35G   56G  39% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup

アーカイブを使用してディスク容量を増やす

サイズを拡張したいディスクのアーカイブを作成する。このときタグに @size-extendableを追加する。 f:id:kyamashiro:20200404063617p:plain

40GBで約16分かかる。

f:id:kyamashiro:20200404063739p:plain

2020-03-28 (土) 13:22:46...***.***.***.***石狩第1ゾーン利用開始アーカイブ 113200516793の作成完了
2020-03-28 (土) 13:22:45...***.***.***.***石狩第1ゾーンタスク完了アーカイブ 113200516793にディスク 113200428285をコピー
2020-03-28 (土) 13:06:14...***.***.***.***石狩第1ゾーンタスク開始アーカイブ 113200516793にディスク 113200428285をコピー

アーカイブからディスクを作成する f:id:kyamashiro:20200404065222p:plain

2020-03-28 (土) 13:55:54...***.***.***.***石狩第1ゾーン利用開始ディスク 113200516961の作成完了
2020-03-28 (土) 13:55:53...***.***.***.***石狩第1ゾーンタスク完了ディスク 113200516961にアーカイブ 113200516793をコピー
2020-03-28 (土) 13:46:10...***.***.***.***石狩第1ゾーンタスク開始ディスク 113200516961にアーカイブ 113200516793をコピー
2020-03-28 (土) 13:45:47石狩第1ゾーン操作ディスク 113200516961を作成

ディスク -> その他のディスク操作 -> パーティションサイズの拡張 サイズが増える。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            471M     0  471M   0% /dev
tmpfs            99M  4.9M   94M   5% /run
/dev/vda3        95G   35G   56G  39% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup

参考

knowledge.sakura.ad.jp manual.sakura.ad.jp manual.sakura.ad.jp

3月に読んだ本

並外れた行動力で自らチャンスを掴み取ってきたことがわかっておもしろい。
外国人を見つけては進んで話しかけて英語を磨いたり、米軍の施設のゴミ箱から拾った論文がきっかけでシカゴ大学の教授の目に留まったり、週末に九州から東京まで往復して大学院に行かずに博士論文を書いたり、正攻法で研究をしないことなど、リスクを取ることを恐れない人となりがわかる。なにより発想がすごい。

中学3年生のときに社会科見学で耶馬渓にある青の洞門に行ったときのエピソード。和尚は頑張ったけど間違っている、なぜなら洞窟づくりに20年かかるとして、自分なら最初の10年を掘るための道具づくりに、次の10年を作業に費やす。そうすれば洞窟と洞窟を掘る道具を残せる。和尚は洞窟しか残せなかった。と感想文に書いて最悪の評価を受けたらしい。

 

 

全盲の弁護士 竹下義樹 (岩波現代文庫)

全盲の弁護士 竹下義樹 (岩波現代文庫)

 

 日本で初めて全盲で司法試験に合格した方の話。たまたまNHKの番組を観て興味をもったので読むことにした。点字受験を認めさせたり国会で点字受験の時間延長の請願したり、今の時代自分たちで権利を勝ち取るみたいな考えがないので、新鮮で面白い。

途中で諦めそうになりながらも、アルバイトをして子どもを持ちながら司法試験を9回受けた執念と意志力はすごい。途中で諦めそうになりながらも、周りが支援し続けてくれていたのは本人の性格の明るさの賜物なのだろう。弁護士になってからの生活保護訴訟では、裁判が長期間に及ぶため弱者を助けるというよりも鼓舞するような姿勢は、あなたが頑張るなら全力でサポートしますといった感じで励まされた。

ASINとJANコードを変換するサイトを作った

LaravelとVueの勉強を兼ねて作ってみた。 MWS-APIPA-APIを使用すれば、ASINからJANコード(EANコード)を取得できるがAPIキーが必要なので、何もなくてもASIN・JANコードの相互変換できるサイトを作った。
需要は多分ない。

asin-to-jan.firebaseapp.com

Laravelはレイヤードアーキテクチャっぽく作った。この規模だと必要ないんだろうけど練習も兼ねてやってみた。 Controller→Service→Repository→Eloquentみたいな感じでサービス層にロジックを集めたが、結局RepositoryからはModelのオブジェクトを返してるので、やろうと思えばService層でDB更新したりできるから、あんまり意味なかったのではという気がしている。RepositoryでDTOに詰め替えればいいような気もするが、カラムが多いので詰め替えるのもめんどくさい。結局、ORMとどう両立させればいいのかよくわからない。

サービスコンテナとMockeryに感動した

サービスコンテナとMockery使ったらめちゃくちゃテスト書きやすくて感動した。調子に乗ってモック使いまくってたら、テストは通るのにエラーになるみたいな本末転倒なことになったので、やっぱり面倒くさくてもなるべくモック使わないでテストするべきだった。モック使いまくって自分の思い込みで作ったテストみたいな感じになってしまった。

Nuxtを使う

Laravel MixでbladeとVueを簡単に使うことができるが、Nuxtを使ってみたかったので、フロントエンドとバックエンドを分けることにした。作っている最中はこれLaravel Mixで十分だったのでは・・・という気しかしなかったが、Firebase Hostingで一瞬でデプロイできて、ドメインを取る必要もないので結果的に分けてよかったと思った。デザインセンスがないのでNuxt + Vuetifyで楽をすることにした。Vueはほぼ初めてだったけど、途中で親子コンポーネントはpropsで親から子にデータ渡してemitで子から親にデータを渡すことを知って、なんとなくコツを掴んだ。でも再利用可能なコンポーネント作るのムズくない?と思った。

Dockerで構築

バックエンドはさくらのクラウドで一番安いサーバを借りた。 herokuとかで無料でやりたかったが、APIでガンガンにデータを取ってDBに貯める(使用するAPIではJANコードからASINの検索ができないのでDBにJANコードとASINのデータを持っている必要がある)ので、50Gくらいスペースが欲しかった。今まで開発環境でしかDockerを使用したことがなかったが、パスワードとか個人情報とか扱わないので思い切ってDockerでデプロイしてみた。nginxのSSL化に詰まったりしながらも割と簡単に公開できた。 ufwのこととか、portとexposeの違いとか色々知れたが、Dockerの知識というかLinuxとネットワークの知識が全然足りないなと思っている。。。
特に生半可な知識でDocker使っているのでセキュリティ関係が怖い。玄関の鍵閉めたけど窓全開でしたみたいなことが起きてそうで怖い。

reCAPCHTA

個人的にはお問い合わせとかアンケートはGoogle Formのリンク貼れば十分だと思っているが、reCAPTCHAを使ってみたかったからお問合せフォームを作った。前はパネルからバスの画像とか信号機の画像とか選ぶ必要があったけど、今は必要ないみたいです。

作ってみて

作ってみてというか最近すごい思うのが根拠はないけどWebアプリの仕事って徐々に無くなるのではみたいに思っていて、モバイルアプリ作ってみようかなと思ってる次第ですね。

cargo install batしようとしてエラー

qiita.com

この記事に影響受けてカラフルで見やすいコマンドいっちょ使ってみっか!と思ってRustインストールしたまではいいけど、意気揚々とcargo install batコマンド打ったらエラーになった。

環境

Linux 5.3.0-40-generic #32~18.04.1-Ubuntu

error: failed to run custom build command for `onig_sys v69.2.0`

Caused by:
  process didn't exit successfully: `/tmp/cargo-installG3HylE/release/build/onig_sys-7d9cf1b204cf2143/build-script-build` (exit code: 101)
--- stdout
cargo:warning=couldn't execute `llvm-config --prefix` (error: No such file or directory (os error 2))
cargo:warning=set the LLVM_CONFIG_PATH environment variable to a valid `llvm-config` executable

--- stderr
thread 'main' panicked at 'Unable to find libclang: "couldn\'t find any valid shared libraries matching: [\'libclang.so\', \'libclang-*.so\', \'libclang.so.*\'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"', src/libcore/result.rs:1188:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

warning: build failed, waiting for other jobs to finish...
error: failed to compile `bat v0.12.1`, intermediate artifacts can be found at `/tmp/cargo-installG3HylE`

Caused by:
  build failed

sudo apt install llvm でエラーが出なくなった。

error: failed to run custom build command for `onig_sys v69.2.0`

Caused by:
  process didn't exit successfully: `/tmp/cargo-installm6GLXU/release/build/onig_sys-7d9cf1b204cf2143/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'Unable to find libclang: "couldn\'t find any valid shared libraries matching: [\'libclang.so\', \'libclang-*.so\', \'libclang.so.*\'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"', src/libcore/result.rs:1188:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

warning: build failed, waiting for other jobs to finish...
error: failed to compile `bat v0.12.1`, intermediate artifacts can be found at `/tmp/cargo-installm6GLXU`

Caused by:
  build failed

sudo apt install libclang-dev でエラーが出なくなった。

batコマンドはうん見やすい。