LXC: Bir klasörü ana bilgisayardan kaba taşıyan bir bilgisayara nasıl bağlarım?


24

Ana bilgisayarda bir LXC kabına bir klasör takmaya çalışıyorum.

Ana bilgisayarda /mnt/ssd/solr_dataoluşturulan bir klasör var (bu şu anda kök dosya sisteminde, ancak daha sonra orada bir SSD sürücüsü monte edeceğim, bu yüzden hazırlıyorum).

Bu klasörün /datakaptaki gibi takılmasını istiyorum .

Yani fstab dosyasındaki kaplarda aşağıdakiler var:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        ext4    defaults,noatime        0       0

Ama bu bir sorun değil, kabı çalıştırırken bu hatayı alıyorum:

lxc-start: No such file or directory - failed to mount '/mnt/ssd/solr_data' on '/usr/lib/x86_64-linux-gnu/lxc//data'
lxc-start: failed to setup the mounts for 'Solr4StandAlone'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'Solr4StandAlone'

Yanıtlar:


16

Dizini kapta otomatik olarak oluşturmak için create=dir, fstab içindeki seçeneği de ekleyebilirsiniz :

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind,create=dir

Düzenleme: bu LXC'ye özeldir. Bu konuya bakın

Daha önce "isteğe bağlı" olduğumuz gibi, bu da iki yeni LXC'ye özgü montaj bayrağı ekliyor:

  • create = dir (yolda bir mkdir_p yapacak)

  • create = file (dirname üzerinde bir mkdir_p yapacak + yolda bir fopen olacak)

Bu, imtiyazsız konteynırlar için ihtiyaç duyulan bağlama bölümlerinin bazıları tarafından motive edildi.


1
Bu hangi versiyon için mountgeçerli? mount(8)Örneğin Ubuntu 14.04'te açıklanan seçeneği bulamadım .
0xC0000022L


2
Gerçekten ... görünüşe göre sadece lxc ile çalışıyor. Bkz bu LXC-devel ML üzerinde iplik
Az dostum

14

Gelen /var/lib/lxc/Solr4StandAlone/configbir satır okuma ekleyin:

lxc.mount.entry = /mnt/ssd/solr_data  /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0

Ardından lxc-stopkabınızı ve lxc-startkabınızı tekrar durdurun .

Gereken tek şey bu.

ref: referans bağlantısı


2
Çözümünüz, ayrıcalıklı LXC konteyner aracıyla çalıştığı için daha iyi bir gözden geçirme elde etmelidir. Diğerleri bu durumda çalışmayacak. Ve muhtemelen selinux / apport yöntemlerine izin vermek için ince ayar yapılması gerekir. Çözümünüz için +1!
Huygens

11

/dataMount düzgün çalışması için klasörü yerel kapta oluşturmak zorunda kaldım .

Ayrıca bu fstab girişini kullandım:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind     0       0

bindmount seçeneği OP'de eksik olan bir şeydir. Bunun en önemli düzeltme olduğuna inanıyorum (diğer tüm çalışma cevaplarında da mevcut).
imz - Ivan Zakharyaschev

9

2015/09/30 itibariyle bir güvenlik yamasından kaynaklanan bir değişiklik, config dosyasında lxc.mount.entry ile mutlak bir yola montajı bozuyor.

Bunun yerine göreceli bir yol kullanabilirsiniz

 lxc.mount.entry = /mnt/ssd/solr_data data none bind 0 0

Bakınız: https://wiki.debian.org/LXC#Bind_mounts_inside_the_container


Harika bir eklenti, bir cevap olarak çalışıyor, insanların yakında görebilmesi için yenilenecek. Buna eklediğiniz için teşekkürler!
David Parks,

6

LXC zaman içinde değiştiği için bu çok basit olabilir, ama beni bir süre güldü, bu yüzden katkıda bulunmak istedi. Ayrıca bunun için bir öz oluşturdum, böylece kendimi hatırlayabiliyorum, ama sadece lxc config aygıtını kullanarak hile yapacağız.

sudo lxc config device add Solr4StandAlone sdb disk source=/var/lib/lxc/Solr4StandAlone/rootfs/data path=mnt/ssd/solr_data

Not biscuitNinja tarafından belirtilen bir değişiklik nedeniyle ön eğik çizgiyi yol argümanından uzak tutmak önemlidir.

Dizinleri konteynırdan ana bilgisayara bağlama


1

Kapsayıcınızı libvirtoluşturmak için kullanıyorsanız lxc, ana bilgisayardaki dizini passthroughburada gösterildiği gibi yapabilirsiniz:

root@localhost:/# cat /etc/libvirt/lxc/my_container.xml
...
 <filesystem type='mount' accessmode='passthrough'>
    <source dir='<dir on host>'/>
    <target dir='<dir on container>'/>
 </filesystem>
....
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.