今回は、ubuntu上で既存のディレクトリを別HDDに移動する方法についてです。
私はubuntu上にdocker環境を構築していて、docker環境の永続化したいデータは、ホスト(ubuntu)の特定ディレクトリに集約しています。(そして、このディレクトリのみ定期バックアップを取るようにしています。)
いくつかの観点から、永続化データのディレクトリを別HDDに切り出すことにしました。既存ディレクトリを別HDDに移動しましたので、ノウハウの備忘とご紹介です。
※特別なことは何もありません。
■なぜ、別のHDDへ移動しようとしたか。
・[ホストシステムからの独立]…ホスト(ubuntu)側を再構築しなければならない状況になったとき、dockerのデータ群が影響を受けないようにしておきたい。
・[容量の確保]…予想以上に容量が大きくなる傾向にあると感じた為、逼迫する前に予防策として。
■前提
・docker-compose.yml等に記載している為、ディレクトリのパスは変えない。
■手順
1.起動しているすべてのコンテナを停止する。(えっ、ダウンタイムなんて気にしませんよ?)
1 |
% docker stop $(docker ps -q) |
2.一旦、ディレクトリパスを空ける。(”/hoge/dockerData”が今回HDD移動したいディレクトリ)
1 |
% sudo mv /hoge/dockerData /hoge/dockerData_bk |
3.(適宜)移動先となるHDDをつなぎ、フォーマットする。
ubuntuなので、GNOMEで動作するパーティションツールGpartedが簡単に使えると思います。
1 2 3 |
% sudo apt update % sudo apt install gparted |
ubuntuのデスクトップで、Gpartedを開き、今回追加したHDDを選択。 まっさらなHDDの場合はパーティションテーブル作成して、新規パーティションを作成します。手順は割愛。
また、追加HDDのディスク名・パーティション番号(/dev/sdb1など)を覚えておきます。
4.HDD(パーティション)のUUIDを確認し、マウントポイントを指定する。
マウントポイントとは、/hoge/dockerData のことです。“このパーティションをこのディレクトリとして、毎度マウントします”という指定になります。
まずは、UUIDを調べましょう。
1 |
% sudo blkid |
つながっているパーティションのリストが出力されます。移動先として使いたいパーティション(/dev/sdb1)のUUIDをメモします。(“1qazxsw23edc”)
続いて、マウントポイントの指定です。
1 |
% sudo vi /etc/fstab |
ファイル末尾に下記を追記します。tab区切り。記載内容の意味は割愛。保存してubuntu再起動。
1 |
UUID="1qazxsw23edc" /hoge/dockerData ext4 defaults 0 0 |
5.退避したデータを戻す。
1 |
% sudo cp -a -r -p -d /hoge/dockerData_bk /hoge/dockerData |
6.全dockerを起動する。
1 |
% docker start $(docker ps -a -q) |
動作に問題がないようならば、退避した/hoge/dockerData_bkを削除して完了。
これで、ホストが調子悪くなっても、今回作成した永続化データHDDとdocker-compose.ymlがあれば、かんたんに原状復帰できるはず!
にほんブログ村