答案1
迟到总比不到好 :)
快速回答是:“2,147,479,552 字节,如果内核版本是 3.14 或更新版本”
详细答案:
据我了解,它是关于写入系统调用的:
http://man7.org/linux/man-pages/man2/write.2.html
1)任何 POSIX 系统(linux、bsd、所有 unix)都保证能够写入最多 MAX_SSIZE 字节
根据 POSIX.1,如果 count 大于 SSIZE_MAX,则结果由实现定义;有关 Linux 上的上限,请参阅 NOTES。
# getconf SSIZE_MAX
32767
2)Linux 保证能够写入最多 1.99 GiB(对于 Linux 内核版本 3.14 及更新版本,这是原子操作)
在 Linux 上,write()(和类似的系统调用)最多传输 0x7ffff000(2,147,479,552)个字节,并返回实际传输的字节数。(这在 32 位和 64 位系统上都是如此。)
但从 Linux 内核 3.14 开始,它才是公平的原子操作
根据 POSIX.1-2008/SUSv4 第 XSI 2.9.7 节(“线程与常规文件操作的交互”):
当以下所有函数对常规文件或符号链接进行操作时,它们在 POSIX.1-2008 中指定的效果中应彼此具有原子性:...
随后列出的 API 包括 write() 和 writev(2)。在线程(和进程)之间应具有原子性的效果包括文件偏移量的更新。然而,在 Linux 3.14 之前的版本中,情况并非如此:如果两个共享打开文件描述的进程(参见 open(2))同时执行 write()(或 writev(2)),则 I/O 操作在更新文件偏移量方面不是原子性的,结果两个进程输出的数据块可能会(错误地)重叠。此问题已在 Linux 3.14 中得到修复。
答案2
这超级用户的答案对原子写入大小有一个很好的定义。
这至少与硬件扇区的大小(即原子读/写大小)一样大。