tmpfs
vs. /tmp
vs. ramfs
文件系统 | 是否使用 RAM | 是否能交换到 Swap | 数据持久化 | 主要用途 |
---|---|---|---|---|
tmpfs | ✅ 是 | ✅ 是 | ❌ 否 | 临时存储,高速缓存 |
/tmp | ⭕ 可能是 | ⭕ 可能是 | ❌ 否 | 系统临时文件 |
ramfs | ✅ 是 | ❌ 否 | ❌ 否 | 纯内存存储,更快但无上限 |
tmpfs
是 基于 RAM 的临时文件系统,适用于高频读写的数据(如缓存、临时文件)。tmpfs
目录 重启后数据会丢失,但速度极快,适用于 NGINX 日志、缓存、临时存储 等。可以手动挂载 tmpfs
,或者让 NGINX 代理缓存、日志写入 tmpfs
,降低磁盘 IO 压力。
如果要用 tmpfs
降低磁盘 IO
你可以 手动创建一个 tmpfs
目录,用于存放 NGINX 日志、缓存或临时文件,比如:
1. 用 tmpfs
存储 NGINX 日志
如果你希望 NGINX 的 access.log
和 error.log
写入内存,而不是磁盘,可以这样做:
sudo mkdir -p /var/log/nginx-tmp
sudo mount -t tmpfs -o size=512M tmpfs /var/log/nginx-tmp
这是指定了大小,如果文件过多,可能会造成性能下降!
然后修改 NGINX 配置:
nginx复制编辑
access_log /var/log/nginx-tmp/access.log;
error_log /var/log/nginx-tmp/error.log;
这样日志就不会频繁写入磁盘,减少 IO 压力。
让 tmpfs
开机自动挂载
如果你希望 /var/log/nginx-tmp
每次开机自动挂载 tmpfs
,可以编辑 /etc/fstab
:复制编辑
tmpfs /var/log/nginx-tmp tmpfs defaults,size=512M 0 0
然后执行:
sudo mount -a
这样,每次重启服务器,tmpfs
都会自动挂载。
但是我的内存足够大,都好几十G,特别适合那些不需要永久化的数据,例如缓存文件等
那我肯定要用ramfs
ramfs
是一个 基于内存 的文件系统,不会对存储大小做任何限制,文件的大小只受到系统内存的限制。ramfs
不会使用交换空间(swap),如果内存满了,系统会变得不稳定,甚至崩溃。- 数据存储在内存中,数据会丢失(没有持久性)。
其实这个很容易解决,重启解决烦恼,哈哈
需要考虑的风险
- 内存占用:
- 由于
ramfs
没有大小限制,它会一直占用内存直到手动清理。如果内存不够,可能会导致系统卡顿或崩溃。因此,你需要确保内存足够处理高并发的直播流。
- 由于
- 数据丢失:
ramfs
中的数据会丢失(没有持久化),如果系统重启或内存溢出,缓存的数据会消失。对于某些重要的缓存数据,可能需要考虑备份或其他存储机制。
- 监控和调优:
- 使用
ramfs
后,你需要对内存使用情况进行严格监控,确保系统不会因为内存溢出而变得不稳定。
- 使用
如何使用 ramfs
存储 HLS 直播流 ,HLS 因为高强度的文件读写,非常适合这个
- 挂载
ramfs
: 假设你打算把 HLS 分片存储在/mnt/hls
,可以使用以下命令:sudo mkdir -p /mnt/hls sudo mount -t ramfs ramfs /mnt/hls
这样,所有在/mnt/hls
下的文件将存储在内存中。 - 调整内存使用(可选): 如果你希望限制内存占用,可以通过
size
参数限制ramfs
的大小:bash复制编辑sudo mount -t ramfs -o size=4G ramfs /mnt/hls
这样ramfs
将限制为 4GB 的内存。 - 配置 NGINX 或其他流媒体服务: 修改你的 NGINX 或流媒体服务配置,将 HLS 分片存储路径指向
/mnt/hls
,例如:nginx复制编辑location /hls/ { root /mnt/hls/; ... }
- 监控和优化: 定期检查内存使用情况,避免内存过载导致系统崩溃:bash复制编辑
free -h
总结
ramfs
存储 HLS 直播流 可以带来更快的读写速度和更低的延迟,非常适合高并发的直播应用。- 但也要小心 内存管理,避免内存溢出造成系统不稳定。
- 如果你不希望内存占用过高,
tmpfs
是一个更为灵活的选择,可以限制内存使用并避免溢出。
如何使用 ramfs
存储 HLS 直播流
- 挂载
ramfs
: 假设你打算把 HLS 分片存储在/mnt/hls
,可以使用以下命令:bash复制编辑sudo mkdir -p /mnt/hls sudo mount -t ramfs ramfs /mnt/hls
这样,所有在/mnt/hls
下的文件将存储在内存中。 - 调整内存使用(可选): 如果你希望限制内存占用,可以通过
size
参数限制ramfs
的大小:bash复制编辑sudo mount -t ramfs -o size=4G ramfs /mnt/hls
这样ramfs
将限制为 4GB 的内存。 - 配置 NGINX 或其他流媒体服务: 修改你的 NGINX 或流媒体服务配置,将 HLS 分片存储路径指向
/mnt/hls
,例如:nginx复制编辑location /hls/ { root /mnt/hls/; ... }
- 监控和优化: 定期检查内存使用情况,避免内存过载导致系统崩溃:bash复制编辑
free -h
总结
ramfs
存储 HLS 直播流 可以带来更快的读写速度和更低的延迟,非常适合高并发的直播应用。- 但也要小心 内存管理,避免内存溢出造成系统不稳定。
- 如果你不希望内存占用过高,
tmpfs
是一个更为灵活的选择,可以限制内存使用并避免溢出。