GNU/Linux >> Belajar Linux >  >> Linux

Podman mendapatkan dukungan overlay tanpa akar

Podman dapat menggunakan sistem file overlay asli dengan kernel Linux versi 5.13. Sampai sekarang, kami telah menggunakan fuse-overlayfs. Kernel memperoleh dukungan tanpa akar di kernel 5.11, tetapi bug mencegah penggunaan SELinux dengan sistem file; bug ini telah diperbaiki di 5.13.

Sepertinya Fedora mem-backport perbaikan ke kernel 5.12-nya, jadi pengguna harus dapat menggunakannya setelah mereka mendapatkan akses ke kernel.

Mengapa Anda harus peduli?

Hingga versi 5.11, kernel mengizinkan pengguna untuk memasang sejumlah jenis sistem file saat berada di ruang nama pengguna. Mereka termasuk tmpfs, bind mount, procfs, sysfs, dan fuse. Podman menggunakan sistem file fuse-overlayfs yang dipasang menggunakan dukungan pemasangan fuse ini dalam ruang nama pengguna selama bertahun-tahun.

Sekering-overlay sangat bagus. Namun, ini adalah sistem file ruang pengguna, yang berarti perlu melakukan pekerjaan hampir dua kali lebih banyak daripada kernel. Setiap pembacaan/penulisan harus ditafsirkan oleh fuse-overlay sebelum diteruskan ke kernel host. Untuk beban kerja berat yang membebani sistem file, kinerja fuse-overlay terganggu. Anda bisa melihat fuse-overlayf mengelompokkan CPU. Intinya, kita akan melihat kinerja yang lebih baik dengan overlayf asli, terutama untuk container baca/tulis yang berat dalam mode rootless. Misalnya, podman build . kinerja harus meningkat secara signifikan. Perhatikan bahwa saat menulis ke volume, fuse-overlayf jarang digunakan, jadi performa tidak akan terpengaruh.

Satu kelemahan lain dari fuse-overlayf adalah memerlukan akses ke /dev/fuse . Saat orang mencoba menjalankan Podman dan Buildah dalam wadah terbatas, kami mengambil hak istimewa CAP_SYS_ADMIN, bahkan saat dijalankan sebagai root. Ini memaksa kami untuk menggunakan ruang nama pengguna sehingga kami dapat memasang volume. Agar ini berfungsi, pengguna harus menambahkan /dev/fuse ke wadah. Setelah kami memiliki overlay asli untuk mode rootless (tidak ada CAP_SYS_ADMIN ), /dev/fuse tidak lagi diperlukan.

Bagaimana cara menggunakannya?

Sayangnya, Anda hanya dapat menggunakan overlay asli dengan penyimpanan baru, yang berarti Anda harus menghancurkan semua penyimpanan yang ada di wadah Anda. Perlu melakukan podman system reset jika Anda sudah memiliki gambar/wadah.

Alasan untuk ini adalah ketika program mount digunakan, kami menyimpan file flag di direktori penyimpanan:$STORAGE/overlay/.has-mount-program . Jika file ada, maka c/storage mengabaikan dukungan overlay asli. Alasan pemeriksaan tersebut adalah karena ada perbedaan dalam cara fuse-overlayf menyimpan metadata, termasuk file whiteout pada kernel lama yang tidak mengizinkan pembuatan perangkat whiteout khusus untuk pengguna yang tidak memiliki hak, dan itu tidak akan berfungsi jika overlay asli diaktifkan . Ini berarti menghapus file saja akan menyebabkan masalah dengan penampung yang ada.

podman system reset perintah menghapus file flag juga. Setelah itu, overlay asli akan digunakan jika didukung oleh kernel yang mendasarinya.

Sejauh menyangkut distribusi lain, dukungan ini akan muncul ketika kernel 5.13 dirilis. Untuk RHEL/CentOS Stream, kami berencana untuk mendukung fitur tersebut untuk rilis RHEL8.5 di musim gugur.

Apakah kami akan terus menggunakan/mendukung fuse-overlayf?

Kami berencana untuk terus menggunakan dan bahkan meningkatkan overlay sekering. Kami menggunakan platform ini untuk bereksperimen dengan fitur-fitur baru dan kemudian mendiskusikannya dengan tim kernel untuk melihat apakah kami dapat memasukkannya ke dalam native.

Salah satu fitur menonjol yang kami tambahkan adalah dukungan untuk menyimpan atribut keamanan file dalam atribut file yang diperluas (xattrs). Kami membutuhkan ini untuk mendukung direktori home NFS. Server NFS memblokir penggunaan wadah dengan lebih dari satu UID dalam ruang nama pengguna. Ini menghentikan pengguna homedirs NFS dari menggunakan Podman tanpa menyiapkan penyimpanan tambahan. Dengan fuse-overlayf, kita dapat menyimpan semua konten yang dibuat oleh Podman dalam sistem file seperti yang dimiliki oleh pengguna yang menjalankan Podman. Di dalam wadah yang sedang berjalan, konten direpresentasikan sebagai UID/GID yang berbeda berdasarkan xattrs. Saat proses yang berjalan dalam mode ini membuat file dengan UID yang berbeda, fuse-overlay memotong pembuatan UID, membuat file dengan UID mount, dan menyimpan UID yang berbeda dalam xattr.

[ Memulai container? Lihat kursus gratis ini. Menyebarkan aplikasi kemas:Tinjauan teknis. ]

Menutup

Wadah Podman Rootless terus berkembang dan menjadi semakin praktis. Untuk beban kerja yang berat, overlay asli harus memberikan pengalaman kinerja yang jauh lebih baik dibandingkan dengan overlay sekering. Kernel juga di-backport untuk memberikan dukungan yang lebih baik. Beri tahu kami bagaimana Anda ingin menggunakan fitur baru yang hebat ini.


Linux
  1. Mengapa Podman rootless tidak dapat menarik gambar saya?

  2. Apa yang terjadi di balik layar wadah Podman tanpa akar?

  3. Mengontrol akses ke Podman tanpa root untuk pengguna

  1. Menjalankan Podman tanpa root sebagai pengguna non-root

  2. Menggunakan file dan perangkat dalam wadah tanpa akar Podman

  3. Urutan Pengalihan?

  1. Linux – Semuanya Adalah File?

  2. Urutkan Bagian Dari File?

  3. Mencari Editor File Gui Alternatif Dengan Dukungan File Besar?