Union mount di Linux

11

Sebuah serikat me-mount hadiah pandangan gabungan dari beberapa direktori (cabang) dalam hirarki tunggal. Oke, tapi bagaimana cara menggunakannya dalam praktik, dan yang mana?

Banyak teknologi union mount tersedia pada sistem Linux modern: OverlayFS , aufs , UnionFS , berbagai filesystem berbasis FUSE, ...

Dengan menggunakan use case, bagaimana saya memutuskan yang mana yang cocok? Khususnya:

  • Yang mana yang membutuhkan akses root pada sistem tipikal? (Dengan kata lain, dapatkah pengguna yang tidak memiliki hak istimewa membuat pemasangan gabungan?)
  • Yang mana yang bisa dipasang /(tentu saja dengan akses root)?
  • Yang mana yang mendukung penulisan ke cabang-cabang yang mendasarinya? (Yaitu jika /foodan /barapakah mount-mount untuk /union, dapatkah saya menulis surat ke /foodan /bar?)
  • Yang mana mendukung kebijakan yang dapat dikonfigurasi untuk penulisan? (Misalnya, bisakah saya mengirim file yang baru dibuat ke cabang B meskipun saya mendapatkan konten dari cabang A ketika file ada di kedua cabang?)
  • Yang mana yang mendukung urutan prioritas antar cabang yang bergantung pada file? (Misalnya, bisakah saya selalu mendapatkan file terbaru di antara semua cabang yang memilikinya?)

Contoh penggunaan akan dihargai.

Harap hindari jawaban yang fokus pada titik tertentu. Saya mencari jawaban komprehensif yang meninjau perangkat lunak yang tersedia (sesuatu yang mirip dengan Apa itu bind mount? ). Jawaban yang bagus akan dihargai.

Gilles 'SANGAT berhenti menjadi jahat'
sumber

Jawaban:

12

Pada masing-masing poin spesifik:

  • Akses root: Jika menggunakan FUSE, itu tidak perlu root, jika tidak menggunakan FUSE, itu perlu root kecuali Anda melakukan pengaturan khusus dengan kemampuan (berpotensi berbahaya) atau ruang nama.

  • Mounting on /: Saya berasumsi maksud Anda sebagai root filesystem pada startup, dalam hal ini siapa pun dari mereka yang berjalan dalam mode kernel harus bekerja secara teori, meskipun beberapa lebih dapat diandalkan daripada yang lain. Sebagian besar LiveCD melakukan ini, jadi di situlah saya akan menyarankan mencari informasi tentang hal ini.

  • Menulis ke cabang yang mendasarinya: Ini tergantung pada apa yang Anda maksud. Jika maksud Anda menyebarkan tulisan ke tampilan mount ke cabang yang lebih rendah, saya tidak tahu. Jika Anda bermaksud menulis ke cabang bawah out-of-band dari sistem file utama itu sendiri, secara teknis semua tiga besar melakukannya, tetapi mereka semua memerlukan remount untuk memastikan bahwa perubahan disebarkan ke tampilan yang dipasang.

  • Kebijakan penulisan yang dapat dikonfigurasi: Saya tidak tahu secara spesifik tentang ini, tapi saya pikir 3 besar (UnionFS, AUFS, dan OverlayFS) tidak mendukungnya.

  • Urutan prioritas yang bergantung pada file: Saya pikir ini termasuk dalam sub-pertanyaan ketiga, dan seperti di sana, saya tidak tahu ada yang secara spesifik mendukungnya.

Adapun beberapa lebih spesifik pada masing-masing:

  • UnionFS: Sejauh yang saya tahu, ini adalah implementasi filesystem union stackable asli untuk Linux. Sudah ada sejak lama, dan digunakan oleh banyak LiveCD Linux. Ini berjalan dalam mode kernel, dan membutuhkan patch ke kernel hulu untuk digunakan.

  • AUFS: Berasal dari garpu UnionFS, dan kemudian menjadi miliknya sendiri. Yang ini berusaha untuk digabungkan menjadi arus utama dan ditolak dengan alasan kualitas kode. Ini menggantikan UnionFS di beberapa distribusi LiveCD, sebagian besar turunan Debian dan Gentoo. Seperti UnionFS, ini berjalan dalam mode kernel dan membutuhkan patch ke kernel upstream.

  • OverlayFS: Saya tidak tahu banyak tentang pengembangan asli yang satu ini, selain itu didukung pada beberapa turunan BSD juga. Ini terutama implementasi sistem file overlay / union di kernel Linux. Ini juga berjalan dalam mode kernel.

  • UnionFS-FUSE: Proyek yang agak membingungkan ini sebenarnya tidak ada hubungannya dengan UnionFS selain menyediakan fungsi yang pada dasarnya sama. Ini implementasi FUSE yang paling banyak digunakan dari sistem file union, tapi hanya itu yang saya tahu tentang itu.

  • mhddfs: Yang ini merupakan outlier aneh yang lebih mirip dengan implementasi granularity file RAID-0 daripada sistem file union konvensional. Ini mendukung menyeimbangkan file di beberapa direktori dukungan berdasarkan penggunaan ruang. Ini juga berbasis FUSE.

Beberapa hal khusus yang perlu diperhatikan yang tidak spesifik untuk implementasi tertentu:

  • Semua opsi di-kernel memiliki batasan pada apa yang dapat didukung oleh filesystem, terutama tidak bekerja dengan filesystem jaringan atau BTRFS.

  • Semua implementasi FUSE memiliki masalah ketika digunakan sebagai sistem file root. Ini tidak spesifik untuk implementasi sistem file gabungan, tetapi lebih merupakan masalah dengan FUSE secara umum.

Austin Hemmelgarn
sumber