Katakanlah kita memiliki satu server dengan lxc diinstal, dan wadah lxc digunakan sebagai basis img /var/lib/lxc/ubuntu_base
. Untuk mempermudah, mari kita lupakan perubahan konfigurasi setelah menyalin basis img.
beberapa orang menyarankan untuk menggunakan subvolume dan snapshot untuk membuat wadah baru, tetapi orang dapat dengan mudah melakukan cp --reflink dengan hasil yang serupa.
Jadi apa cara yang tepat (atau mana yang lebih baik) untuk mengelola banyak wadah?
- snapshot
Cara ini sepertinya yang terbaik, tetapi perintah seperti lxc-destroy tidak akan berfungsi karena tidak akan bisa menghapus direktori.
btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- cp dengan reflink
Saya tidak yakin apakah ada perbedaan kinerja antara ini atau snapshot
cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- atau Adakah cara lain yang lebih baik untuk melakukan ini yang tidak saya sadari.
edit:
Satu hal yang saya lihat dengan opsi reflink adalah, bahwa Anda tidak dapat menghapus wadah dasar jika yang lain berjalan, karena /proc
dan /dev
sudah terpasang dan tidak pernah berubah, se referensi selalu sama. Tetapi mematikan semua wadah yang tertutup tampaknya membantu.
sumber
Jawaban:
Saya menggunakan Ubuntu LTS 14 dan baru saja menjalankan yang berikut (untuk pertama kalinya) dan bekerja dengan sangat baik:
Menggunakan -s dengan lxc-clone akan mengambil snapshot jika backing store adalah btrfs (dalam kasus Anda).
Verifikasi klon / foto baru dengan
Semoga itu bisa membantu!
sumber
-s
opsi, dan bahwa tiga yang terakhir (lxc_start, lxc_stop, lxc_stop, lxc_snapshot) hanyalah sebuah proses pembantu untuk mengelola evolusi wadah di masa depan. Apakah itu benar ?jika Anda akan menggunakan subvolume btrfs untuk lxc, Anda perlu menambahkan opsi
user_subvol_rm_allowed
di/etc/fstab
. Contoh diekstrak dari satu file fstab:UUID=XXXXXXXXXXXXXXXXXXXXXX / btrfs subvol=@,user_subvol_rm_allowed,defaults 0 0
opsi akan memungkinkan Anda dapat menghapus subvol tanpa menjadi root, hanya pengguna biasa. Kemampuan ini digunakan oleh lxc ketika snapshot masuk dalam subvolume btrfs
sumber
Kira itu tergantung pada seberapa besar gambar dasar Anda itu. Saya mungkin akan membuat lxc-membuat wadah baru dan menggunakan Salt / Puppet dll untuk menyediakan wadah saya dan hanya klon-lxc untuk wadah yang relatif lebih besar (misalnya wadah dev dengan banyak alat yang diinstal dan dikonfigurasi).
Perhatikan bahwa lxc-clone akan menggunakan backing store yang sama dengan sumbernya. Jadi untuk menggunakan subvolume Anda harus membuat wadah Anda dengan "-B btrfs". Sebagai contoh:
Kemudian klon dengan:
Jika Anda menggunakan zfs untuk menyimpan kontainer, ada
--zfsroot
opsi tambahan untuk lxc-create sehingga Anda dapat memilih zpool selain "tangki" default. Sebagai contoh:Bagikan dan nikmati!
sumber
-B btrfs
ini digunakan secara default - saya berasumsi karena debian saya diatur dengan BTRFS. Sebenarnya, saya membuat wadah pertama saya (debee wheezy 32 bit) tanpa opsi ini, dan subvolume dibuat untuk itu.-B best
beraksi tetapi senang mengetahui!