btrfs 시스템에서 docker 사용시 주의점 - ubuntu 14.04
우분투 14.04 시스템에 btrfs 를 사용하고 있다.
SSD raid 에 LVM 으로 나눠서 쓰고 있다. 일반적인 사용형태보다는 좀 복잡할 것이다.
(물론 아주 특이한 케이스는 아니다)
docker 를 테스트 하던 중.
docker pull 로 이미지 몇개 설치하지 않았는데, 디스크가 꽉차는 현상이 발생했다.
크롬이 비정상 종료되길래 왜 그러지 싶었다. 그냥 아무 생각없이 재부팅하니. 정상부팅되지 않았다.
순간 멘붕.
허걱! 다시 OS를 깔아야 하나. 데이터 만이라도 살려야 하는데.
중요데이터는 Dropbox 로 동기화 하고 있으니 별 상관은 없지만, 또 세팅을 다시하려니 힘이 쭉.
single 모드로 다시 부팅을 해보고 점검을 해봤다.
주요 메시지는
Incrementally starting RAID arrays...
mdadm: CREATE user root not found
mdadm: CREATE group root not found
Incrementally started RAID arrays.
이런식의 메시지가 계속 무한루프 된다. 위 메시지를 검색 해봤는데, 별다른 원인을 못찾겠다.
docker 를 테스트 하던중 용량 관련 메시지 No space left on device => 디스크 full 일때 나오는 익숙한(?) 메시지
를 봤었다. 그것과 관련이 있을 것 같다.
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root 131G 46G 84G 36% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 791M 1.3M 789M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 156K 3.9G 1% /run/shm
none 100M 44K 100M 1% /run/user
그러나 시스템 용량은 충분했다. 어떤 다른 이유인것 같다.
docker pull dockerfile/mongodb
등의 명령을 내리면, 이미지를 다운로드하고 컨테이너를 생성한다.
# docker pull dockerfile/mongodb
Pulling repository dockerfile/mongodb
6c03df111896: Download complete
511136ea3c5a: Download complete
5e66087f3ffe: Download complete
4d26dd3ebc1c: Download complete
d4010efcfd86: Download complete
99ec81b80c55: Download complete
b261bc65cd23: Download complete
42404685406e: Download complete
6cc69450fe19: Download complete
efc4fbcd007f: Download complete
2baeb2edbf92: Download complete
ecd5c1cc18ac: Download complete
1f089cc15e82: Download complete
9c1219bb985c: Download complete
d5885db18d17: Download complete
f1b2b4374c6b: Download complete
c0cda6b780cd: Download complete
42f2a60d100f: Download complete
이때 docker 는 btrfs 인 경우 subvolume (스냅샷?) 기능 을 이용하는 것 같다.
/var/lib/docker/btrfs/subvolumes 에 생성이 된다.
btrfs subvolume list /
을 해보면 아무것도 없어야 한다. 그런데, docker pull 후에 다시 명령을 해보면.
# btrfs sub list /
ID 386 gen 94278 top level 5 path var/lib/docker/btrfs/subvolumes/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158
ID 387 gen 94278 top level 5 path var/lib/docker/btrfs/subvolumes/5e66087f3ffe002664507d225d07b6929843c3f0299f5335a70c1727c8833737
ID 388 gen 94279 top level 5 path var/lib/docker/btrfs/subvolumes/4d26dd3ebc1c823cfa652280eca0230ec411fb6a742983803e49e051fe367efe
ID 389 gen 94280 top level 5 path var/lib/docker/btrfs/subvolumes/d4010efcfd86c7f59f6b83b90e9c66d4cc4d78cd2266e853b95d464ea0eb73e6
ID 390 gen 94281 top level 5 path var/lib/docker/btrfs/subvolumes/99ec81b80c55d906afd8179560fdab0ee93e32c52053816ca1d531597c1ff48f
ID 391 gen 94282 top level 5 path var/lib/docker/btrfs/subvolumes/b261bc65cd23e8399c39ef0b77d732ddf6ca9679d4cea0ad1cdaca715c4a0d81
ID 392 gen 94283 top level 5 path var/lib/docker/btrfs/subvolumes/42404685406e72d29e3b349605d34cb88590cfcfabb06b9925628f2949c2eb89
ID 393 gen 94284 top level 5 path var/lib/docker/btrfs/subvolumes/6cc69450fe1990579c13d444495dcfec342955712481647fcb73d5a8e6184f33
ID 394 gen 94285 top level 5 path var/lib/docker/btrfs/subvolumes/efc4fbcd007ff7a202ead05932a48f62301464b8f1bc1449f3a8f9b5c26d9515
ID 395 gen 94286 top level 5 path var/lib/docker/btrfs/subvolumes/2baeb2edbf92488d7bbd4723368aeb2e86045f7ed6310b5924cec2d3c3ff8710
ID 396 gen 94287 top level 5 path var/lib/docker/btrfs/subvolumes/ecd5c1cc18ac86e88dd6420161d5812ef6cd31c1a0ce252d071d4481996502fc
ID 397 gen 94288 top level 5 path var/lib/docker/btrfs/subvolumes/1f089cc15e82571690524c3633dc361ba526d25fed072e09607fac7ee1178098
ID 398 gen 94289 top level 5 path var/lib/docker/btrfs/subvolumes/9c1219bb985cb5ceb0a602ad943c9dd5b83cf0f16d3cd05730113fe0af37d0be
ID 399 gen 94290 top level 5 path var/lib/docker/btrfs/subvolumes/d5885db18d17c3e473f310ab7723a1c6b4c29a14b9a8db54bfd795466bee1da3
ID 400 gen 94291 top level 5 path var/lib/docker/btrfs/subvolumes/f1b2b4374c6b1813549a4436c190f4e0ab04168eee3244e08931b63c96b943c1
ID 401 gen 94292 top level 5 path var/lib/docker/btrfs/subvolumes/c0cda6b780cdb2c400b470371baea2149ac4caef980d4685465f0ef13eb2af6c
ID 402 gen 94293 top level 5 path var/lib/docker/btrfs/subvolumes/42f2a60d100fcbda388b76bb69270fc057565ab4bdf5d68072b30b225669e5f4
ID 403 gen 94293 top level 5 path var/lib/docker/btrfs/subvolumes/6c03df11189668e549ac34464dbdbef563144f92eeb89246afaa1029b92cfd7d
위 처럼 많은 subvolume 이 생성된 것을 볼 수 있다.
ID 값이 동일한 것(진한부분)을 보니 ID 당 서브볼륨을 생성해서 관리하나 보다.
파일용량을 체크해보면 다음과 같다.
# btrfs file df /
Data, single: total=127.21GiB, used=44.64GiB
System, DUP: total=8.00MiB, used=20.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=1.50GiB, used=1.02GiB
Metadata, single: total=8.00MiB, used=0.00
서브볼륨은 어느 부분에 영향을 주는지 확인해봐야 겠다.
아무튼.
docker rmi dockerfile/mongodb
명령으로 docker 이미지를 삭제하면 해당 subvolume 도 삭제된다.
개별적으로 subvolume 을 삭제하려면
btrfs sub del var/lib/docker/btrfs/subvolumes/6c03df11189668e549ac34464dbdbef563144f92eeb89246afaa1029b92cfd7d
으로 삭제해준다.( 부팅이 안되서 usb 우분투 로 부팅하고, 해당 서브볼륨을 위 처럼 하나씩 삭제해줬다)
btrfs 에 좀더 알기전까지는 조심해야 겠다.
다음부터 docker 는 vagrant 기반의 vm 내에서 테스트 해봐야 겠다.
'배우는일' 카테고리의 다른 글
vagrant 사용시 oracle virtualbox 의 설치관련 에러 - ubuntu 14.04 (0) | 2014.07.17 |
---|---|
digital ocean 으로 자동화 시스템 구축 (구상안) (0) | 2014.07.12 |
vagrant cloud 를 사용해보자. ubuntu 14.04 (0) | 2014.07.11 |
git 원격 저장소를 사용해봅시다 (bitbucket) (0) | 2014.07.03 |
버전관리 git 은 꼭 써야합니다. (0) | 2014.07.02 |
WRITTEN BY
- 1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.