/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
Run Code Online (Sandbox Code Playgroud)
我试过谷歌搜索“tmpfs 最大文件大小”、“256GB 文件系统限制”、“linux 最大文件大小”,诸如此类。我一直没能找到多少。我能找到的唯一提到的 256GB 是具有 2KB 块的 ext3 文件系统仅限于 256GB 文件。但是我们的硬盘驱动器是用 4K 块格式化的,所以似乎不是这样——更不用说这发生在安装在硬盘驱动器顶部的 tmpfs 中,因此 ext3 分区不应该是一个因素。
这一切都发生在 64 …
我有一个在 tmpfs 上带有 / 的系统。大多数 / 子目录都挂载了 aufs,覆盖读写根文件系统和只读基本文件系统(系统从只读介质启动)。早些时候,我曾经使用 unionfs 而不是 aufs。它一直正常工作,直到最近 tmpfs 开始填满。我不确定是什么触发了变化。可能是 unionfs 到 aufs 的更改、内核升级或系统中的某些更改以及它如何访问文件系统。
无论如何,似乎是 tmpfs 的行为有些错误。
虽然系统应该不会对tmpfs写很多,但是用完还是蛮多的:
# df -m /
Filesystem 1M-blocks Used Available Use% Mounted on
tmpfs 200 50 151 25% /
Run Code Online (Sandbox Code Playgroud)
尽管:
# du -smx /
2 /
Run Code Online (Sandbox Code Playgroud)
这是我的测试系统,基本上什么都不做。当使用率迅速超过 90% 并且系统崩溃时,生产系统上的东西就会磨损。
我怀疑这些已删除的文件仍然打开,但是:
# lsof | grep deleted
Run Code Online (Sandbox Code Playgroud)
什么都不显示。
另一个想法是, / 上的某些文件被安装在其上的文件系统屏蔽,所以我尝试了这个:
# mount --bind / /mnt
# du -sm /mnt
2 /mnt
Run Code Online (Sandbox Code Playgroud)
尽管如此,仍然没有丢失 48MB 的痕迹。
我怎样才能找出是什么用完了我的 tmpfs 文件系统?
系统信息:
# uname -rm
3.4.6 …Run Code Online (Sandbox Code Playgroud) 我正在使用/run/shm/myfoldernginx 微缓存,还将ngx_pagespeed文件保存在那里。我想知道如果我从relatime到会不会有速度增加noatime?它是用于硬盘驱动器的,但tmpfs它会改变什么?
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=9929500k)
Run Code Online (Sandbox Code Playgroud) 我刚刚安装了 Debian 5 (Lenny),我注意到 /lib/init/rw 被报告为 RAM 磁盘 (tmpfs)。我只有 Fedora 的经验,所以我很好奇该目录在 Debian 中提供什么功能。用户编写的 shell 脚本是否可以使用它来缓存内容,还是禁止使用它并且仅供操作系统使用?谢谢。
我有一个电子邮件服务器,它是消息传递应用程序的一部分,它会看到很多吞吐量。我想在 RAMdisk 上挂载 Exim 的消息队列以最大化性能;吞吐速度是最重要的,而不是在崩溃或系统重启的情况下团结一致。我发现很多信息都说在 RAMdisk 上安装消息队列会有很大帮助,但没有关于如何执行此操作的真实信息。
我很确定消息队列默认在 /var/spool/exim 中,并且我可以使用 tmpfs 来挂载 RAMdisk。我将如何在启动时安装 RAMdisk,并让 Exim 的消息队列使用它?
即挂载这个 RAMdisk 的命令是什么,我应该把这个命令放在哪里,以便它在机器启动时(但在 Exim 启动之前)执行?
谢谢 :)
我想要一个 linux 上的 ramdisk。
有 ramfs 和 tmpfs。
Tmpfs 是我想要的,因为它就像一个磁盘(大小限制等)。但是,它使用交换,这意味着如果磁盘已满,它可能会接触磁盘。
如果我没有打开交换,它还能工作吗?
我根本不希望该安装接触磁盘。
我想使用 XEN 服务器为我的其中一个虚拟机创建一个tmpfs文件系统。
在主机上我试过这个,但不起作用,。
xe sr-create device-config:device=/dev/shm name-label="RAM" type=tmpfs
是否可以使用 xe 命令创建tmpfs文件系统并使虚拟机在其上运行而不是在 HDD 上运行。该虚拟机不应因等待磁盘而减慢速度(这是必需的)。这可以使用 XEN 服务器来实现吗?有更好的方法吗?该主机只有一个 HDD,无法增加额外的存储空间。
我有一个 64 GB 的 SSD 交换。那么有没有办法让 /tmp 挂载为 tmpfs 以单独使用交换而不使用 RAM?