ホスト上のフォルダーをLXCコンテナーにマウントしようとしています。
ホストには/mnt/ssd/solr_data
フォルダーが作成されています(これは現在ルートファイルシステムにありますが、後でSSDドライブをそこにマウントするので、それを準備しています)。
そのフォルダーを/data
としてコンテナーにマウントします。
したがって、コンテナのfstabファイルには次のようになります。
/mnt/ssd/solr_data /var/lib/lxc/Solr4StandAlone/rootfs/data ext4 defaults,noatime 0 0
しかし、それは大丈夫です、私はコンテナを開始するこのエラーを受け取ります:
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'
コンテナにディレクトリを自動的に作成するには、fstabにcreate=dir
オプションを追加することもできます。
/mnt/ssd/solr_data /var/lib/lxc/Solr4StandAlone/rootfs/data none bind,create=dir
編集:これはLXCに固有です。参照 このスレッド
すでに「オプション」があったように、これは2つの新しいLXC固有のマウントフラグを追加します。
create = dir(パスでmkdir_pを実行します)
create = file(dirnameでmkdir_p +パスでfopenを実行します)
これは、特権のないコンテナに必要なバインドマウントのいくつかによって動機付けられました。
/var/lib/lxc/Solr4StandAlone/config
行の読み取りを追加します。
lxc.mount.entry = /mnt/ssd/solr_data /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0
次にlxc-stop
コンテナを停止してlxc-start
再びコンテナ。
それだけで十分です。
ref: 参照リンク
マウントが正しく機能する前に、ローカルコンテナーに/data
フォルダーを作成する必要がありました。
私はこのfstabエントリも使用しました:
/mnt/ssd/solr_data /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0
2015/09/30現在、セキュリティパッチに起因する変更により、設定ファイルのlxc.mount.entryで絶対パスへのマウントが中断されます。
代わりに、相対パスを使用できます
lxc.mount.entry = /mnt/ssd/solr_data data none bind 0 0
参照: https://wiki.debian.org/LXC#Bind_mounts_inside_the_container
LXCは時間の経過とともに変化してきたため、これは非常に簡単ですが、少し困惑したので、貢献したいと考えました。私はこのためにGistも作成しました。自分自身を思い出せるようにするためですが、lxc configデバイスを使用するだけでうまくいきます。
Sudo lxc config device add Solr4StandAlone sdb disk source=/var/lib/lxc/Solr4StandAlone/rootfs/data path=mnt/ssd/solr_data
注@biscuitNinjaで言及されている変更のため、パスの引数にはフロントスラッシュを残さないことが重要です
libvirt
を使用してlxc
コンテナを作成する場合は、次のように、ホスト上のディレクトリをpassthrough
にすることができます。
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>
....