yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

dockerで遊んでたらPCのDisk残量がどっかーんとしまったのでパーテションを分けた話

母親氏、異変に気がつく

母「なんかPCログインできんのやけど?」

そのとき私は猛烈にトイレに行きたかった。とりあえず投げやりに

私「じゃあ再起動して」

これで解決するかに思われたが、トイレの中にまでヘルプを求める声が。

母「再起動したらログイン画面すらでなない」

ようやくトイレを出てPCを見るとその瞬間なぜかログイン画面にはたどり着いた。

原因をたどる

ログインして起動するとこんな通知が。

notification

Diskがあいてない・・・?

我が家では

/
/home
/boot/efi
swap

のようにパーテションを切っていて、この内/が残り50.8MBくらいしかなかった。

Diskを専有しているのは誰だ?

おもむろに

sudo du --exclude=home / | tee log.txt

して眺めていると/var/lib/docker/に差し掛かった。

・・・docker?

docker、心当たりがある!

github.com

つい昨日これのCIを組み立てるためのdocker imageを作るためにいろいろ試行錯誤していた。これのせいか!

du --summarize -h /var/lib/docker/

すると23GBと表示された。

パーテション分け

眺めていると/homeには空きがまだある。このパーテションを削ってあげれば/var/lib/docker/を割り当てられる気がする。

GParted

PCを終了し、手元にあったUbuntu 18.04のLive USBで起動する。

コマンドラインでパーテション操作とか余裕で無理ゲーなのでおとなしくGPartedを使う。

流石に100GBも割り当てれば足りるだろう。というわけで/dev/sdb1を100GB削って、新しく/dev/sdb3を作った。

GParted

結局40分くらいこの作業にかかった気がする。

copy

まずは移動元と移動先のパーテションをマウントしないといけない。

面倒臭がってキーボードの設定をしないで作業したので_とか打てない、つらい。

$ cd /mnt
$ sudo mkdir croot
$ sudo mount /dev/sdb1 /mnt/croot/
$ sudo mkdir ndocker
$ sudo mount /dev/sdb3 /mnt/ndocker/

さて、copyだ。コマンドはおなじみcpを使うとして、属性とかをそのまま引き継いでほしい。それには-aが必要だ。あと進捗が見たいので-vもつける。

ここでちょっとミスをしてしまう。

$ sudo cp -av /mnt/croot/var/lib/docker/ /mnt/ndocker/

するとndockerの中にdockerがコピーされてしまった。本当は

$ sudo cp -av /mnt/croot/var/lib/docker/* /mnt/ndocker/

としたかったのに、「そんなファイル名ないしDirectory名知らねー」と怒られてしまうから仕方なくこうした。なんでだったんだろうか。

とにかく仕方ないのでmvする。mvは属性とかはいじらない(読み取り権限ないと実行できないけど)

$ sudo ls -a /mnt/ndocker/ | xargs -I% sudo mv /mnt/ndocker/docker/% /mnt/ndocker/

これも*での展開がうまく行かずxargsを使ってる。とことんワイルドカードに嫌われている。なんでや?

リネーム

移送元も消さずにリネームして残しておく。

$ sudo mv /mnt/croot/var/lib/docker /mnt/croot/var/lib/docker_bk
fstab

wiki.archlinux.jp

これを眺めつつ設定する。UUIDはblkidコマンドをわざわざ叩かなくてもGPartedでも見れる。

#
# /var/lib/docker was moved to /dev/sdb3: 20190911
UUID=3a1ca756-0a42-4c33-9af0-83fd82ff76a8 /var/lib/docker ext4    defaults      0      2
シャットダウン

PCを終了してLive USBを抜く。

起動

起動しますようにと祈りつつ起動。

起動した。

dockerが普通に使えるか検証し動いたのでバックアップで残してた移送元を消して作業完了。

$ sudo rm -r /var/lib/docker_bk

その後

作業後20分もしないうちに国分寺市は猛烈な雷と雨に襲われた。

年に一度あるかないかくらいの雷だったのでPCとかTVのコンセントを抜いた数分後、瞬間的な停電に見舞われた。どっかーんという大きな雷が落ちる音がした。dockerがどっかーん(言いたかっただけ

https://twitter.com/tweet_egoiste/status/1171700198726193152?s=20

作業中に停電したら・・・

危ない。あぶない。