ExFAT
{{Short description|Flash file system}}
{{lowercase}}
{{Infobox filesystem
| name = exFAT
| developer = Microsoft
| full_name = Extensible File Allocation Table
| introduction_date = {{Start date and age|2006|11}}
| introduction_os = Windows Embedded CE 6.0
| partition_id = {{plainlist|
- MBR/EBR: {{mono|0x07}} (same as for HPFS/NTFS)
- BDP/GPT: {{mono|EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}}}}
| directory_struct = Table
| file_struct = bitmap, linked list
| bad_blocks_struct = Cluster tagging
| max_volume_size = 128 PB, 512 TB recommended
| max_files_no = up to 2,796,202 per directory
| max_filename_size = 255 characters
| filename_character_set = all Unicode characters except {{nowrap|U+0000 (NUL)}} to {{nowrap|U+001F (US)}} {{nowrap|/
(slash)}} {{nowrap|\
(backslash)}} {{nowrap|:
(colon)}} {{nowrap|*
(asterisk)}} {{nowrap|?
(question mark)}} {{nowrap|"
(quote)}} {{nowrap|<
(less than)}} {{nowrap|>
(greater than)}} and {{nowrap||
(pipe)}}
(encoding in UTF-16LE){{cn|date=February 2023}}
| dates_recorded = Creation, last modified, last access
| date_range = 1980-01-01 to 2107-12-31
| date_resolution = {{ubli
| 10 ms for last modified time,
| 10 ms for creation time,
| 2 seconds day for access date
}}
| forks_streams = No
| attributes = Read-only, hidden, system, subdirectory, archive
| file_system_permissions = ACL (Windows CE 6 only)
| compression = No
| encryption = Yes, EFS supported in Windows 10 v1607 and Windows Server 2016 or later.
| OS = {{plainlist|
- Windows Embedded CE 6.0
- Windows XP SP2 and later
- Windows Server 2003 SP2 and later
- Linux distros with either Linux kernel v5.4+{{Cite web|url=https://lwn.net/Articles/805462/|title=The 5.4 kernel has been released|author=corbet|date=2019-11-25|website=LWN.net|access-date=2019-12-01}} or FUSE
- FreeBSD with FUSE{{Cite web|url=https://man.freebsd.org/cgi/man.cgi?query=mount.exfat-fuse&apropos=0&sektion=8&manpath=FreeBSD+14.1-RELEASE+and+Ports&arch=default&format=html|title=mount.exFAT map page from FreeBSD ports|author=Andrew Nayenko|date=2015-11-12|language=en|access-date=2024-10-12}}
- Mac OS X 10.6 and later{{Cite web|url=https://www.macrumors.com/2010/11/11/mac-os-x-10-6-5-notes-exfat-support-airprint-flash-player-vulnerability-fixes/|title=Mac OS X 10.6.5 Notes: exFAT Support, AirPrint, Flash Player Vulnerability Fixes|language=en|author=Eric Slivka|date=2010-11-11|website=MacRumors|access-date=2023-12-26}}
- Android 13 and some devices running previous versions
- iOS 13.1 and later
- ChromeOS
}}
| variants =
| data_deduplication =
}}
exFAT (Extensible File Allocation Table) is a file system optimized for flash memory such as USB flash drives and SD cards, that was introduced by Microsoft in 2006. exFAT was proprietary until 28 August 2019, when Microsoft published its specification.{{Cite web|url=https://docs.microsoft.com/en-us/windows/win32/fileio/exfat-specification|title=exFAT Specification|author=Microsoft|date=August 28, 2019|url-status=live|archive-url=https://web.archive.org/web/20200719152933/https://docs.microsoft.com/en-us/windows/win32/fileio/exfat-specification|archive-date=2020-07-19}} Microsoft owns patents on several elements of its design.
exFAT can be used where NTFS is not a feasible solution (due to data-structure overhead), but where a greater file-size limit than that of the standard FAT32 file system (i.e. 4 GB) is required.
exFAT has been adopted by the SD Association as the default file system for SDXC and SDUC cards larger than 32 GB.
Windows 8 and later versions natively support exFAT boot, and support the installation of the system in a special way to run in the exFAT volume.
History
exFAT was introduced in late 2006 as part of Windows CE 6.0, an embedded Windows operating system. Support was added to regular Windows with Windows Vista Service Pack 1 and Windows Server 2008, both released on February 4, 2008. An update for Windows XP and Windows Server 2003 was later released.
Most of the vendors signing on for licenses are manufacturers of embedded systems or device manufacturers that produce media formatted with exFAT. The entire File Allocation Table (FAT) family, exFAT included, is used for embedded systems because it is lightweight and is better suited for solutions that have low memory and low power requirements, and can be easily implemented in firmware.
Features
Because file size references are stored in eight instead of four bytes, the file size limit has increased to {{nowrap|16 exabytes (EB)}} ({{nowrap|264 − 1 bytes}}, or about {{nowrap|1019 bytes}}, which is otherwise limited by a maximum volume size of {{nowrap|128 PB,}} or {{nowrap|257 − 1 bytes}}), raised from {{nowrap|4 GB}} ({{nowrap|232 − 1 bytes}}) in a standard FAT32 file system. Therefore, for the typical user, this enables seamless interoperability between Windows, Linux and {{nowrap|macOS}} platforms for files in excess of 4 GB.
Other specifications, features, and requirements of the exFAT file system include:
- Scalability to large disk sizes: about 128 PB ({{nowrap|257 − 1 bytes}}){{cite web |url=http://msdn.microsoft.com/en-us/library/windows/desktop/ee681827(v=vs.85).aspx |title=File System Functionality Comparison |publisher=Microsoft |access-date=February 26, 2015 |archive-date=April 7, 2015 |archive-url=https://web.archive.org/web/20150407044554/https://msdn.microsoft.com/en-us/library/windows/desktop/ee681827(v=vs.85).aspx |url-status=live}}. maximum, 512 TB ({{nowrap|249 − 1 bytes}}) recommended maximum, raised from the 32-bit limit (2 TB for a sector size of 512 bytes) of standard FAT32 partitions.{{cite web | url=http://support.microsoft.com/kb/314463 | title=Limitations of the FAT32 File System in Windows XP | access-date=February 11, 2011 | date=December 1, 2007 | publisher=Microsoft | archive-date=February 24, 2015 | archive-url=https://web.archive.org/web/20150224162047/http://support.microsoft.com/kb/314463 | url-status=live }}
- Support for up to 2,796,202 files per directory. Microsoft documents a limit of 65,534 (216 − 2) files per sub-directory for their FAT32 implementation, but other operating systems have no special limit for the number of files in a FAT32 directory. FAT32 implementations in other operating systems allow an unlimited number of files up to the number of available clusters (that is, up to 268,304,373 files on volumes without long filenames).
- Maximum number of files on volume C{{clarify|date=April 2022}}, to 4,294,967,285 ({{nowrap|2{{sup|32}} − 11}}, up from about {{nowrap|2{{sup|28}} − 11}} in standard FAT32).
- Free space allocation and delete performance improved due to introduction of a free-space bitmap.
- Timestamp granularity of 10 ms for creation and modified times (down from 2 s on FAT, but not as fine as NTFS's 100 ns).
- Timestamp granularity for last-access time to double seconds (FAT had date only).
- Timestamps come with a time zone marker in offset relative to UTC (starting with Vista SP2).{{cite web |first=Mike |last=Nash |url=http://windowsteamblog.com/blogs/windowsvista/archive/2008/10/24/windows-vista-service-pack-2-beta.aspx |archive-url=https://web.archive.org/web/20130509023652/http://blogs.windows.com/windows/archive/b/windowsvista/archive/2008/10/24/windows-vista-service-pack-2-beta.aspx |archive-date=May 9, 2013 |title=Windows Vista Service Pack 2 Beta |publisher=The Windows Blog |date=October 24, 2008 |url-status=dead }}
- Optional support for access-control lists (not currently supported in Windows Desktop/Server versions).{{cite web | url=http://www.anandtech.com/systems/showdoc.aspx?i=3233&p=4 | title=A Second Shot: Windows Vista SP1 | access-date=November 5, 2013 | archive-date=December 2, 2008 | archive-url=https://web.archive.org/web/20081202101342/http://www.anandtech.com/systems/showdoc.aspx?i=3233&p=4 | url-status=live }}
- Optional support for TexFAT, a transactional file system standard (optionally WinCE activated function, not supported in Windows Desktop/Server versions).
- Boundary alignment offset for the FAT table.
- Boundary alignment offset for the data region.
- Provision for OEM-definable parameters to customize the file system for specific device characteristics.{{cite web | url=http://msdn.microsoft.com/en-us/library/ee490605%28v=winembedded.60%29.aspx | title=OEM Parameter Definition with exFAT (Windows Embedded CE 6.0) | access-date=November 25, 2013 | archive-date=December 3, 2013 | archive-url=https://web.archive.org/web/20131203021913/http://msdn.microsoft.com/en-us/library/ee490605%28v=winembedded.60%29.aspx | url-status=live }}
- Valid data length (VDL): through the use of two distinct lengths fields{{snd}} one for "allocated space" and the other for "valid data"{{snd}} exFAT can preallocate a file without leaking data that was previously on-disk.
- Cluster size up to 32 MB.
- Metadata integrity with checksums.{{clarify|date=June 2014}}
- Template-based metadata structures.{{clarify|date=June 2014}}
- Removal of the physical {{code|.}} and {{code|..}} directory entries that appear in subdirectories.
- exFAT no longer stores the short 8.3 filename references in directory structure and natively uses extended file names, whereas legacy FAT versions implement extended file names through the VFAT extension.
Windows XP requires update KB955704 to be installed, and Windows Vista requires its SP1 installed.{{Cite web|url=http://www.microsoft.com/en-us/legal/intellectualproperty/IPLicensing/Programs/exFATFileSystem.aspx|archive-url=https://web.archive.org/web/20130507183540/http://www.microsoft.com/en-us/legal/intellectualproperty/IPLicensing/Programs/exFATFileSystem.aspx|url-status=dead|title=Information about support for exFAT under Windows Vista.|website=Microsoft|archive-date=May 7, 2013}}{{cite web|url=http://www.microsoft.com/en-us/download/details.aspx?id=30|title=Download Windows Vista Service Pack 1 Five Language Standalone (KB936330) from Official Microsoft Download Center|publisher=Microsoft|access-date=February 26, 2015|archive-date=February 26, 2015|archive-url=https://web.archive.org/web/20150226105901/http://www.microsoft.com/en-us/download/details.aspx?id=30|url-status=live}} Windows Vista is unable to use exFAT drives for ReadyBoost. Windows 7 removes this limitation, enabling ReadyBoost caches larger than 4 GB.{{cite web|url=http://www.tech-recipes.com/rx/2801/exfat_versus_fat32_versus_ntfs|title=exFAT Versus FAT32 Versus NTFS|date=February 27, 2008|access-date=October 2, 2009|archive-date=January 29, 2013|archive-url=https://web.archive.org/web/20130129045108/http://www.tech-recipes.com/rx/2801/exfat_versus_fat32_versus_ntfs/|url-status=live}} Windows 10 only allows formatting exFAT and NTFS on non-removeable volumes sized larger than 32 GB with the default user interface, and FAT32 format is suggested for smaller volumes; command-line utilities don't accept quick format using FAT32 if volume is larger than 32 GB.
The standard exFAT implementation is not journaled and only uses a single file allocation table and free-space map. FAT file systems instead used alternating tables, as this allowed recovery of the file system if the media was ejected during a write (which occurs frequently in practice with removable media). The optional TexFAT component adds support for additional backup tables and maps, but may not be supported.
The exFAT format allows individual files larger than 4 GB, facilitating long continuous recording of HD video, which can exceed the 4 GB limit in less than an hour. Digital cameras using FAT32 will break the video files into multiple segments of approximately 2 or 4 GB.
EFS supported in Windows 10 v1607 and Windows Server 2016 or later.{{Cite web |title=[MS-FSCC]: Appendix B: Product Behavior |url=https://msdn.microsoft.com/en-us/library/cc232128.aspx#Appendix_A_140 |access-date=2017-10-02 |website=msdn.microsoft.com |language=en-us}}
= Efficiency =
SDXC cards running at UHS-I have a minimum guaranteed write speed of 10 MB/s, and exFAT plays a factor in achieving this throughput through the reduction of the file-system overhead in cluster allocation. This is achieved through the introduction of a separate cluster bitmap where the reservation state of each cluster (reserved/free) is tracked by only one bit, reducing writes to the much larger FAT that originally served this purpose.
Additionally, a single bit in the directory record indicates that the file is contiguous (unfragmented), telling the exFAT driver to ignore the FAT. This optimization is analogous to an extent in other file systems, except that it only applies to whole files, as opposed to contiguous parts of files.
Adoption
exFAT is supported in Windows XP and Windows Server 2003 with update KB955704, Windows Vista Service Pack 1 and later,{{cite web|url=http://windowsvistablog.com/blogs/windowsvista/pages/windows-vista-service-pack-1-beta-whitepaper.aspx#_Toc175944550|title=Vista SP1 Whitepaper|date=August 28, 2007|access-date=August 28, 2007|first=Brandon|last=LeBlanc|publisher=Microsoft|archive-date=September 2, 2007|archive-url=https://web.archive.org/web/20070902075248/http://windowsvistablog.com/blogs/windowsvista/pages/windows-vista-service-pack-1-beta-whitepaper.aspx#_Toc175944550|url-status=dead}} Windows Server 2008 and later (except Server Core), macOS starting from 10.6.5, Linux via FUSE or natively starting from kernel 5.4, and iPadOS as well as iOS starting from 13.1.{{Cite web |url=https://appleinsider.com/articles/19/06/07/how-to-use-external-storage-on-ipad-and-iphone-with-ios-13 |title=How to use external storage on iPad and iPhone with iOS 13 |first=Andrew |last=O'Hara |date=June 7, 2019 |website=AppleInsider |language=en |access-date=2020-02-26 |archive-date=2019-08-02 |archive-url=https://web.archive.org/web/20190802142532/https://appleinsider.com/articles/19/06/07/how-to-use-external-storage-on-ipad-and-iphone-with-ios-13 |url-status=live}}
Companies can integrate exFAT into a specific group of consumer devices, including cameras, camcorders, and digital photo frames for a flat fee. Mobile phones, PCs, and networks have a different volume pricing model.
exFAT is supported in a number of media devices such as modern flat-panel TVs,{{cite web |url=http://esupport.sony.com/US/perl/support-info.pl?info_id=799&mdl=KDL46EX720 |title=exFAT support on Sony |access-date=January 6, 2013 |archive-date=February 19, 2012 |archive-url=https://web.archive.org/web/20120219004729/http://esupport.sony.com/US/perl/support-info.pl?info_id=799&mdl=KDL46EX720 |url-status=live }} media centers, and portable media players.{{cite web|url=http://paradigmsolutions.files.wordpress.com/2009/12/exfat-excerpt-1-4.pdf|first=Jeff|last=Hamm|publisher=Paradigm Solutions|year=2009|title=Extended FAT File System|access-date=April 9, 2013|archive-date=March 14, 2016|archive-url=https://web.archive.org/web/20160314105027/https://paradigmsolutions.files.wordpress.com/2009/12/exfat-excerpt-1-4.pdf|url-status=live}}
exFAT is the official file system of SDXC cards. Because of this, any device not supporting exFAT, such as the Nintendo 3DS, may not legally advertise itself as SDXC compatible, despite supporting SDXC cards as mass storage devices by formatting the card with FAT32 or a proprietary file system tied to the device in question.
Some vendors of other flash media, including USB pen drives, compact flash (CF) and solid-state drives (SSD) ship some of their high-capacity media pre-formatted with the exFAT file system to ensure compatibility with any given device. For example, Sandisk ships their 256 GB CF cards as exFAT.
Microsoft has entered into licensing agreements with BlackBerry,{{Cite web|url=https://www.tomshardware.com/news/microsoft-file-system-smartphone,17723.html|title=Microsoft Licenses exFAT to Research In Motion|date=September 20, 2012|website=Tom's Hardware}}{{cite press release |url=http://www.microsoft.com/en-us/news/Press/2012/Sep12/09-18RIMPR.aspx |title=Microsoft Signs Licensing Agreement With Research In Motion |date=18 September 2012 |publisher=Microsoft |access-date=17 March 2015 |archive-date=10 September 2014 |archive-url=https://web.archive.org/web/20140910034927/http://www.microsoft.com/en-us/news/press/2012/sep12/09-18rimpr.aspx |url-status=live }} Panasonic, Sanyo, Sony, Canon, Aspen Avionics,{{cite press release |url=http://www.microsoft.com/en-us/news/Press/2012/May12/05-03AspenPR.aspx |title=Microsoft Signs Patent Licensing Agreement With Aspen Avionics |publisher=Microsoft |access-date=2013-05-13 |archive-date=2013-05-15 |archive-url=https://web.archive.org/web/20130515185505/http://www.microsoft.com/en-us/news/Press/2012/May12/05-03AspenPR.aspx |url-status=live }} Audiovox, Continental, Harman, LG Automotive{{Cite web|url=https://news.microsoft.com/2013/06/19/in-vehicle-infotainment-gets-boost-from-new-microsoft-exfat-file-system-deals-2/|title=In-vehicle infotainment gets boost from new Microsoft exFAT file system deals|date=June 19, 2013|website=Stories|access-date=July 28, 2019|archive-date=July 28, 2019|archive-url=https://web.archive.org/web/20190728221459/https://news.microsoft.com/2013/06/19/in-vehicle-infotainment-gets-boost-from-new-microsoft-exfat-file-system-deals-2/|url-status=live}} and BMW.{{cite press release|url=http://www.microsoft.com/en-us/news/Press/2013/Jan13/01-16BMWPR.aspx|title=Microsoft Signs exFAT Licensing Agreement With BMW|publisher=Microsoft|access-date=2013-01-17|archive-date=2013-01-19|archive-url=https://web.archive.org/web/20130119035046/http://www.microsoft.com/en-us/news/Press/2013/Jan13/01-16BMWPR.aspx|url-status=live}}
Mac OS X Snow Leopard 10.6.5 and later can create, read, write, verify, and repair exFAT file systems.
Linux has support for exFAT via FUSE since 2009. In 2013, Samsung Electronics published a Linux driver for exFAT under GPL.{{Cite web|url=https://sfconservancy.org/news/2013/aug/16/exfat-samsung/|title=Conservancy Helps Samsung Resolve GPL Compliance Matter Amicably|website=Software Freedom Conservancy|language=en|access-date=2019-03-15|archive-date=2019-02-03|archive-url=https://web.archive.org/web/20190203131826/https://sfconservancy.org/news/2013/aug/16/exfat-samsung/|url-status=live}}
On 28 August 2019, Microsoft published the exFAT specification and released the patent to the Open Invention Network members.{{Cite web|title=exFAT in the Linux kernel? Yes!|url=https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/|publisher=Microsoft|author=John Gossman|date=2019-08-28|access-date=2019-09-02|archive-date=2019-09-01|archive-url=https://web.archive.org/web/20190901180353/https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/|url-status=live}} The Linux kernel introduced native exFAT support with the 5.4 release in November 2019.
ChromeOS can read and write to exFAT partitions.{{Cite web |title=File types and external devices that work on Chromebooks |url=https://support.google.com/chromebook/answer/183093?hl=en#zippy=%2Cfilesystems |publisher=Google Inc. |author= |access-date=2021-06-08 |archive-date=2014-01-11 |archive-url=https://web.archive.org/web/20140111120552/https://support.google.com/chromebook/answer/183093?hl=en#zippy=%2Cfilesystems |url-status=live}}
OpenHarmony operating system since 3.1 version in December 2021, alongside HarmonyOS platform with HarmonyOS NEXT Beta update add native support for read and write exFAT partitions.{{cite web |last1=Sarkar |first1=Amy |title=New HarmonyOS NEXT adds exFAT support and charging improvements |url=https://www.huaweicentral.com/harmonyos-next-beta-adds-exfat/ |website=HC Newsroom |date=13 October 2024 |access-date=13 October 2024}}
Technical specifications
class="wikitable" style="float:right; margin:10px;"
|+ Default exFAT cluster sizes in Windows | ||
Volume size ! Cluster ! Cluster | ||
---|---|---|
{{0|00}}7 MB to <256 MB | {{0|00}}4 KB | <{{0|000}}65,536 |
256 MB to <{{0|0}}32 GB | {{0}}32 KB | <{{0|0}}1,048,576 |
{{0}}32 GB to <512 GB | 128 KB | rowspan="8" | <{{0|0}}4,194,304 |
512 GB to <{{0|00}}1 TB | 256 KB | |
{{0|00}}1 TB to <{{0|00}}2 TB | 512 KB | |
{{0|00}}2 TB to <{{0|00}}4 TB | {{0|00}}1 MB | |
{{0|00}}4 TB to <{{0|00}}8 TB | {{0|00}}2 MB | |
{{0|00}}8 TB to <{{0|0}}16 TB | {{0|00}}4 MB | |
{{0}}16 TB to <{{0|0}}32 TB | {{0|00}}8 MB | |
{{0}}32 TB to <{{0|0}}64 TB | {{0}}16 MB | |
{{0}}64 TB to <512 TB | {{0}}32 MB | <16,777,216 |
colspan="3" style="width:256px;" |Notes: {{reflist|group=upper-alpha|refs=
Windows 8/10 defaults to exFAT on volumes sized ≥32 GB, and FAT32 on volumes <32 GB. Windows XP/Vista/7 defaults to 128 KB clusters for volumes sized ≥32 GB. }} |
= File name lookup =
exFAT employs a filename hash-based lookup phase to speed certain cases, which is described in US patent Quick File Name Lookup Using Name Hash.{{Cite patent |country=US |number=8321439 |pubdate=2012-11-27 |title=Quick filename lookup using name hash |assign1=Microsoft Corp. |inventor1-last=Pudipeddi |inventor1-first=Ravisankar V. |inventor2-last=Ghotge |inventor2-first=Vishal V. |inventor3-last=Thind |inventor3-first=Ravinder S.}}; contains Microsoft exFAT specification (revision 1.00). Appendix A of the document contains details helpful in understanding the file system.
= File and cluster pre-allocation =
Like NTFS, exFAT can pre-allocate disk space for a file by just marking arbitrary space on disk as "allocated". For each file, exFAT uses two separate 64-bit fields in the directory: the valid data length (VDL), which indicates the real size of the file, and the physical data length.
To provide improvement in the allocation of cluster storage for a new file, Microsoft incorporated a method to pre-allocate contiguous clusters and bypass the use of updating the FAT table, which was patented December 10, 2013.{{Cite patent |country=US |number=8606830 |pubdate=2013-12-10 |title=Contiguous file allocation in an extensible file system |assign1=Microsoft Corp. |inventor1-last=Pudipeddi |inventor1-first=Ravisankar V. |inventor2-last=Ghotge |inventor2-first=Vishal V. |inventor3-last=Thind |inventor3-first=Ravinder S. |inventor4-last=Goebel |inventor4-first=David A.}} One feature of exFAT (used in the exFAT implementation within embedded systems) provides atomic transactions for the multiple steps of updating the file-system metadata. The feature called Transaction Safe FAT, or TexFAT, was granted a patent on November 3, 2009.{{Cite patent |country=US |number=7613738 |pubdate=2009-11-03 |title=FAT directory structure for use in transaction safe file system |assign1=Microsoft Corp. |inventor1-last=Patel |inventor1-first=Sachin |inventor2-last=Gopalan |inventor2-first=Yadhu |inventor3-last=Rogers |inventor3-first=Andrew}}
= Directory file set =
exFAT and the rest of the FAT family of file systems do not use indexes for file names, unlike NTFS, which uses B-trees for file searching. When a file is accessed, the directory must be sequentially searched until a match is found. For file names shorter than 16 characters in length, one file name record is required but the entire file is represented by three 32-byte directory records. This is called a directory file set, and a 256 MB sub-directory can hold up to 2,796,202 file sets. (If files have longer names, this number will decrease, but this is the maximum based on the minimal three-record file set.) To help improve the sequential searching of the directories (including the root) a hash value of the file name is derived for each file and stored in the directory record. When searching for a file, the file name is first converted to upper case using the upcase table (file names are case-insensitive) and then hashed using a proprietary patented algorithm into a 16-bit (2-byte) hash value. Each record in the directory is searched by comparing the hash value. When a match is found, the file names are compared to ensure that the proper file was located in case of hash collisions. This improves performance because only 2 bytes have to be compared for each file. This significantly reduces the CPU load because most file names are more than 2 characters (bytes) in size and virtually every comparison is performed on only 2 bytes at a time until the intended file is located.
= Metadata and checksums =
exFAT introduces metadata integrity through the use of checksums. There are three checksums currently in use.
- The volume boot record (VBR) is a 12-sector region that contains the boot records, BIOS parameter block (BPB), OEM parameters and the checksum sector. (There are two VBR type regions, the main VBR and the backup VBR.) The checksum sector is a checksum of the previous 11 sectors, with the exception of three bytes in the boot sector (flags and percent used). This provides integrity of the VBR by determining whether the VBR was modified. The most common cause could be a boot-sector virus, but this would also catch any other corruption to the VBR.
- A second checksum is used for the upcase table. This is a static table and should never change. Any corruption in the table could prevent files from being located because this table is used to convert the filenames to upper case when searching to locate a file.
- The third checksum is in the directory file sets. Multiple directory records are used to define a single file, and this is called a file set. This file set has metadata including the file name, time stamps, attributes, address of first cluster location of the data, file lengths, and the file name. A checksum is taken over the entire file set, and a mismatch would occur if the directory file set was accidentally or maliciously changed.
When the file system is mounted, and the integrity check is conducted, these hashes are verified. Mounting also includes comparison of the version of the exFAT file system by the driver to make sure the driver is compatible with the file system it is trying to mount, and to make sure that none of the required directory records are missing (for example, the directory record for the upcase table and allocation bitmap are required, and the file system can't run if they are missing). If any of these checks fail, the file system should not be mounted, although in certain cases it may mount read-only.
The file system provides extensibility through template-based metadata definitions using generic layouts and generic patterns.{{Cite patent|country=US|number=10614032|pubdate=2020-04-07|title=Quick filename lookup using name hash|assign1=Microsoft Technology Licensing LLC|inventor1-last=Pudipeddi|inventor1-first=Ravisankar V.|inventor2-last=Ghotge|inventor2-first=Vishal V.|inventor3-last=Thind|inventor3-first=Ravinder S.}}; contains exFAT specification revision 1.00. See Tables 8, 12, 13, 14, 15, 16, 17.{{Cite patent|country=US|number=9639554|pubdate=2017-05-02|title=Extensible file system|assign1=Microsoft Technology Licensing LLC|inventor1-last=Pudipeddi|inventor1-first=Ravisankar V.|inventor2-last=Ghotge|inventor2-first=Vishal V.|inventor3-last=Havewala|inventor3-first=Sarosh C.|inventor4=Ravinder S. Thind;Mark J. Zbikowski}}; states in abstract and elsewhere that directory records can be custom-defined.
= Flash optimizations =
exFAT contains a few features that, according to Microsoft, makes it flash-friendly:
- Boundary alignment for filesystem structures. The offsets for the FAT and the cluster heap is adjustable at format time, so that writes to these areas will happen in as few flash blocks as possible.
- An "OEM parameters" field can be used to record features such as block size of the underlying storage. One single type for flash storage is pre-defined.{{cite web |title=OEM Parameter Definition with exFAT (Windows Embedded CE 6.0) |url=https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ee490605(v=winembedded.60) |website=Microsoft documentation | date=5 January 2012 |language=en-us |access-date=2020-04-17 |archive-date=2020-07-26 |archive-url=https://web.archive.org/web/20200726013841/https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ee490605(v=winembedded.60) |url-status=live }}
- The lack of a journal, so that less data is written. (Although FAT32 also lacks a journal.)
The first feature requires support from the formatting software. Compliant implementations will follow existing offsets. The OEM parameter may be ignored. Implementations may also use TRIM to reduce wear.
Other implementations
= Legal status =
exFAT was a proprietary file system until 2019, when Microsoft released the specification and allowed Open Invention Network (OIN) members to use their patents.{{cite web |last1=Larabel |first1=Michael |title=Microsoft Publishes exFAT Specification, Encourages Linux Support |url=https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-exFAT-Specification |website=Phoronix |access-date=28 August 2019 |date=28 August 2019 |archive-date=3 September 2019 |archive-url=https://web.archive.org/web/20190903055041/https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-exFAT-Specification |url-status=live }} This lack of documentation along with the threat of a patent infringement lawsuit, as happened previously when Microsoft sued various companies over the VFAT long file name patent (before it expired), hampered the development of free and open-source drivers for exFAT, and led to a situation where Linux distributions could not even tell users how to get an exFAT driver. Accordingly, exFAT official support was effectively limited to Microsoft's own products and those of Microsoft's licensees. This, in turn, inhibited exFAT's adoption as a universal exchange format, as it was safer and easier for vendors to rely on FAT32 than it was to pay Microsoft or risk being sued.
Interoperability requires that certain results be achieved in a particular, predefined way (an algorithm). For exFAT, this potentially requires every implementation to perform certain procedures in exactly the same way as Microsoft's implementation. Some of the procedures used by Microsoft's implementation are patented, and these patents are owned by Microsoft. A license to use these algorithms can be purchased from Microsoft,{{citation |last=Protalinski |first=Emil |title=Microsoft licenses out exFAT file system |journal=ArsTechnica |date=December 10, 2009 |url=https://arstechnica.com/information-technology/2009/12/microsoft-licenses-out-exfat-file-system/ |access-date=November 18, 2017 |archive-date=July 8, 2017 |archive-url=https://web.archive.org/web/20170708115438/https://arstechnica.com/information-technology/2009/12/microsoft-licenses-out-exfat-file-system/ |url-status=live}}. and some companies{{snd}} including Apple, Google and Samsung{{snd}} have done so. However, in the open-source ecosystem, users have typically responded to vendors being unwilling to pay for patent licenses by procuring an implementation for themselves from unofficial sources. For example, this is what happened with LAME when MP3 patents were still valid. (Alternatively, the user may decide that the feature is unimportant to them.)
Regardless of whether open-source or not, Microsoft stated that "a license is required in order to implement exFAT and use it in a product or device". Unlicensed distribution of an exFAT driver would make the distributor liable for financial damages if the driver is found to have violated Microsoft's patents.{{citation|last=Corbet|first=Jonathan|date=July 24, 2013|title=The exfiltrated exFAT driver|series=LWN|url=https://lwn.net/Articles/560424/|access-date=November 25, 2013|archive-date=December 2, 2013|archive-url=https://web.archive.org/web/20131202222012/https://lwn.net/Articles/560424/|url-status=live}}.{{citation|last1=Finley|first1=Klint|last2=McMillan|first2=Robert|date=July 25, 2013|title=Free Software Robin Hood Liberates Leaked Samsung Code|journal=Wired Magazine|url=https://www.wired.com/2013/07/samsung-code/|access-date=November 18, 2017|archive-date=June 28, 2018|archive-url=https://web.archive.org/web/20180628080450/https://www.wired.com/2013/07/samsung-code/|url-status=live}}. While the patents may not be enforceable, this can only be determined through a legal process, which is expensive and time-consuming. It may also be possible to achieve the intended results without infringing Microsoft's patents.{{citation|last=Else|first=Sylvia|title=exFat patent avoidance|series=Linux.com kernel development forums|date=November 19, 2016|url=https://www.linux.com/forums/kernel-development/exfat-patent-avoidance|access-date=November 18, 2017|archive-date=December 1, 2017|archive-url=https://web.archive.org/web/20171201030451/https://www.linux.com/forums/kernel-development/exfat-patent-avoidance|url-status=live}}. In October 2018, Microsoft released 60,000 patents to the OIN members for Linux systems, but exFAT patents were not initially included at the time. There was, however, discussion within Microsoft over whether Microsoft should allow exFAT in Linux devices,{{Cite web|url=https://www.zdnet.com/article/what-does-microsoft-joining-the-open-invention-network-mean-for-you/|title=What does Microsoft joining the Open Invention Network mean for you?|last=Vaughan-Nichols|first=Steven J.|website=ZDNet|access-date=2018-12-29|archive-date=2019-02-07|archive-url=https://web.archive.org/web/20190207075332/https://www.zdnet.com/article/what-does-microsoft-joining-the-open-invention-network-mean-for-you/|url-status=live}}{{Cite web|last1=Larabel|first1=Michael|url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-exFAT-2019-Discussion|title=Merging exFAT Support For Linux Is Being Talked About - Waiting On Microsoft's Blessing - Phoronix|website=www.phoronix.com|access-date=2019-08-08|date=July 10, 2019|archive-date=2019-08-08|archive-url=https://web.archive.org/web/20190808191418/https://www.phoronix.com/scan.php?page=news_item&px=Linux-exFAT-2019-Discussion|url-status=live}} which eventually resulted in Microsoft publishing the official specification for open usage and releasing the exFAT patents to the OIN in August 2019.
= List of implementations =
A FUSE-based implementation named fuse-exfat, or exfat-fuse, with read/write support is available for FreeBSD, multiple Linux distributions, and older versions of Mac OS X. It supports TRIM.{{cite web |url=https://groups.google.com/group/fa.linux.kernel/browse_thread/thread/903eb182127e8f21/e2e23eeb3a016268 |title=exFAT fs and Linux |access-date=September 28, 2009 |archive-date=September 16, 2009 |archive-url=https://web.archive.org/web/20090916012023/http://groups.google.com/group/fa.linux.kernel/browse_thread/thread/903eb182127e8f21/e2e23eeb3a016268 |url-status=live }}{{unreliable source?|date=November 2013}}{{cite web |url=https://github.com/relan/exfat |title=exFAT fs on FUSE |website=GitHub |access-date=May 15, 2010 |archive-date=December 31, 2015 |archive-url=https://web.archive.org/web/20151231012905/https://github.com/relan/exfat |url-status=live }}{{cite web |url=http://apcmag.com/how-to-enable-exfat-in-ubuntu.htm |title=exFAT fs on linux UBUNTU |access-date=October 11, 2012 |archive-date=September 28, 2012 |archive-url=https://web.archive.org/web/20120928003426/http://apcmag.com/how-to-enable-exfat-in-ubuntu.htm |url-status=live }}{{cite web |url=http://www.freshports.org/sysutils/fusefs-exfat/ |title=exFAT in FreeBSD |access-date=April 8, 2013 |archive-date=June 15, 2013 |archive-url=https://web.archive.org/web/20130615065500/http://www.freshports.org/sysutils/fusefs-exfat/ |url-status=live }}{{cite web |url=https://github.com/daniel-toman/homebrew-exfat |title=ExFAT support for Mac OS X 10.5 Leopard and 10.4 Tiger (via Homebrew and Fuse for macOS) |website=GitHub |access-date=July 6, 2018 |archive-date=October 13, 2019 |archive-url=https://web.archive.org/web/20191013061432/https://github.com/daniel-toman/homebrew-exfat |url-status=live }} An implementation called exFATFileSystem, based on fuse-exfat, is available for AmigaOS 4.1.{{cite web | url=http://amigaworld.net/modules/news/article.php?storyid=7321 | title=Amigaworld.net | access-date=February 18, 2015 | archive-date=February 26, 2015 | archive-url=https://web.archive.org/web/20150226093057/http://amigaworld.net/modules/news/article.php?storyid=7321 | url-status=live }}
A Linux kernel implementation by Samsung Electronics is available.{{cite web | url=http://opensource.samsung.com/reception/receptionSub.do?method=sub&sub=F&searchValue=exfat | title=Open Source Release Center | publisher=Samsung | access-date=November 25, 2013 | archive-date=December 2, 2013 | archive-url=https://web.archive.org/web/20131202224439/http://opensource.samsung.com/reception/receptionSub.do?method=sub&sub=F&searchValue=exfat | url-status=live }} It was initially released on GitHub unintentionally,{{cite web | url=https://lwn.net/Articles/560424/ | title=The exfiltrated exFAT driver | publisher=LWN.net | date=July 24, 2013 | access-date=November 25, 2013 | author=Corbet, Jonathan | author-link=Jonathan Corbet | archive-date=December 2, 2013 | archive-url=https://web.archive.org/web/20131202222012/https://lwn.net/Articles/560424/ | url-status=live }} and later released officially by Samsung in compliance with the GPLv2 in 2013.{{cite web | url=http://sfconservancy.org/news/2013/aug/16/exfat-samsung/ | title=Conservancy Helps Samsung Resolve GPL Compliance Matter Amicably | publisher=Software Freedom Conservancy | date=August 16, 2013 | access-date=November 25, 2013 | archive-date=November 20, 2013 | archive-url=https://web.archive.org/web/20131120031442/http://sfconservancy.org/news/2013/aug/16/exfat-samsung/ | url-status=live }} (This release does not make exFAT royalty-free, as licensing from Samsung does not remove Microsoft's patent rights.){{citation|last=Corbet|first=Jonathan|date=August 16, 2013|title=Samsung releases exFAT filesystem source|series=LWN|url=https://lwn.net/Articles/563687/|access-date=November 18, 2017|archive-date=July 31, 2017|archive-url=https://web.archive.org/web/20170731151644/https://lwn.net/Articles/563687/|url-status=live}}.{{citation|last=McMillan|first=Robert|date=August 20, 2013|title=Busted for Dodging Linux License, Samsung Makes Nice With Free Code|website=Wired.com|url=https://www.wired.com/2013/08/samsung-exfat/|access-date=November 18, 2017|archive-date=September 6, 2020|archive-url=https://web.archive.org/web/20200906183847/https://www.wired.com/2013/08/samsung-exfat/|url-status=live}}. A version of this driver was first incorporated into version 5.4 of the Linux kernel.{{cite web | last1=Larabel | first1=Michael | url=https://www.phoronix.com/scan.php?page=article&item=linux-54-features&num=1 | title=Linux 5.4 Features Are Huge From exFAT To New GPUs To Enabling Lots Of New Hardware | website=Phoronix | access-date=March 11, 2021 | date=September 29, 2019 | archive-date=April 10, 2021 | archive-url=https://web.archive.org/web/20210410144342/https://www.phoronix.com/scan.php?page=article&item=linux-54-features&num=1 | url-status=live }}{{cite web | last1=Larabel | first1=Michael | url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.4-Feature-Reminder | title=The Exciting Linux 5.4 Changes From exFAT Support To Intel Tiger Lake Graphics | website=Phoronix | access-date=March 11, 2021 | date=November 17, 2019 | archive-date=March 4, 2021 | archive-url=https://web.archive.org/web/20210304064244/https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.4-Feature-Reminder | url-status=live }}{{cite web | last1=Larabel | first1=Michael | url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.4-Released | title=Linux 5.4 Kernel Released With exFAT Support, Faster Radeon Graphics, New Hardware | website=Phoronix | access-date=March 11, 2021 | date=November 24, 2019 | archive-date=March 9, 2021 | archive-url=https://web.archive.org/web/20210309020513/https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.4-Released | url-status=live }} A much newer version of the driver, with several bug fixes and improved reliability, was incorporated into kernel 5.7.{{cite web | last1=Larabel | first1=Michael | url=https://www.phoronix.com/scan.php?page=news_item&px=Samsung-Better-exFAT-v11 | title=Samsung's Better exFAT Driver Gets Revised Ahead Of Mainline Linux Integration | website=Phoronix | access-date=March 11, 2021 | date=January 20, 2020 | archive-date=May 16, 2021 | archive-url=https://web.archive.org/web/20210516191439/https://www.phoronix.com/scan.php?page=news_item&px=Samsung-Better-exFAT-v11 | url-status=live }} Prior to its being merged into the Linux kernel, this newer version had already seen adoption on Android smartphones and continued to be used on both Linux and Android thereafter.{{cite web | last1=Larabel | first1=Michael | url=https://www.phoronix.com/scan.php?page=news_item&px=exFAT-Newer-Option-v8 | title=Linux's exFAT Driver Looking To Still Be Replaced By A Newer Driver From Samsung | website=Phoronix | access-date=March 11, 2021 | date=December 30, 2019 | archive-date=March 5, 2021 | archive-url=https://web.archive.org/web/20210305143208/https://www.phoronix.com/scan.php?page=news_item&px=exFAT-Newer-Option-v8 | url-status=live }}{{cite web | last1=Larabel | first1=Michael | url=https://www.phoronix.com/scan.php?page=news_item&px=New-exFAT-For-Linux-5.7 | title=The New Microsoft exFAT File-System Driver Is Set To Land With Linux 5.7 | website=Phoronix | access-date=March 11, 2021 | date=March 7, 2020 | archive-date=April 23, 2021 | archive-url=https://web.archive.org/web/20210423101648/https://www.phoronix.com/scan.php?page=news_item&px=New-exFAT-For-Linux-5.7 | url-status=live }}
Proprietary read/write solutions licensed and derived from the Microsoft exFAT implementation are available for Android, Linux, and other operating systems from Paragon Software Group and Tuxera.
XCFiles (from Datalight) is a proprietary, full-featured implementation, intended to be portable to 32-bit systems.{{cite web | url=http://www.datalight.com/products/filesystems/xcfiles | title=XCFiles | access-date=June 21, 2010 | archive-date=July 30, 2010 | archive-url=https://web.archive.org/web/20100730023249/http://www.datalight.com/products/filesystems/xcfiles | url-status=dead }} Rtfs (from EBS Embedded Software) is a full-featured implementation for embedded devices.{{cite web | url=http://www.ebsembeddedsoftware.com/NewWebSite/AboutRtfs.html | title=Rtfs | access-date=January 19, 2011 | archive-date=June 12, 2011 | archive-url=https://web.archive.org/web/20110612004409/http://www.ebsembeddedsoftware.com/NewWebSite/AboutRtfs.html | url-status=live }}
Two experimental, unofficial solutions are available for DOS. The loadable USBEXFAT driver requires Panasonic's USB stack for DOS and only works with USB storage devices; the open-source EXFAT executable is an exFAT file-system reader and requires the HX DOS extender to work.{{cite web |url=http://www.mdgx.com/secrets.htm#XFAT |title=exFAT |date=February 2, 2011}} There are no native exFAT real-mode DOS drivers, which would allow usage of, or booting from, exFAT volumes.
The renaming of exFAT file system labels is natively supported by Microsoft Windows Explorer, while Linux relies on the exfatlabel
and tune.exfat
tools (both part of exfatprogs).{{man|8|exfatlabel|Linux}}
{{man|8|tune.exfat|Linux}}
See also
Notes
{{reflist|group="nb"|refs=
Although Microsoft published a different value in KB955704, the file size is in bytes and is stored as a 64-bit number. The largest theoretical file size would be 16 EB − 1 byte, the same as in NTFS. However, since the maximum volume size under the current specification cannot exceed ~128 PB, a file can never reach that file length.
The theoretical maximum volume size is defined by up to 2{{sup|32}} − 11 possible clusters with up to 2{{sup|25}} bytes per cluster ≈ 128 PB. The cluster count is limited to 32-bit integers. The cluster size is not limited by data type; it's probably set in consideration of the LBA48 addressing scheme, as with a 512-byte sector size, only 2{{sup|48}} × 512 = 2{{sup|57}} bytes = 128 PB can be addressed.
This limit applies because the maximum directory size is 256 MB.
}}
References
{{reflist|30em|refs=
{{cite web|url=https://github.com/relan/exfat|title=exfat -Free exFAT file system implementation|website=GitHub|access-date=October 14, 2015|archive-date=December 31, 2015|archive-url=https://web.archive.org/web/20151231012905/https://github.com/relan/exfat|url-status=live}}
{{cite web |url=https://github.com/bkuhn/exfat |title=GPL'ed sources for the Samsung exfat module as released by Samsung |website=GitHub |access-date=2017-08-20}}
{{cite web|url=https://www.microsoft.com/en-us/legal/intellectualproperty/mtl/exfat-licensing.aspx|title=Licensing exFAT|website=Microsoft|access-date=March 1, 2017|archive-date=March 2, 2017|archive-url=https://web.archive.org/web/20170302032622/https://www.microsoft.com/en-us/legal/intellectualproperty/mtl/exfat-licensing.aspx|url-status=live}}
{{Cite news |url=https://www.theregister.co.uk/2012/08/08/microsoft_samsung_exfat/ |title=Sharp cuts exFAT deal with Microsoft for Android mobes |first=Gavin |last=Clarke |work=The Register |date=August 8, 2012 |access-date=August 12, 2012 |archive-date=August 11, 2012 |archive-url=https://web.archive.org/web/20120811064325/http://www.theregister.co.uk/2012/08/08/microsoft_samsung_exfat/ |url-status=live }}
}}
External links
- [https://docs.microsoft.com/en-gb/windows/win32/fileio/exfat-specification exFAT specification]
- [https://docs.microsoft.com/en-gb/windows/win32/fileio/filesystem-functionality-comparison File System Functionality Comparison of exFAT, FAT32, NTFS, UDF]
- [http://msdn2.microsoft.com/en-us/library/aa914353.aspx exFAT overview in Windows Embedded CE]
- [http://msdn.microsoft.com/en-us/library/aa915463.aspx Transaction-Safe FAT File System (TexFAT) overview in Windows Mobile 6.5]
- [http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/STO072_WH06.ppt Personal Storage : Opportunities and challenges for pocket-sized storage devices in the Windows world] (PowerPoint presentation at WinHEC 2006)
- [https://web.archive.org/web/20101221232444/http://www.microsoft.com/about/legal/en/us/IntellectualProperty/IPLicensing/Programs/exFATFileSystem.aspx exFAT File System Licensing]
- [http://www.sans.org/reading-room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system-33274 Reverse Engineering the Microsoft exFAT File System], SANS Institute.
- {{Cite patent|country=US|number=2009164440|status=application}}, "Quick Filename Lookup Using Name Hash"; Microsoft Corp; contains exFAT specification revision 1.00.
- {{Cite patent|country=US|number=2009164539|status=application}}, "Contiguous File Allocation In An Extensible File System"; Microsoft Corp.
- [https://web.archive.org/web/20110120184126/http://www.sdcard.org/developers/tech/sdxc exFAT ships on all SDXC Cards], SD Card Association
- [https://events.static.linuxfound.org/images/stories/pdf/lceu11_munegowda_s.pdf The Extended FAT file system:Differentiating with FAT32 file system], Linux Conference, October 2011.
- [http://infinityonloop.com/ntfs-vs-exfat-vs-fat32/ Benefits of exFAT over FAT32]
{{File systems}}
{{Windows Components}}
{{DEFAULTSORT:exFAT}}
Category:Windows disk file systems
Category:File systems supported by the Linux kernel