**YAFFS** (Yet Another Flash File System) Yeni Zelanda'daki Whitecliffs şehrinden Charles Manning tarafından Aleph One şirketi için tasarlanmış ve yazılmış bir dosya sistemi türüdür.

Yaffs1, bu dosya sisteminin ilk sürümüdür ve 512 bayt boyutlu (+ 16 byte yedek (OOB; Out-of-Band) alana sahip o andaki NAND yongaları için tasarlanmıştır. İş 2002 yılında başladı ve ilk o yıl serbest bırakıldı. İlk çalışma Toby Churchill Ltd ve Brightstar Engineering tarafından finanse edildi.

Bu eski mikroçip genelde sayfa başına 2 veya 3 yazma döngüsüne izin verir. YAFFS bunun avantajlarından yararlanır: kirli sayfalar, belirli bir yedek alan baytına yazarak işaretlenir. Yeni NAND flaş çipleri, daha sıkı yazma gereksinimleri olan daha büyük sayfalara, ilk 2K sayfaya (+ 64 bayt OOB), daha sonra 4K'ya sahiptir. Bir silme bloğu içindeki her sayfa (128 kilobayt) sıralı sırada yazılmalıdır ve her sayfanın yalnızca bir kez yazılması gerekir.

YAFFS2 bu yeni yongaları barındıracak şekilde tasarlandı. YAFFS1 kaynak koduna dayanıyordu; büyük fark, iç yapıların 512 bayt boyutlandırmanın varsayacak şekilde sabitlenmemesi ve her yazılı sayfaya bir blok sıra numarası yerleştirilmesiydi. Bu şekilde, daha eski sayfalar "bir kez yaz" kuralı ihlal edilmeden mantıksal olarak üzerine yazılabilir. 2003 yılının sonlarında serbest bırakıldı.

YAFFS veri bütünlüğü yüksek önceliğe sahip tutan güçlü bir günlük yapılı dosya sistemidir. İkinci bir YAFFS hedefi yüksek performansdır. YAFFS, çoğu alternatifi geçemez. Ayrıca taşınabilir olacak şekilde tasarlanmıştır ve Linux, Windows CE, pSOS, ECos, ThreadX ve çeşitli özel amaçlı OS'lerde kullanılmıştır. Bir varyant olan 'YAFFS / Direct', gömülü sistem'ler veya bootloader bulunmayan durumlarda kullanılır: aynı çekirdek dosya sistemine sahiptir, ancak hem üst hem de alt düzey koda ve NAND flash donanımına daha basit arayüze sahiptir.

YAFFS kod tabanı, hem GNU Genel Kamu Lisansı kapsamında hem de Aleph One'dan edinilen her bir ürün lisansı altında lisanslıdır.

YAFFS1
------

YAFFS dosya sistemini basitçe flaş hafızasını silmenin ötesinde başlatmak için özel bir prosedür yoktur. Kötü bir blokla karşılaşıldığında YAFFS, bloğun yedek alanının beşinci baytını işaretleyen akıllı ortam şemasını izler. Bu şekilde işaretlenmiş bloklar, bundan sonra ayrılmamış olarak kalır.

Dosya verileri yazmak için, YAFFS başlangıçta Zaman Damgası, ad, yol gibi dosya meta verilerini açıklayan bütün bir sayfada (YAFFS terminolojisinde yığınlar) yazar. Yeni dosyaya benzersiz bir nesne kimlik numarası atanır; dosyadaki her veri yığını, yedek alan içindeki bu benzersiz nesne kimliğini içerecektir. YAFFS, bu parçaların fiziksel konumunun RAM'da bir ağaç yapısını korur. Bir yığın artık geçerli değilse (dosya silinir veya dosyanın bir kısmı üzerine yazılır), YAFFS, yığının yedek alanındaki belirli bir bayt'ı 'kirli' olarak işaretler. Bir blok (32 sayfa) kirli olarak işaretlendiğinde YAFFS bloğu silebilir ve alanı geri alabilir. Dosya sisteminin boş alanı düşük olduğunda, YAFFS bir grup iyi sayfayı yeni bir bloğa birleştirir. YAFFS daha sonra, orijinal blokların her birindeki kirli sayfaların kullandığı alanı geri ister.

YAFFS sistemi NAND flaş aygıtı taktığında, yedek alanını tarayarak geçerli verileri kontrol etmek için her bloğu ziyaret etmelidir. Bu bilgilerle birlikte, bellekte yerleşik ağaç veri yapısını yeniden yapılandırır.

YAFFS2
------

YAFFS2 kendi kavramında YAFFS1'e benzer ve aynı kodun çoğunu paylaşıyor; YAFFS2 kod tabanı YAFFS1 veri formatlarını geriye dönük uyumluluk ile destekler. Temel fark, YAFFS2'nin modern NAND flaşının "bir kez yaz" gerekliliğini karşılamak için önemli çemberleri atlaması gerektiğidir.

YAFFS2, her yeni yazılmış bloğu, monoton olarak artan bir sıra numarası ile işaretler. Parçaların dizisi, blok sıra numarası ve blok içindeki parçanın ofsetinden çıkarılabilir. Böylece, YAFFS2 flaşı taradığında ve aynı ObjectIDs ve ChunkNumbers'a sahip birden fazla parçayı tespit ettiğinde, en büyük sıra numarasını alarak hangisini kullanacağını seçebilir. Verimlilik sebeplerinden dolayı, YAFFS2 ayrıca shrink başlıkları kavramını da getirmektedir. Örneğin, bir dosya daha küçük bir boyuta yeniden boyutlandırıldığında, YAFFS1 etkilenen parçaların hepsini kirli olarak işaretleyecektir - YAFFS2 bunu "bir kez yaz" kuralı nedeniyle yapamaz. Bunun yerine, YAFFS2, o noktadan önceki belirli sayıda sayfanın geçersiz olduğunu belirten bir "shrink başlığı" yazar. Bu, YAFFS2'nin sistem yeniden başlatıldığında dosya sisteminin son durumunu yeniden yapılandırmasını sağlar.

YAFFS2, NAND flaşın daha soyut bir tanımını kullanır ve farklı geometrilere sahip daha çeşitli flash parçaları, kötü blok kullanım kuralları vb. ile kullanılmasını sağlar.

YAFFS2 daha sonra normal takma taramayı atlayan, çok hızlı montaj sürelerine izin veren kontrol noktası desteği ekledi. Performans değişir, ancak 2 GB için 3 saniyelik montaj süresi bildirilmiştir.

Kaynakça
--------

1. ↑  "Arşivlenmiş kopya". 9 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
2. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
3. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
4. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
5. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
6. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
7. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
8. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
9. ↑  "Arşivlenmiş kopya". 30 Eylül 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.
10. ↑  "Arşivlenmiş kopya". 4 Şubat 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Şubat 2018.

Dış bağlantılar
---------------

* Sitesi

Ayrıca bakınız
--------------

* JFFS
* JFFS2
* UBIFS
* LogFS

| * g
* t
* d
Dosya sistemleri |
| --- |
| 
* Dosya sistemleri karşılaştırılması
	+ dağıtık
* Unix dosya sistemi

 |
| Disk ve döngüsüz | 

|  |
| --- |
| 
* ADFS
* AdvFS
* Amiga FFS
* Amiga OFS
* APFS
* AthFS
* bcachefs
* BFS
	+ Be File System
	+ Boot File System
	+ Byte File System (z/VM)
* Btrfs
* CVFS
* CXFS
* DFS
* EFS
	+ Encrypting File System
	+ Extent File System
* Episode
* ext
	+ ext2
	+ ext3
	+ ext3cow
	+ ext4
* FAT
	+ exFAT
* Files-11
* Fossil
* GPFS
* HAMMER
	+ HAMMER2
* HFS (Classic Mac OS)
* HFS (MVS)
* HFS+
* HPFS
* HTFS
* JFS
* LFS
* MFS
	+ Macintosh File System
	+ TiVo Media File System
* MINIX
* NetWare File System
* Next3
* NILFS
	+ NILFS2
* NSS
* NTFS
* OneFS
* OpenZFS
* PFS
* QFS
* QNX4FS
* ReFS
* ReiserFS
	+ Reiser4
* Reliance
* Reliance Nitro
* RFS
* SFS
	+ Shared File System (VM)
	+ Smart File System
* SNFS
* Soup (Apple)
* Tux3
* UBIFS
* UFS/UFS2
	+ soft updates
	+ WAPBL
* VxFS
* WAFL
* Xiafs
* XFS
* Xsan
* zFS (z/OS)
* ZFS (Sun)

 |
| Optik disk | 
* HSF
* ISO 9660
* ISO 13490
* UDF

 |
| Flaş bellek ve SSD | 
* APFS
* FAT
* exFAT
* TFAT
* EROFS
* F2FS
* JFS
* NVFS

|  |  |
| --- | --- |
| host tarafı aşınma dengeleme | 
* CHFS
* JFFS
* JFFS2
* LogFS
* NILFS
	+ NILFS2
* YAFFS
* UBIFS

 |

 |
| Dağıtılmış paralel | 
* BeeGFS
* Ceph
* CXFS
* GFS2
* Google File System
* OCFS2
* OrangeFS
* PVFS
* QFS
* Xsan
* *dahası...*

 |

 |
| NAS | 
* 9P
* AFS (OpenAFS)
* AFP
* Coda
* DFS
* Google File System
* GPFS
* Lustre
* NCP
* NFS
* POHMELFS
* Hadoop
* SMB (CIFS)
* SSHFS
* *dahası...*

 |
| Uzmanlaşmış | 

|  |
| --- |
| 
* Aufs
* AXFS
* Boot File System
* CDfs
* Compact Disc File System
* cramfs
* Davfs2
* EROFS
* FTPFS
* FUSE
* Lnfs
* LTFS
* NOVA
* MVFS
* SquashFS
* UMSDOS
* OverlayFS
* UnionFS

 |
| Sözde | 
* configfs
* devfs
* debugfs
* kernfs
* procfs
* specfs
* sysfs
* tmpfs
* WinFS

 |
| Şifrelenmiş | 
* eCryptfs
* EncFS
* EFS
* Rubberhose
* SSHFS
* ZFS

 |

 |
| Türler | 
* Kümelenmiş
	+ Küresel
	+ Grid
	+ Kendini-doğrulayan
* Flaş
* Jurnal
* Günlük-yapılı
* Nesne
* Kayıt-tabanlı
* Semantik
* Steganografik
* Sentetik
* Sürümleme

 |
| Özellikler | 

|  |
| --- |
| 
* Durum koruma
* Copy-on-write
* Veri tekilleştirme
* Veri temizleme
* Yerinde yürütme
* Genişletme
* Dosya özniteliği
	+ Genişletilmiş dosya öznitelikleri
* Dosya değişiklik günlüğü
* Çatal
* Bağlantılar
	+ Katı
	+ Sembolik

 |
| Erişim denetimi | 
* Erişim kontrol listesi
* Dosya sistemi düzeyinde şifreleme
* İzinler
	+ Modes
	+ Yapışkan bit

 |

 |
| Arayüzler | 
* Dosya yöneticisi
* Dosya sistemi API'si
	+ Yüklenebilir Dosya Sistemi
* Sanal dosya sistemi

 |
| Listeler | 
* Kriptografik
* Varsayılan
* Günlük-yapılı

 |
| Düzenler | 
* Master Boot Record
* GUID Bölümleme Tablosu
* Apple Partition Map

 |