2015-05-12 41 views
7

Ich habe kürzlich (von einem RedHat-Typen) gehört, dass "Direct-LVM" (Devicemapper) das empfohlene Speicher-Backend für Produktions-Setups ist, also wollte ich Probieren Sie das auf einer CentOS 7 VM aus. (Wo Loopback-LVM scheint der Standard zu sein).Wie man Docker sagt, dm/LVM-Backend für Volumes anstelle von vfs zu verwenden

Also habe ich eine separate Datenplatte und VG mit 2 LVs für Daten und Metadaten, übergeben sie in die Docker config und begann Docker up ... so weit so gut, sieht wie folgt aus:

# ps auxwf 
... 
/usr/bin/docker -d --selinux-enabled -H unix://var/run/docker.sock \ 
       --log-level=warn --storage-opt dm.fs=xfs \ 
       --storage-opt dm.datadev=/dev/vg_data/docker-data \ 
       --storage-opt dm.metadatadev=/dev/vg_data/docker-meta \ 
       --storage-opt dm.basesize=30G --bip=172.17.42.1/24 \ 

# docker info 
Containers: 8 
Images: 145 
Storage Driver: devicemapper 
Pool Name: docker-253:0-34485692-pool 
Pool Blocksize: 65.54 kB 
Backing Filesystem: xfs 
Data file: /dev/vg_data/docker-data 
Metadata file: /dev/vg_data/docker-meta 
Data Space Used: 4.498 GB 
Data Space Total: 34.36 GB 
Data Space Available: 29.86 GB 
Metadata Space Used: 6.402 MB 
Metadata Space Total: 104.9 MB 
Metadata Space Available: 98.46 MB 
... 
... 

Aber heute, als ich einen Container gestartet habe, der ziemlich viele lokale Daten erzeugt (da ich das zum Testen nicht persistieren muss, habe ich diese Volumes beim Start nirgends abgebildet), bemerkte ich, dass Volume-Daten alle gesetzt sind in /var/lib/docker/vfs Verzeichnisse statt der LVM-Thinpool wie ich erwartet habe.

Dies ist in der Tat füllen meine root-fs, die ich mit Absicht klein gehalten.

Dies ist der Datenträger-Layout als der Docker-Moderator gesehen:

# lsblk 
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 
sda        8:0 0 10G 0 disk 
+-sda1        8:1 0 500M 0 part /boot 
+-sda2        8:2 0 9.5G 0 part 
    +-centos_system-root   253:0 0 8.5G 0 lvm/
    +-centos_system-swap   253:1 0 1G 0 lvm [SWAP] 
sdb        8:16 0 50G 0 disk 
+-vg_data-docker--data   253:2 0 32G 0 lvm 
| +-docker-253:0-34485692-pool 253:4 0 32G 0 dm 
| +-docker-253:0-34485692-... 253:5 0 30G 0 dm 
| +-docker-253:0-34485692-... 253:6 0 30G 0 dm 
+-vg_data-docker--meta   253:3 0 100M 0 lvm 
    +-docker-253:0-34485692-pool 253:4 0 32G 0 dm 
    +-docker-253:0-34485692-... 253:5 0 30G 0 dm 
    +-docker-253:0-34485692-... 253:6 0 30G 0 dm 

Wie kann ich Docker Volumes bekommen zu setzen (entweder implizit erstellt oder explizit in Datencontainer) auf die konfiguriert gestellt werden Speicher-Backend?

Oder wird das wirklich nur für (Basis-) Bilder verwendet und meine Erwartungen waren total falsch?

+1

Dieser großartige Artikel beantwortet meine Fragen: http://container-solutions.com/2014/12/understanding-volumes-docker/ ... so war ich eigentlich falsch mit meinen Annahmen – powo

Antwort

0

Sie müssen einen Mountpoint wie "-g/docker" angeben.