Pertanyaan Bagaimana cara menggunakan OverlayFS?


Ini menjawab dan pesan email menunjukkan bahwa sesuatu yang disebut "OverlayFS" tersedia di Ubuntu 11.10 dan akan secara paksa mengganti auf di Ubuntu 12.04.

Bagaimana saya menggunakannya? Di mana dokumentasinya?


48
2018-03-02 15:05


asal


Anda dan saya berdua, saudara. Saya telah menemukan ini sejauh ini: mount -t overlayfs -o rw,uppderdir=x,lowerdir=y overlayfs /mount/point. Di luar itu saya tidak mengerti. Saya mengutak-atiknya dalam sistem hidup, tetapi saya belum berhasil membuatnya bekerja. Saya berharap saya bisa mencari tahu apa arti "upperdir" dan "lowerdir". Saya tidak menemukan apa pun. - Chuck R


Jawaban:


Edit: Sejak menulis jawaban ini, beberapa hal telah berubah dalam overlayfs, yaitu penambahan parameter yang diperlukan workdir, Lihat Jawaban totti di bawah ini untuk penjelasan rinci tentang parameter baru ini.

Saya akhirnya berhasil menemukannya. Saya menemukan referensi untuk itu di sumber kernel, tetapi untuk beberapa alasan itu tidak muncul di pohon git di kernel.org. Tapi! Jika Anda menarik sumber kernel Ubuntu seperti ini: apt-get source linux-image-3.0.0-16-generic Anda dapat menemukannya linux-3.0.0/Documentation/overlayfs.txt. Ini juga tersedia dalam paket linux-doc di /usr/share/doc/linux-doc/filesystems/overlayfs.txt.gz.

Karena dokumentasi bantuan yang sebenarnya lebih dari "cara kerjanya" daripada "cara memasangnya", berikut ini adalah rundown singkat (ada satu contoh dalam dokumentasi kernel):

mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]

Di mana [opsi gunung] dapat:

  • lowerdir = somedir: lowerdir adalah direktori Anda akan meletakkan filesystem baru Anda di atas, jika ada duplikat ini ditimpa oleh (sebenarnya, tersembunyi mendukung) versi upperdir
  • upperdir = somedir: upperdir adalah direktori yang ingin Anda overlay dengan. Jika nama file duplikat ada di lowerdir dan upperdir, versi upperdir diutamakan.
  • opsi pemasangan standar. Satu-satunya yang pernah saya lihat dari kode adalah ro / rw, tetapi Anda dapat melakukan percobaan.

Satu hal yang membingungkan saya pada awalnya, jadi saya mungkin harus mengklarifikasi, adalah bahwa pemasangan overlayfs sebenarnya tidak me-mount filesystem. Saya mencoba me-mount filesystem squashfs menggunakan mount overlay, tetapi bukan itu cara kerjanya. Anda harus terlebih dahulu me-mount (dalam kasus saya squashfs) filesystem ke direktori arbitrary, kemudian menggunakan overlayfs untuk menggabungkan mount point (direktori) dan direktori lain ke direktori tersier (overlayfs mount point) (edit: direktori "tersier" ini sebenarnya bisa menjadi direktori upperdir =). Direktori tersier adalah tempat Anda akan melihat filesystem gabungan (atau pohon direktori - fleksibel).

Contoh 1, melapisi sistem file root

Saya telah bekerja pada boot disk boot hibrida Ubuntu di mana sistem Ubuntu dasar ada sebagai filesystem.squashfs dan saya memiliki file bernama ubuntu.overlay kubuntu.overlay xubuntu.overlay dan lubuntu.overlay. Berkas .overlay adalah penginstalan dasar sistem tersebut dengan konten filesystem.squashfs dipangkas (untuk menghemat ruang). Lalu saya memodifikasi skrip init untuk melapisi file .overlay yang benar (dari parameter boot) menggunakan overlayfs dan opsi di atas dan berfungsi seperti pesona!

Ini adalah garis yang saya gunakan dalam skrip init saya (setelah semua variabel diterjemahkan):

mkdir -p /overlay
mount -t squashfs /cdrom/casper/ubuntu.overlay /overlay
mount -t overlayfs -o lowerdir=/filesystem.squashfs,upperdir=/overlay overlayfs /

Perhatikan bahwa filesystem.squashfs di atas adalah a direktori dibuat oleh casper, bukan file.

Ketiga pernyataan ini membuat /overlay direktori, mount filesystem squashfs pada /overlay direktori dan kemudian gunakan OverlayFS untuk menggabungkan konten /overlaylebih /.

Contoh 2, penggabungan dua direktori secara transparan

Dalam proses membangun kembali live USB saya untuk setiap rilis, saya menggunakan OverlayFS untuk menghemat banyak waktu. Saya memulai dengan sebuah direktori bernama ubuntu-base yang berisi isi dari gambar ubuntu-core yang merupakan instalasi paling dasar. Saya kemudian akan membuat direktori yang disebut ubuntu, kubuntu, lubuntu, dan xubuntu.

Kemudian, saya menggunakan OverlayFS untuk membuat file dari basis ubuntu muncul di direktori individu. Saya akan menggunakan sesuatu seperti ini:

mount -t overlayfs -o lowerdir=ubuntu-base,upperdir=kubuntu overlayfs kubuntu

Ini membuat file dari ubuntu-base muncul di folder kubuntu. Kemudian, saya bisa chroot ke folder kubuntu dan melakukan sesuatu seperti apt-get install kubuntu-desktop. Setiap perubahan yang dibuat saat di mount OverlayFS ini akan tetap berada di direktori atas, dalam hal ini folder kubuntu. Kemudian, setelah saya unmount OverlayFS mount file yang benar-benar ada di ubuntu-base tetapi "mirrored" ke folder kubuntu menghilang kecuali mereka telah diubah. Ini membuat saya harus memiliki banyak salinan file di basis ubuntu sementara masih bisa menggunakannya seolah-olah mereka secara fisik ada di setiap lokasi.


59
2018-03-02 16:32



"tetapi untuk beberapa alasan itu tidak muncul di pohon git di kernel.org" - Itu karena overlay tidak ada di kernel hulu, sama seperti auf tidak (dan tidak akan pernah). Sistem file serikat seperti itu diintegrasikan oleh Tim Kernel Ubuntu. - MestreLion
OverlayFS tampaknya masuk ke kernel 3.10. - David C. Bishop
Akhirnya, harus masuk 3.18 lwn.net/Articles/617099 - Rmano
@Rmano: di komputer saya hanya berfungsi dengan overlay tidak dengan overlayfs - Janus Troelsen
Terima kasih @austinmarton, saya menemukan ini beberapa waktu lalu dan totti menutupinya di bawah sebelum saya memperbarui jawaban saya, jadi saya memberikan pujian atas jawabannya di bagian atas saya. - Chuck R


Dari https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt:

Atas dan Bawah

Overlay filesystem menggabungkan dua filesystem - sebuah filesystem 'atas'   dan filesystem 'lebih rendah'. Ketika nama ada di kedua sistem file,   objek dalam filesystem 'atas' terlihat ketika objek dalam   filesystem 'lebih rendah' ​​tersembunyi atau, dalam hal direktori,   digabung dengan objek 'atas'.

Akan lebih tepat untuk merujuk ke direktori atas dan bawah   pohon 'daripada' filesystem 'karena sangat mungkin untuk keduanya   pohon direktori berada di filesystem yang sama dan tidak ada   persyaratan bahwa root filesystem diberikan untuk salah satu atau atas   menurunkan.

Filesystem yang lebih rendah dapat berupa filesystem yang didukung oleh Linux dan tidak   tidak perlu bisa ditulis. Filesystem yang lebih rendah bahkan bisa menjadi yang lain   overlayfs. Sistem file bagian atas biasanya dapat ditulis dan jika itu   apakah itu harus mendukung penciptaan kepercayaan. * atribut yang diperluas, dan   harus memberikan d_type yang valid dalam respons readdir, jadi NFS tidak cocok.

Sebuah hamparan read-only dari dua sistem file read-only dapat menggunakan apapun   jenis sistem berkas.

Direktori

Overlaying terutama melibatkan direktori. Jika nama yang diberikan muncul di keduanya   filesystem atas dan bawah dan mengacu ke direktori non-baik,   maka objek yang lebih rendah disembunyikan - nama hanya mengacu pada bagian atas   obyek.

Di mana kedua objek atas dan bawah adalah direktori, direktori gabungan   terbentuk.

Pada saat mount, dua direktori diberikan sebagai opsi mount "lowerdir" dan   "upperdir" digabungkan ke dalam direktori gabungan:

mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,workdir=/work /merged

The "workdir" perlu menjadi direktori kosong pada filesystem yang sama   sebagai upperdir.

Kemudian setiap kali pencarian diminta dalam direktori gabungan, maka   Pencarian dilakukan di setiap direktori aktual dan hasil gabungan   di-cache dalam dentry milik filesystem overlay. Jika keduanya   pencarian sebenarnya menemukan direktori, keduanya disimpan dan digabungkan   direktori dibuat, jika tidak hanya satu yang disimpan: bagian atas jika itu   ada, yang lain lebih rendah.

Hanya daftar nama dari direktori yang digabungkan. Konten lainnya   seperti metadata dan atribut diperluas dilaporkan untuk bagian atas   hanya direktori. Atribut-atribut dari direktori yang lebih rendah ini tersembunyi.


18
2018-06-23 10:07



Terima kasih atas klarifikasi pada workdir. Itu adalah perubahan yang cukup baru dan untuk alasan apa pun saya tidak pernah dapat menemukan dokumentasi tentang apa yang sebenarnya 'workdir' lakukan. Itu bukan pada bantuan kernel terakhir kali saya melihat. Menambahkan lapisan kebingungan untuk overlayfs IMO, berharap versi yang lebih baru dapat digunakan tanpa itu - itu semacam mengacaukan alur kerja saya. - Chuck R


Saya telah memperluas artikel-artikel ini untuk menyertakan Script untuk overlayfs yang mengatur fs read-only root.

Semoga itu membantu.


7
2018-03-22 15:30



Berkat pekerjaan yang dilakukan orang lain, Dustin dan saya telah menambahkan paket bungkusan bernama 'overlayroot' ke quantal, yang merupakan bagian dari cloud-initramfs-tools paket sumber. Lihat dokumentasi penggunaan di /etc/overlayroot.conf - smoser