bring this FAQ entry into this millenia, we've defaulted to UFS2 for

around 10 years now, and the entry talked about old UFS1 limits...
it also talked about old defaults for black and fragment sizes too...

With the current defaults, full fsck memory requirements are 32MB/TB

Reviewed by:	mckusick, -doc
This commit is contained in:
John-Mark Gurney 2013-11-24 22:44:32 +00:00
parent 49f33a1ed8
commit b90f9f8bc9
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=43236

View file

@ -1338,92 +1338,25 @@
</question>
<answer>
<para>For FFS file systems, the maximum theoretical limit is
8&nbsp;TB (2&nbsp;G blocks), or 16&nbsp;TB for the default
block size of 8&nbsp;KB. In practice, there is a soft limit
of 1&nbsp;TB, but with modifications file systems with
4&nbsp;TB are possible (and exist).</para>
<para>For FFS file systems, the largest file system is practically
limited by the amount of memory required to &man.fsck.8 the file
system. &man.fsck.8 requires one bit per fragment, which with
the default fragment size of 4&nbps;KB equates to 32&nbps;MB
of memory per TB of disk. This does mean that on architectures
which limit userland processes to 2&nbps;GB (e.g., &i386;),
the maximum &man.fsck.8'able filesystem is ~60&nbps;TB.</para>
<para>If there was not a &man.fsck.8 memory limit the maximum
filesystem size would be 2&nbps;^&nbps;64 (blocks) * 32&nbps;KB
=> 16 Exa * 32&nbps;KB => 512 ZettaBytes.</para>
<para>The maximum size of a single FFS file is approximately
1&nbsp;G blocks, or 4&nbsp;TB with a block size of
4&nbsp;KB.</para>
<table>
<title>Maximum File Sizes</title>
<tgroup cols="3">
<thead>
<row>
<entry>FS Block Size</entry>
<entry>Works</entry>
<entry>Should Work</entry>
</row>
</thead>
<tbody>
<row>
<entry>4&nbsp;KB</entry>
<entry>&gt;&nbsp;4&nbsp;GB</entry>
<entry>4&nbsp;TB&nbsp;-&nbsp;1</entry>
</row>
<row>
<entry>8&nbsp;KB</entry>
<entry>&gt;&nbsp;32&nbsp;GB</entry>
<entry>32&nbsp;TB&nbsp;-&nbsp;1</entry>
</row>
<row>
<entry>16&nbsp;KB</entry>
<entry>&gt;&nbsp;128&nbsp;GB</entry>
<entry>32&nbsp;TB&nbsp;-&nbsp;1</entry>
</row>
<row>
<entry>32&nbsp;KB</entry>
<entry>&gt;&nbsp;512&nbsp;GB</entry>
<entry>64&nbsp;TB&nbsp;-&nbsp;1</entry>
</row>
<row>
<entry>64&nbsp;KB</entry>
<entry>&gt;&nbsp;2048&nbsp;GB</entry>
<entry>128&nbsp;TB&nbsp;-&nbsp;1</entry>
</row>
</tbody>
</tgroup>
</table>
<para>When the FS block size is 4&nbsp;KB, triple indirect
blocks work and everything should be limited by the maximum FS
block number that can be represented using triple indirect
blocks (approx.
1024<superscript>3</superscript>&nbsp;+&nbsp;1024<superscript>2</superscript>&nbsp;+&nbsp;1024),
but everything is limited by a (wrong) limit of
1&nbsp;G&nbsp;-&nbsp;1 on FS block numbers. The limit on FS
block numbers should be 2&nbsp;G&nbsp;-&nbsp;1. There are
some bugs for FS block numbers near 2&nbsp;G&nbsp;-&nbsp;1,
but such block numbers are unreachable when the FS block
size is 4&nbsp;KB.</para>
<para>For block sizes of 8&nbsp;KB and larger, everything
should be limited by the 2&nbsp;G&nbsp;-&nbsp;1 limit on FS
block numbers, but is actually limited by the
1&nbsp;G&nbsp;-&nbsp;1 limit on FS block numbers. Using the
correct limit of 2&nbsp;G&nbsp;-&nbsp;1 blocks does cause
problems.</para>
2&nbsp;PB with the default block size of 32&nbsp;KB. Each
32&nbsp;KB block can point to 4096 blocks. With triple
indirect blocks, the calculation is 32&nbps;KB * 12 +
32&nbps;KB * 4096 + 32&nbps;KB * 4096^2 + 32&nbps;KB *
4096^3. Increasing the block size to 64&nbsp;KB will increase
the max file size by a factor of 16.</para>
</answer>
</qandaentry>