我正在阅读有关 Linux 中的文件系统的信息这里。这句话让我有点困惑。
对于 ext3,
- 最大单个文件大小可为 16 GB 至 2 TB。
- ext3 文件系统的总体大小可以从 2 TB 到 32 TB。
那么,上面这句话是否意味着我不能拥有大小超过 2 TB 的单个文件?
如果是这样的话,我就不能拥有一个吗?mysql
大于2TB容量?这些表按照datadir
中提到的参数存储/etc/my.cnf
存储。所以假设,我有一个硬盘4TB容量和mysql
尺寸表2.5TB,桌子能装进硬盘吗?
编辑
我不关心 Barmar 的答案指定的最大文件大小。
我更关心的是找出答案mysql
如果我有一个表的大小大于 ext3 文件系统允许的最大单个文件大小,会抛出任何错误吗?
答案1
根据表大小的限制Linux 2.4+ 上使用 ext3 的表的最大大小为 4TB。
由于MyISAM将行数据存储在一个文件中,而索引存储在另一个文件中,我猜这是数据+索引的最大理论大小。由于 ext3 将文件限制为 2TB,因此行数据似乎不可能超过此值。
答案2
一般来说,您应该遵循指南这里正如@Barmar 提到的。这列出了各种操作系统施加的限制,但不一定是文件系统的限制。它甚至有一个有点误导性的“Linux 2.4+(使用 ext3 文件系统)4TB”列表。
还有一件事是非常在确定最大文件大小时,在 ext3 文件系统上需要考虑这一点。在创建大量数据库表之前检查块大小。块大小为 1k 的 ext3 分区的最大文件大小约为 16.5GB。具有 4k 块大小的相同磁盘的最大文件大小为 4TB。详细原因可以查看解释这里。如果您确实有 4k 块大小,那么 mysql 站点上的文档是完全准确的。现在大多数安装都默认使用 4k,我相信 4TB 文件系统对于 1k 块大小来说太大了,但检查一下肯定没有什么坏处
答案3
是的,如果您的底层文件系统有文件大小限制,那么当您尝试添加数据直至文件已满时,您将在 MySQL 中收到错误。
然而,只需将 MySQL 表进行分区,就可以很容易地绕过文件系统文件大小限制,以便单个表将数据分布在多个 MYD 和 MYI 文件中。 http://dev.mysql.com/doc/refman/5.5/en/partitioning.html
现在您确实应该使用 ext4 而不是 ext3。 ext4 的文件大小限制为 16 TB(带标准 4k 块大小)。 https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Bigger_File_System_and_File_Sizes