Bu cevap ve e-posta mesajı , “OverlayFS” olarak adlandırılan bir şeyin Ubuntu 11.10'da mevcut olduğunu ve Ubuntu 12.04'teki aufların yerini alacağını gösterir.
Bunu nasıl kullanabilirim? Belgeleri nerede?
Bu cevap ve e-posta mesajı , “OverlayFS” olarak adlandırılan bir şeyin Ubuntu 11.10'da mevcut olduğunu ve Ubuntu 12.04'teki aufların yerini alacağını gösterir.
Bunu nasıl kullanabilirim? Belgeleri nerede?
Yanıtlar:
Düzenleme: Bu yanıtı yazma beri bazı şeyler overlayfs değişti, gerekli parametrenin yani eklenmesi workdir
, bkz Totti cevabını bu yeni parametrenin ayrıntılı bir açıklama için aşağıya.
Sonunda onu bulmayı başardım. Çekirdek kaynağında referanslar buldum, ancak bir nedenden dolayı kernel.org'daki git ağacında görünmüyor. Fakat! Ubuntu çekirdek kaynağını bu şekilde çekerseniz: apt-get source linux-image-3.0.0-16-generic
onu içinde bulabilirsiniz linux-3.0.0/Documentation/overlayfs.txt
. Ayrıca linux-doc paketinde de mevcuttur /usr/share/doc/linux-doc/filesystems/overlayfs.txt.gz
.
Asıl yardım dokümantasyonu, "nasıl bağlanır" yerine "nasıl çalışır" dan daha fazlası olduğundan, kısa bir özet (çekirdek belgelerinde bir örnek var):
mount -t overlayfs -o [mount options] overlayfs [mountpoint for merged system]
[Mount seçenekleri] nerede olabilir:
Başta kafamı karıştıran bir şey, bu yüzden muhtemelen açıklığa kavuşturmak gerekir, bir overlayfs montaj aslında bir dosya sistemi monte etmiyor olmasıdır. Bir bindirmeli dağı kullanarak bir squashfs dosya sistemi kurmaya çalışıyordum, ama bu böyle değil. Önce (benim durumumda squashfs) dosya sistemini rastgele bir dizine monte etmeli, daha sonra bağlama noktasını (bir dizin) ve başka bir dizini üçüncü bir dizine (bindirme bağlama noktası) birleştirmek için bindirmeleri kullanmalısınız (düzenleme: this "üçüncül" dizin aslında üst dizin olabilir = dizin). Üçüncül dizin, birleştirilmiş dosya sistemlerini göreceğiniz yerdir (veya dizin ağaçları - esnek).
Temel Ubuntu sisteminin filesystem.squashfs olarak bulunduğu ve ubuntu.overlay kubuntu.overlay xubuntu.overlay ve lubuntu.overlay adında dosyalar bulunan bir Ubuntu hibrit önyükleme diski üzerinde çalışıyorum. .Overlay dosyaları belirtilen sistemlerin temel kurulumlarıdır, filesystem.squashfs budanır (yer kazanmak için). Ardından, başlangıç komutlarını ve yukarıdaki seçenekleri kullanarak doğru distro'nun .overlay dosyasını (bir önyükleme parametresinden) üst üste bindirmek için üstteki komut dosyalarını değiştirdim ve cazibeye benziyor!
Bunlar init betiğimde kullandığım satırlar (tüm değişkenler çevrildikten sonra):
mkdir -p /overlay
mount -t squashfs /cdrom/casper/ubuntu.overlay /overlay
mount -t overlayfs -o lowerdir=/filesystem.squashfs,upperdir=/overlay overlayfs /
Yukarıdaki filesystem.squashfs dosyasının bir dosya değil, casper tarafından oluşturulan bir dizin olduğunu unutmayın .
Bu üç ifadeler bir oluşturmak /overlay
üzerinde squashfs mount, dizin /overlay
esas içeriğini birleştirmek için OverlayFS kullanmak sonra dizin ve /overlay
üzerine /
.
Her sürüm için canlı USB'mi yeniden oluşturma sürecinde, çok fazla zaman kazanmak için OverlayFS kullanıyorum. En temel kurulum olan ubuntu-core görüntünün içeriğini içeren ubuntu-base adında bir dizinle başladım. Daha sonra ubuntu, kubuntu, lubuntu ve xubuntu adlı dizinler oluşturacağım.
Ardından, ubuntu-tabanındaki dosyaları tek tek dizinlerde göstermek için OverlayFS kullanıyorum. Böyle bir şey kullanırdım:
mount -t overlayfs -o lowerdir=ubuntu-base,upperdir=kubuntu overlayfs kubuntu
Bu ubuntu-base'den gelen dosyaları kubuntu klasöründe gösterir. Sonra chroot
kubuntu klasörüne gidip bir şey yapabilirim apt-get install kubuntu-desktop
. Bu OverlayFS montajı sırasında yapılan değişiklikler üst dizinde, bu durumda kubuntu klasörü olarak kalacaktır. Ardından, OverlayFS'nin bağlantısını çıkardıktan sonra ubuntu-base'de gerçekten var olan ancak değiştirilmediği sürece kubuntu klasörüne "yansıtılmış" olan dosyaları bağladım. Bu, ubuntu-base içindeki dosyaların birden fazla kopyasına sahip olmamın yanı sıra, her bir yerde fiziksel olarak varmış gibi kullanmaya devam etmemi sağlıyor.
overlay
değil çalışıroverlayfs
Gönderen https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt :
Üst ve alt
Bir bindirmeli dosya sistemi iki dosya sistemini birleştirir - bir 'üst' dosya sistemi ve bir 'alt' dosya sistemi. Her iki dosya sisteminde bir ad bulunduğunda, 'üst' dosya sistemindeki nesne görünürken 'alt' dosya sistemindeki nesne gizlenir veya dizinler durumunda 'üst' nesneyle birleştirilir.
Her iki dizin ağacının aynı dosya sisteminde olması oldukça muhtemel olduğundan ve 'dosya sistemi' yerine üst ve alt bir 'dizin ağacına' başvurmak daha doğru olacaktır ve bir dosya sisteminin kökü için bir gereklilik yoktur. Üst veya alt.
Düşük dosya sistemi Linux tarafından desteklenen herhangi bir dosya sistemi olabilir ve yazılabilir olması gerekmez. Düşük dosya sistemi başka bir bindirmeler olabilir. Üst dosya sistemi normalde yazılabilir olacaktır ve eğer öyleyse güvenilir. * Genişletilmiş özniteliklerin oluşturulmasını desteklemeli ve readdir yanıtlarında geçerli d_type sağlamalıdır, bu nedenle NFS uygun değildir.
Salt okunur iki dosya sisteminin salt okunur yerleşimi herhangi bir dosya sistemi türünü kullanabilir.
Dizinler
Yer paylaşımı, genellikle dizinleri içerir. Belirli bir ad hem alt hem de üst dosya sistemlerinde görünüyorsa ve her ikisinde de bir dizine işaret etmiyorsa, alt nesne gizlenir - ad yalnızca üst nesneye işaret eder.
Hem üst hem de alt nesnelerin dizinler olması durumunda, birleştirilmiş bir dizin oluşturulur.
Montaj zamanında, "lowerdir" ve "upperdir" montaj seçenekleri olarak verilen iki dizin birleştirilmiş bir dizinde birleştirilir:
mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,workdir=/work /merged
"Workdir", üst dosya ile aynı dosya sisteminde boş bir dizin olmalıdır.
Daha sonra böyle bir birleştirilmiş bir dizinde bir arama istendiğinde, arama her bir gerçek dizinde gerçekleştirilir ve birleştirilmiş sonuç, bindirme dosya sistemine ait dişlide önbelleğe alınır. Her iki gerçek arama da dizin bulursa, her ikisi de saklanır ve birleştirilmiş bir dizin oluşturulur, aksi takdirde yalnızca bir tanesi saklanır: varsa, üst, daha düşük.
Sadece dizinlerden gelen isimlerin listeleri birleştirilir. Meta veri ve genişletilmiş öznitelikler gibi diğer içerikler yalnızca üst dizin için rapor edilir. Bu alt dizinin bu özellikleri gizlidir.
Bu makaleleri, salt okunur bir kök fs ayarlayan bindirmeler için bir Komut Dosyası içerecek şekilde genişlettim.
Umarım yardımcı olur.
Minimum çalıştırılabilir örnek
# 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
Bağlantılı ilk çıktı ls
:
lower:
lost+found lower-file
overlay:
lost+found lower-file overlay-file upper-file
upper/upper:
overlay-file upper-file
upper/work:
work
Bağlantısız ikinci çıkış ls
:
lower:
lost+found lower-file
upper/upper:
overlay-file upper-file
upper/work:
work
Yorumlama:
work/
umursamamız gereken bazı rastgele içerikler (bir dizin) içerirUyarlanan örnek: Örnek OverlayFS Kullanımı
İşte birden fazla alt katmana sahip daha karmaşık bir örnek: Bindirmeler birden fazla katmanla yeniden yüklendi (auflardan uzaklaşarak)
Ubuntu 18.04, Linux çekirdeği 4.15.0'da test edilmiştir.
mount -t overlayfs -o rw,uppderdir=x,lowerdir=y overlayfs /mount/point
. Bunun ötesinde clueless'ım. Canlı bir sistemde onu kontrol ediyorum, ancak henüz işe almak için başardı. Keşke tam olarak "upperdir" ve "lowerdir" nin ne anlama geldiğini öğrenebilseydim. Hiçbir şey bulamadım.