Ini jawaban dan pesan email menunjukkan bahwa sesuatu yang disebut "OverlayFS" yang tersedia di Ubuntu 11.10 dan tegas akan menggantikan aufs di Ubuntu 12.04.
Bagaimana saya menggunakannya? Di mana dokumentasinya?
Ini jawaban dan pesan email menunjukkan bahwa sesuatu yang disebut "OverlayFS" yang tersedia di Ubuntu 11.10 dan tegas akan menggantikan aufs di Ubuntu 12.04.
Bagaimana saya menggunakannya? Di mana dokumentasinya?
Jawaban:
Sunting: Sejak menulis jawaban ini, beberapa hal telah berubah dalam overlayfs, yaitu penambahan parameter yang diperlukan workdir
, lihat jawaban totti di bawah ini untuk penjelasan terperinci 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 di 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 merupakan "cara kerjanya" dan bukan "cara me-mount dengannya," inilah ikhtisar singkat (ada satu contoh dalam dokumentasi kernel):
mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]
Di mana [opsi pemasangan] dapat:
Satu hal yang membingungkan saya pada awalnya, jadi saya mungkin harus mengklarifikasi, adalah bahwa pemasangan overlay tidak benar-benar me-mount sistem file. Saya mencoba me-mount filesystem squashfs menggunakan mount overlayfs, tapi itu bukan cara kerjanya. Anda pertama-tama harus me-mount sistem file (dalam kasus saya squashfs) ke direktori arbitrer, kemudian menggunakan overlayfs untuk menggabungkan titik mount (direktori) dan direktori lain ke direktori tersier (titik mount overlayfs) (edit: direktori "tersier" ini) sebenarnya bisa menjadi upperdir = direktori). Direktori tersier adalah tempat Anda akan melihat filesystem yang digabung (atau pohon direktori - fleksibel).
Saya telah bekerja pada disk boot hibrida Ubuntu di mana sistem Ubuntu dasar ada sebagai filesystem.squashfs dan saya memiliki file yang disebut ubuntu.overlay kubuntu.overlay xubuntu.overlay dan lubuntu.overlay. File .overlay adalah instalasi dasar dari sistem tersebut dengan isi filesystem.squashfs dipangkas (untuk menghemat ruang). Kemudian saya memodifikasi skrip init untuk overlay file .overlay distro yang benar (dari parameter boot) menggunakan overlayfs dan opsi di atas dan berfungsi seperti pesona!
Ini adalah baris 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 direktori yang dibuat oleh casper, bukan file.
Ketiga pernyataan membuat /overlay
direktori, mount squashfs filesystem pada /overlay
direktori dan kemudian menggunakan OverlayFS pada dasarnya menggabungkan isi /overlay
lebih /
.
Dalam proses membangun kembali USB langsung saya untuk setiap rilis, saya menggunakan OverlayFS untuk menghemat banyak waktu. Saya mulai dengan direktori bernama ubuntu-base yang berisi konten 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-file dari basis-Ubuntu muncul di direktori individual. Saya akan menggunakan sesuatu seperti ini:
mount -t overlayfs -o lowerdir=ubuntu-base,upperdir=kubuntu overlayfs kubuntu
Ini membuat file-file dari ubuntu-base muncul di folder kubuntu. Lalu, saya bisa chroot
ke folder kubuntu dan melakukan sesuatu seperti apt-get install kubuntu-desktop
. Setiap perubahan yang dibuat saat dalam mount OverlayFS ini akan tetap berada di direktori atas, dalam hal ini folder kubuntu. Kemudian, setelah saya unmount mount OverlayFS file yang benar-benar ada di ubuntu-base tetapi "dicerminkan" ke folder kubuntu lenyap kecuali mereka telah diubah. Ini membuat saya tidak perlu memiliki banyak salinan file di basis-ubuntu sementara masih dapat menggunakannya seolah-olah mereka secara fisik ada di setiap lokasi.
overlay
tidak denganoverlayfs
Dari https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt :
Atas dan Bawah
Sistem file overlay menggabungkan dua sistem file - sistem file 'atas' dan sistem file 'lebih rendah'. Ketika nama ada di kedua sistem file, objek di sistem file 'atas' terlihat sementara objek di sistem file 'lebih rendah' disembunyikan atau, dalam kasus direktori, digabung dengan objek 'atas'.
Akan lebih tepat untuk merujuk ke 'pohon direktori' atas dan bawah daripada 'sistem file' karena sangat mungkin untuk kedua pohon direktori berada di sistem file yang sama dan tidak ada persyaratan bahwa akar dari sistem file diberikan untuk baik atas atau bawah.
Filesystem yang lebih rendah dapat berupa filesystem apa saja yang didukung oleh Linux dan tidak perlu ditulis. Sistem file yang lebih rendah bahkan bisa menjadi overlayfs lain. Sistem file bagian atas biasanya dapat ditulisi dan jika itu harus mendukung pembuatan atribut extended. * Extended, dan harus memberikan d_type yang valid dalam respons readdir, sehingga NFS tidak cocok.
Hamparan read-only dari dua filesystem read-only dapat menggunakan tipe filesystem apa saja.
Direktori
Overlay terutama melibatkan direktori. Jika nama yang diberikan muncul di kedua filesystem atas dan bawah dan merujuk ke non-direktori di salah satu, maka objek yang lebih rendah disembunyikan - namanya hanya merujuk ke objek atas.
Di mana kedua objek atas dan bawah adalah direktori, direktori gabungan dibentuk.
Pada waktu mount, dua direktori yang diberikan sebagai opsi mount "lowerdir" dan "upperdir" digabungkan ke dalam direktori gabungan:
mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,workdir=/work /merged
"Workdir" harus berupa direktori kosong pada sistem file yang sama dengan upperdir.
Kemudian setiap kali pencarian diminta dalam direktori yang digabungkan, pencarian dilakukan di setiap direktori aktual dan hasil gabungan di-cache dalam dentry milik sistem file overlay. Jika kedua pencarian aktual menemukan direktori, keduanya disimpan dan direktori gabungan dibuat, jika tidak hanya satu yang disimpan: bagian atas jika ada, atau bagian bawah.
Hanya daftar nama dari direktori yang digabung. Konten lain seperti metadata dan atribut diperluas dilaporkan hanya untuk direktori atas. Atribut direktori bawah ini disembunyikan.
Saya telah memperluas artikel ini untuk menyertakan Script untuk overlay yang menetapkan root read-only fs.
Semoga ini bisa membantu.
Contoh runnable minimal
# Create the filesystems.
dd if=/dev/zero of=lower.ext4 bs=1024 count=102400
mkfs -t ext4 lower.ext4
cp lower.ext4 upper.ext4
mkdir lower upper overlay
sudo mount lower.ext4 lower
sudo mount upper.ext4 upper
sudo chown "$USER:$USER" lower upper
printf lower-content > lower/lower-file
# Upper and work must be on the same filesystem.
mkdir upper/upper upper/work
printf upper-content > upper/upper/upper-file
# Work must be empty. E.g. this would be bad:
#printf work-content > upper/work/work-file
# Make the lower readonly to show that that is possible:
# writes actually end up on the upper filesystem.
sudo mount -o remount,ro lower.ext4 lower
# Create the overlay mount.
sudo mount \
-t overlay \
-o lowerdir=lower,upperdir=upper/upper,workdir=upper/work \
none \
overlay \
;
# Interact with the mount.
printf 'overlay-content' > overlay/overlay-file
ls lower upper/upper upper/work overlay
# Write to underlying directories while mounted
# gives undefined behaviour.
#printf lower-content-2 > lower/lower-file-2
#printf upper-content-2 > upper/upper-file-2
# Unmount the overlay and observe state.
sudo umount overlay
ls lower upper/upper upper/work
# Cleanup.
sudo umount upper lower
Output pertama ls
dengan mount:
lower:
lost+found lower-file
overlay:
lost+found lower-file overlay-file upper-file
upper/upper:
overlay-file upper-file
upper/work:
work
Output dari yang kedua ls
tanpa mount:
lower:
lost+found lower-file
upper/upper:
overlay-file upper-file
upper/work:
work
Interpretasi:
work/
direktori) yang seharusnya tidak kita pedulikanContoh diadaptasi dari: Contoh Penggunaan OverlayFS
Berikut adalah contoh yang lebih kompleks dengan beberapa lapisan bawah: Reload overlay dengan banyak lapisan (migrasi jauh dari aufs)
Diuji pada Ubuntu 18.04, kernel Linux 4.15.0.
mount -t overlayfs -o rw,uppderdir=x,lowerdir=y overlayfs /mount/point
. Di luar itu saya tidak tahu apa-apa. Saya mengutak-atiknya dalam sistem live, tetapi saya belum berhasil membuatnya bekerja. Saya berharap saya bisa mengetahui apa arti "upperdir" dan "lowerdir". Saya tidak menemukan apa pun.