Linux

RHEL5:無法在 tmpfs 中創建大於 256GB 的稀疏文件

  • May 1, 2010

/var/log/lastlog登錄時寫入。此文件的大小基於系統中最大的 UID。最大 UID 越大,這個文件就越大。值得慶幸的是,它是一個稀疏文件,因此磁碟上的大小遠小於大小ls報告(ls -s報告磁碟上的大小)。

在我們的系統上,我們針對 Active Directory 伺服器進行身份驗證,並且最終分配給使用者的 UID 非常非常大。比如,第一個 AD 使用者的 UID 900,000,000,第二個使用者的 UID 900,000,001,等等。

這很奇怪,但應該沒問題。但是,它會導致/var/log/lastloghuuuuuge——一旦 AD 使用者登錄,lastlog就會顯示為 280GB。謝天謝地,它的實際尺寸仍然很小。

/var/log/lastlog當儲存在 ext3 文件系統的硬碟驅動器上時,這可以正常工作。但是,如果lastlog儲存在 tmpfs 文件系統中,它就會中斷。然後似乎 tmpfs 上任何文件的最大文件大小為 256GB,因此sessreg程序在嘗試寫入lastlog.

這個 256GB 的限制來自哪裡,我該如何增加它?

作為創建大型稀疏文件的簡單測試,我一直在做:

dd if=/dev/zero of=sparse-file bs=1 count=1 seek=300GB

我試過用Google搜尋“tmpfs 最大文件大小”、“256GB 文件系統限制”、“linux 最大文件大小”之類的東西。我找不到太多東西。我能找到的唯一提到的 256GB 是具有 2KB 塊的 ext3 文件系統僅限於 256GB 文件。但是我們的硬碟驅動器是用 4K 塊格式化的,所以這似乎不是 - 更不用說這發生在安裝在硬碟驅動器頂部的 tmpfs 中,因此 ext3 分區不應該是一個因素。

這一切都發生在 64 位 Red Hat Enterprise Linux 5.4 系統上。有趣的是,在我的個人開發機器上,它是一個 32 位的 Fedora Core 6 機器,我可以在 tmpfs 文件系統中創建 300GB+ 的文件沒有問題。在 RHEL5.4 系統上是不行的。

答案可以在 Linux 原始碼中找到,特別是/usr/src/linux/mm/shmem.c,從我的系統(Gentoo 2.6.31-ish)的第 70 行開始:

/*
* The maximum size of a shmem/tmpfs file is limited by the maximum size of
* its triple-indirect swap vector - see illustration at shmem_swp_entry().
*
* With 4kB page size, maximum file size is just over 2TB on a 32-bit kernel,
* but one eighth of that on a 64-bit kernel.  With 8kB page size, maximum
* file size is just over 4TB on a 64-bit kernel, but 16TB on a 32-bit kernel,
* MAX_LFS_FILESIZE being then more restrictive than swap vector layout.

2 TB 的八分之一正好是 256 GB。正如您在 32 位 FC6 測試系統中發現的那樣,使用 32 位核心可以實現更大的大小。

似乎更改頁面大小可能與在核心中啟用HugeTLB 文件系統支持有關。但是,我對核心的內容了解不多,無法說明如何或為什麼,或者您需要採取哪些步驟來利用它,或者它可能具有什麼其他含義。要啟用它,執行make menuconfig,導航到File systems,然後是Pseudo filesystems。有問題的選項是HugeTLB 文件系統支持。它的線上幫助說:

CONFIG_HUGETLBFS:

hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read
<file:Documentation/vm/hugetlbpage.txt> for details.

If unsure, say N.

StackOverflow 也可能值得執行它。我希望這有幫助。

引用自:https://serverfault.com/questions/137544