当您登录时,/var/log/lastlog会被写入。此文件的大小基于系统中最大的UID。最大UID越大,这个文件就越大。幸运的是,它是一个稀疏文件,因此磁盘上的大小比大小ls报告小得多(ls -s报告磁盘上的大小)。
在我们的系统中,我们是针对Active服务器进行身份验证的,UID用户被分配的最终结果是非常非常大。比如说,给第一个AD用户提供900,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000个,等等。
这很奇怪但应该没问题。不过,这会导致/var/log/lastlog成为huuuuuge -一旦lastlog中的AD用户日志显示为280 as。谢天谢地,它的实际规模仍然很小。
当/var/log/lastlog存储在ext3文件系统上的硬盘上时,这很好。但是,如果lastlog存储在tmpfs文件系统中,则会中断。然后,tmpfs上的任何文件的最大文件大小似乎是256 to,因此sessreg程序在试图写入lastlog时出错。
作为创建大型稀疏文件的简单测试,我一直在做以下工作:
dd if=/dev/zero of=sparse-file bs=1 count=1 seek=300GB我尝试过搜索"tmpfs最大文件大小“、”256 for文件系统限制“、"linux文件大小”之类的内容。我没能找到多少。我唯一能找到的256 to文件系统是,具有2KB块的ext3文件系统仅限于256 to文件。但是我们的硬盘是用4K块格式化的,所以似乎不是这样的--更不用说,这发生在安装在硬盘上的tmpfs上,所以ext3分区不应该成为一个因素。
这一切都发生在64位红帽企业Linux 5.4系统上.有趣的是,在我的个人开发机器(32位Fedora 6盒)上,我可以在tmpfs文件系统中创建300GB+文件。在RHEL5.4 5.4系统上,这是不可能的。
发布于 2010-05-01 03:40:05
答案可以在Linux源代码中找到,特别是/usr/src/linux/mm/shmem.c,从我的系统上的第70行开始(Gentoo 2.6.31-ish):
/*
* 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.2TB中的八分之一就是256 GB.32位内核可以有更大的大小,正如您在32位FC6测试系统中所发现的那样。
看起来,将页面大小可能是相关的更改为启用内核中的HugeTLB文件系统支持。但是,对于内核的内核,我还不太清楚,无法说明如何、为什么、需要采取哪些步骤来利用它,也不知道它可能会产生什么其他影响。要启用它,运行make menuconfig,导航到文件系统,然后是伪文件系统。所讨论的选项是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也有必要运行这个程序。我希望这能帮到你。
发布于 2010-04-30 22:19:58
一个建议..。您能否在tmpfs中创建一个ext3映像并将其挂载,并将lastlog放入其中?类似于:
cd /tmp
dd if=/dev/zero of=lastlog.img bs=1024k count=10
losetup /dev/loop1 lastlog.img
mkfs.ext3 /dev/loop1
mount /dev/loop1 /var/lastloghttps://serverfault.com/questions/137544
复制相似问题