AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 8427
Accepted
mdpc
mdpc
Asked: 2009-05-15 17:02:54 +0800 CST2009-05-15 17:02:54 +0800 CST 2009-05-15 17:02:54 +0800 CST

/tmp 的 Linux/UNIX 服务器设置实践

  • 772

根据大家所看到的,在服务器系统上推荐的 /tmp 配置是什么以及为什么。多年来,我曾就这些问题进行过讨论,有时存在基本分歧。

以下基本上是我看到的问题。有些人可能会建议用几个问题来询问这些问题,但是,我认为如果将这些信息放在一个标题下,管理员可能会更容易。我相信这将是有益的。

专门针对 /tmp:

  1. 应该 ln -s /var/tmp /tmp 吗?

  2. /tmp 是否应该在重新启动之间保留?

  3. /tmp 应该在真正的磁盘区域上还是允许基本上在 SWAP 区域(或 tmpfs)上实现?

  4. /tmp 是否应该与 /(根)磁盘位于不同的磁盘上?

  5. 您会将 /tmp 放在与 /(根)磁盘不同的磁盘控制器上吗?

  6. /tmp 大小的任何经验法则?

  7. 系统启动时如何管理 /tmp 空间?删除所有文件>特定年龄?不理会区域,直到它达到最大值的百分比?

  8. 是否应该实施任何程序性项目来管理这一领域?

linux unix filesystems configuration
  • 6 6 个回答
  • 4562 Views

6 个回答

  • Voted
  1. Best Answer
    Avery Payne
    2009-05-15T17:37:32+08:002009-05-15T17:37:32+08:00

    专门针对 /tmp:

    • 应该 ln -s /var/tmp /tmp 吗?

    对于完整的内存磁盘映像(想想“实时启动 CD”),这可能是可以接受的,因为需要压缩 RAM 的每个字节。否则,除非您迫切需要磁盘空间,否则不会。/var 有其自身的特点,在执行系统维护时,将 /tmp 与 /var/tmp 混合可能会产生意想不到的后果。它还添加了一个额外的依赖项,即必须安装 /tmp 才能使 /var/tmp 正常运行;不是所有的东西都需要/tmp,你可能会想把它迁移到不同的分区或驱动器,但不能,因为你不想卸载/var。

    • /tmp 是否应该在重新启动之间保留?

    不会。如果您将此作为一致的行为,那么您迟早会遇到问题。

    • /tmp 应该在真正的磁盘区域上还是允许基本上在 SWAP 区域(或 tmpfs)上实现?

    当它被大量使用时,这是一种诱惑——“我们将 /tmp 放入 RAM 磁盘,它会加快访问速度,并且当系统重新启动/关闭时,没有什么可清理的”。但是,如果您正在考虑将临时空间实现为将被交换的 RAM 磁盘,那么我会考虑其他程序对系统交换空间使用的影响。如果交换作为“紧急溢出”的一种形式存在,当系统处于紧急状态并需要它时,您最不需要的就是让一个失控的进程占用交换空间,填充 /tmp,消耗内存,从而对要交换到磁盘的 VM 子系统。在交换活动和流入 RAM 磁盘的额外 I/O 之间(这反过来可能导致额外的页面输入来满足 seek() )您的系统将很快成为 I/O 绑定。

    • /tmp 是否应该与 /(根)磁盘位于不同的磁盘上?

    最好是,是的,尽管这不是必需的。如果您大量使用它,或者需要它的持续工作量,那么肯定是的。假设示例:将临时文件转储到 /tmp 的数据库将通过将 /tmp 引入单独的主轴(即驱动器)而获得轻微的加速。

    • 您会将 /tmp 放在与 /(根)磁盘不同的磁盘控制器上吗?

    如果您对可恢复性或速度有要求,则应予以考虑。

    • /tmp 大小的任何经验法则?

    它应该可以容纳 2 倍的预期工作量。我的意思是,如果你有本地用户经常使用这个空间,迟早会有人做一些愚蠢的事情并试图填满它。稍微超额将允许您避免程序停止的奇怪“问题”,因为它们的临时文件已填满剩余空间。

    如果这是一个“公共服务”安装,服务器提供一个或多个网络服务,但不托管用户,那么这可能会偏低。如果这是一个多用户安装,这将是偏高的(是的,仍然有托管实际用户的地方,而不仅仅是他们的网络服务)。

    • 系统启动时如何管理 /tmp 空间?删除所有文件>特定年龄?不理会区域,直到它达到最大值的百分比?

    查看tmpwatch命令,我想您会发现它非常适合您问题的这一部分。该命令仅以小时为单位删除超过特定年龄的任何文件。根据填满的速度,你可以做 30 天、45 天、90 天等。

    • 是否应该实施任何程序性项目来管理这一领域?

    我会推荐以下内容:

    1. 所有文件都是暂时的,并且不能保证在重新启动后仍然存在。
    2. 超过 %age 的陈旧文件将在当地时间每晚午夜通过运行 tmpwatch 命令的 cron 作业删除。

    其余的取决于您的具体需求。

    • 15
  2. Tim Howland
    2009-05-15T17:10:45+08:002009-05-15T17:10:45+08:00

    很大程度上取决于您使用的特定应用程序负载。一些应用程序服务器(SunONE,旧​​的 netscape 的东西)将几百到几千个文件写入 /tmp - 在那种情况下,你真的不希望它成为一个挂载的 ramdisk,并且没有理由在重新启动之间保留它。

    服务器的通用性和特殊用途越来越少 - 这种类型的问题(以及类似的“我如何分区我的系统”问题)实际上取决于您的负载。

    我最近确实有一台服务器在 4 年左右后第一次重新启动 - 它在引导过程中卡住了,删除了 /tmp 中的所有文件 - 那里有很多杂物,需要花费一个小时来清理它. 如果您的盒子不经常重新启动,那么定期清洁它绝对是个好主意。

    • 1
  3. David Harrison
    2009-05-15T18:56:01+08:002009-05-15T18:56:01+08:00

    根据经验,我建议不要混合您的 /var/tmp 和 /tmp 目录。

    /var 的原因是(希望)您的所有日志、缓存和服务数据(例如数据库)都将驻留。将 /var 放在单独的分区上通常是一个好主意,因此如果发生重要的数据事件(例如大量日志记录或数据库写入),您的根分区和 /tmp 分区仍然有可用空间来可靠地运行。

    例如,我刚刚从一个没有遵循这种做法的站点返回(即所有内容都在一个分区上),并且由于日志的建立,整个系统都陷入了困境。如果遵循合理的分区布局,/var 分区将耗尽空间,但服务器将保持响应。

    • 1
  4. user448
    2009-05-15T17:13:10+08:002009-05-15T17:13:10+08:00

    只回答几点...

    我会将 /tmp 放在与 / 不同的分区上,这样我就可以在正常操作期间挂载 /ro。独立磁盘?这取决于 /tmp 和 /get 的使用量以及它们是否相互妨碍。

    至于第 1 部分和第 2 部分,在我的盒子 (Mac OS X) 上,/var/tmp 不会每天清理,但 /tmp 会,因此它们具有不同的策略,因此不应将它们符号链接在一起。我不确定每天清理 /var/tmp 不会破坏任何东西,并且想在变得更加喧嚣之前进行调查 - 目前只有 172k。

    • 0
  5. Mei
    2009-06-06T06:42:37+08:002009-06-06T06:42:37+08:00

    关于你的最后一个问题,我会考虑的一个项目是使 /tmp noexec,nosuid - 也就是说,没有可执行文件能够从 /tmp 运行,并且没有 suid 二进制文件能够切换用户 ID。但是,这可能会影响某些程序,因此请在完全依赖它之前对其进行测试——我认为 ssh 甚至是其中之一,但我忘记了。

    这是一项安全措施,可以提高您在 /tmp 方面的安全性。

    另一件事:很多用户会尝试使用 /tmp 作为永久临时存储:任何强制清理 /tmp 都必须与用户教育一起完成:提醒他们 /tmp 是临时的,任何放置在那里的东西都可能消失时间。

    • 0
  6. pgs
    2009-06-06T08:38:17+08:002009-06-06T08:38:17+08:00

    /tmp 应该在真正的磁盘区域上还是允许基本上在 SWAP 区域(或 tmpfs)上实现?

    您是否考虑过在这种情况下 /tmp 填满时会发生什么?这不是你做两次的那种事情。我已经完成了一次(在 Solaris 上 /tmp 将耗尽所有可用的 RAM 和交换),它使服务器陷入瘫痪。

    • 0

相关问题

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve