LoginSignup
1
2

More than 5 years have passed since last update.

IDCFクラウドのDebian Jessieにディスクを追加してDockerのディレクトリを移動する

Posted at

 IDCFクラウドでDebian Jessieの仮想マシン上にDockerを動かしています。Dockerを使っているとすぐにディスク容量を消費します。IDCFクラウドの仮想マシンはデフォルトで15GBしかありません。Ubuntuの時の手順とほぼ同じですが、大きめのディスクを追加してDockerのディレクトリを移動しようと思います。

$ cat /etc/debian_version
8.2
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"

 現在のファイルシステムとディスクの状態です。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        15G   12G  2.7G  81% /
udev             10M     0   10M   0% /dev
tmpfs           1.6G  110M  1.5G   7% /run
tmpfs           4.0G  740K  4.0G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.0G     0  4.0G   0% /sys/fs/cgroup

管理画面から「ボリューム」をアタッチする

 IDCFクラウドの管理画面の左メニューから「ボリューム」を選択して「ボリューム作成」ボタンをクリックします。IDCFクラウドではディスクを「ボリューム」と呼びます。

volume.png

 ボリューム作成の画面で「ボリューム名」と「サイズ」、「ゾーン」を入力して「作成する」ボタンをクリックします。

volume-create.png

 ボリュームの一覧から作成したボリューム名をクリックします。ボリューム詳細画面の「アタッチ」メニューから仮想マシンを選択して「アタッチする」ボタンをクリックします。

volume-attach.png

 ボリュームのアタッチが完了したらOSをrebootします。

$ sudo reboot

Debianにパーティションを作成

 仮想マシンがrebootしたら、IDCFクラウドの管理画面でアタッチした「ボリューム」がディスクとして追加されたことを確認します。

$ sudo fdisk -l
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors

パーティションの作成

 fdiskコマンドで/dev/sdbにパーティションを作成します。デフォルトの設定で作成する場合はn、p、Enterキー3回、 wと入力します。

$ sudo fdisk /dev/sdb

 新しいパーティションが/dev/sdb1に作成されました。

$ sudo fdisk -l
...
Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 209715199 209713152  100G 83 Linux

ファイルシステムの作成

 既存ファイルシステムの確認すると/dev/sda1はext4です。

$ df -T
Filesystem     Type     1K-blocks     Used Available Use% Mounted on
/dev/sda1      ext4      15348720 11734892   2811116  81% /
udev           devtmpfs     10240        0     10240   0% /dev
tmpfs          tmpfs      1638236     8672   1629564   1% /run
tmpfs          tmpfs      4095588        0   4095588   0% /dev/shm
tmpfs          tmpfs         5120        0      5120   0% /run/lock
tmpfs          tmpfs      4095588        0   4095588   0% /sys/fs/cgroup

 追加したディスクのパーティションにも同じext4でファイルシステムを作成します。

$ sudo mkfs.ext4 /dev/sdb1

パーティションのマウント

 パーティションをマウントするディレクトリを/mediaの下に作成します。

$ sudo mkdir /media/data

 /dev/sdb1パーティションのUUIDをblkidコマンドで確認します。

$ sudo blkid /dev/sdb1
/dev/sdb1: UUID="af1e6cc8-6184-4642-9a0d-5ac917e1d9d3" TYPE="ext4" PARTUUID="07a7e924-01"

 確認したUUIDを/etc/fstabに追加しますが、編集前にバックアップをします。

$ sudo cp -ip /etc/fstab{,.`date +%Y%m%d`}

 /etc/fstab/media/data/dev/sdb1パーティションをマウントする設定を追加します。

$ sudo vi /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=18de9747-f69a-4f98-a80a-3d4b77145eaa /               ext4    errors=remount-ro 0       1
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
UUID=af1e6cc8-6184-4642-9a0d-5ac917e1d9d3 /media/data ext4 defaults 0  2

 追加した行の4列目以降は以下のように設定しました。

  • : defaults
  • : 0: dumpする
  • : 2: fsckする

 /etc/fstabを再マウントします。/dev/sdb1パーティションが正常にマウントしました。

$ sudo mount -a
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        15G   12G  2.7G  81% /
udev             10M     0   10M   0% /dev
tmpfs           1.6G  8.5M  1.6G   1% /run
tmpfs           4.0G     0  4.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.0G     0  4.0G   0% /sys/fs/cgroup
/dev/sdb1        99G   60M   94G   1% /media/data

Dockerのディレクトリ移動

 新しく追加したパーティションのファイルシステムにDockerのディレクトリを移動していきます。まずDockerサービスを停止します。

$ sudo systemctl stop docker
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled)
   Active: inactive (dead) since 木 2015-12-31 06:29:44 JST; 14s ago
     Docs: https://docs.docker.com
  Process: 521 ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS (code=exited, status=0/SUCCESS)
 Main PID: 521 (code=exited, status=0/SUCCESS)

 rsyncでファイルシステムのパーミッションを保持したまま、/media/data/dockerディレクトリにコピーします。

$ sudo mkdir /media/data/docker
$ sudo rsync -aXS /var/lib/docker/. /media/data/docker/

 コピー元のディレクトリとコピー先のディレクトリのサイズを比較して一致しているか確認します。

$ sudo du -sch /var/lib/docker/*
9.6G    /var/lib/docker/aufs
6.8M    /var/lib/docker/containers
11M /var/lib/docker/graph
8.0K    /var/lib/docker/linkgraph.db
72K /var/lib/docker/network
4.0K    /var/lib/docker/repositories-aufs
4.0K    /var/lib/docker/tmp
4.0K    /var/lib/docker/trust
447M    /var/lib/docker/volumes
11G total
$ sudo du -sch /media/data/docker/*
9.9G    /media/data/docker/aufs
6.8M    /media/data/docker/containers
11M /media/data/docker/graph
8.0K    /media/data/docker/linkgraph.db
68K /media/data/docker/network
4.0K    /media/data/docker/repositories-aufs
4.0K    /media/data/docker/tmp
4.0K    /media/data/docker/trust
443M    /media/data/docker/volumes
11G total

 オリジナルの/var/lib/dockerはバックアップして、ディレクトリを作り直します。

$ sudo mv /var/lib/docker /var/lib/docker.bak
$ sudo mkdir /var/lib/docker

 /media/data/dockerディレクトリを/var/lib/docker にマウントします。ディレクトリのサイズも同じです。

$ sudo mount -o bind /media/data/docker /var/lib/docker
$ sudo du -sch /var/lib/docker/*
9.9G    /var/lib/docker/aufs
6.8M    /var/lib/docker/containers
11M /var/lib/docker/graph
8.0K    /var/lib/docker/linkgraph.db
68K /var/lib/docker/network
4.0K    /var/lib/docker/repositories-aufs
4.0K    /var/lib/docker/tmp
4.0K    /var/lib/docker/trust
443M    /var/lib/docker/volumes
11G total

 dfでディレクトリのマウントを確認します。

$ df -ha
Filesystem       Size  Used Avail Use% Mounted on
...
/dev/sdb1        99G   11G   83G  12% /media/data
/dev/sdb1        99G   11G   83G  12% /var/lib/docker

 /etc/fstabにOSのreboot後もディレクトリがマウントするように追加して再度マウントします。

$ sudo vi /etc/fstab
/media/data/docker /var/lib/docker  none bind 0 0
$ sudo mount -a

 Dockerを起動します。

$ sudo systemctl start docker
sudo systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled)
   Active: active (running) since 木 2015-12-31 06:44:08 JST; 5s ago
     Docs: https://docs.docker.com
 Main PID: 1060 (docker)
   CGroup: /system.slice/docker.service
           └─1060 /usr/bin/docker daemon -H fd:// --cluster-store=consul://lo...

 docker psでDockerの起動を確認します。停止しているコンテナはstartします。Dockerのディレクトリの移動が終了したのでバックアップを削除しておきます。

$ sudo rm -r /var/lib/docker.bak/
1
2
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
1
2