尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Linux命令-sync(将内存缓存写入磁盘)
Linux命令-sync将内存缓存写入磁盘快速参考基本用法工作原理使用场景系统关机/重启基准测试数据持久化保证与相关命令的配合自定义 sync 频率监控脚本常见认知纠正sync是一个简单但重要的命令用于将文件系统缓冲区中所有未写入的数据强制刷新到磁盘。Linux 内核使用页面缓存page cache延迟写入磁盘以提升性能而sync确保这些悬而未决的数据在关键时刻如系统重启前、卸载存储设备前被安全地持久化。快速参考sync[选项][文件...]sync本身几乎立即返回但实际写入可能需要一些时间完成。关键操作如reboot、halt、umount在内部都会自动调用sync。基本用法# 刷新所有文件系统的缓冲区sync# 刷新指定文件的缓冲区sync/path/to/important_file# 多次 sync传统习惯sync; sync; syncsyncsyncsync# 显示 sync 执行进度没有直接选项但可以结合其他工具syncSYNC_PID$!whilekill-0$SYNC_PID2/dev/null;doecho等待 sync 完成...sleep0.5doneechosync 已完成工作原理# 查看脏页dirty pages——尚未写入磁盘的缓存数据cat/proc/meminfo|grepDirty# Dirty: 1234 kB# 查看写回writeback状态cat/proc/meminfo|grepWriteback# Writeback: 0 kB# 查看脏页阈值配置cat/proc/sys/vm/dirty_ratio# 脏页比率上限默认 20%cat/proc/sys/vm/dirty_background_ratio# 后台写入阈值默认 10%cat/proc/sys/vm/dirty_expire_centisecs# 脏页过期时间默认 3000 30秒# sync 执行前后对比echo执行 sync 前grep-EDirty:|Writeback:/proc/meminfosyncecho执行 sync 后grep-EDirty:|Writeback:/proc/meminfo# Dirty 值通常变为 0 或极小值使用场景系统关机/重启# 尽管 reboot/shutdown 内部会调用 sync手动执行更安全syncsudoreboot# 紧急关机AltSysRq 序列# 按住 AltSysRq依次按# R → 切换键盘为原始模式# E → 向所有进程发送 SIGTERM# I → 向所有进程发送 SIGKILL# S → 同步所有文件系统 ← sync# U → 重新挂载所有文件系统为只读# B → 立即重启# 安全断开 USB 存储设备sync# 1. 刷新缓冲区sudoumount/mnt/usb# 2. 卸载# 3. 物理断开 USB基准测试# 在 I/O 基准测试前刷新缓存syncecho3|sudotee/proc/sys/vm/drop_caches# 这确保测试的是实际磁盘性能而非缓存性能# drop_caches 说明# echo 1 → 释放页面缓存# echo 2 → 释放 dentries 和 inode 缓存# echo 3 → 释放所有缓存数据持久化保证# 写入重要数据后的可靠性确认cat/etc/important_config.confEOF # critical config parametervalue EOFsync/etc/important_config.confecho配置已安全写入磁盘# 备份脚本中确保数据落盘tarczf backup.tar.gz /important_datasyncbackup.tar.gzecho备份文件已安全写入# 批量文件操作后fordirin/data/*/;dorsync-av$dir/backup/donesyncecho所有备份数据已同步到磁盘与相关命令的配合# sync umount: 安全卸载syncsudoumount/mnt/data# sync eject: 弹出光盘synceject# sync blockdev: 刷新块设备缓冲区syncsudoblockdev--flushbufs/dev/sdb# 监控 sync 期间的 I/Osynciostat-x13# 查看哪些进程造成了脏页cat/proc/*/status2/dev/null|grep-B2VmDirty|grep-EName|VmDirty# 在数据库中 sync 之前先让应用 flushmysql-eFLUSH TABLES; FLUSH LOGS;sync自定义 sync 频率# 查看当前内核脏页写回参数sysctl-a|grepdirty# 调整脏页写回行为更激进的写回 数据更安全但性能稍降sudosysctl-wvm.dirty_ratio10sudosysctl-wvm.dirty_background_ratio5sudosysctl-wvm.dirty_expire_centisecs1500# 15 秒sudosysctl-wvm.dirty_writeback_centisecs500# 5 秒间隔# 持久化配置cat/etc/sysctl.d/60-dirty-pages.confEOF # 更激进的脏页写回数据安全性优先 vm.dirty_ratio 10 vm.dirty_background_ratio 5 vm.dirty_expire_centisecs 1500 vm.dirty_writeback_centisecs 500 EOFsudosysctl-p/etc/sysctl.d/60-dirty-pages.conf监控脚本# 脏页监控脚本cat/usr/local/bin/dirty_pages_monitor.shEOF #!/bin/bash INTERVAL${1:-5} # 监控间隔秒 echo 监控脏页状态${INTERVAL}s 间隔... CtrlC 退出 echo 时间 | Dirty (kB) | Writeback (kB) | 脏页占比 echo ------------------|------------|----------------|---------- while true; do DIRTY$(grep Dirty /proc/meminfo | awk {print $2}) WRITEBACK$(grep Writeback /proc/meminfo | awk {print $2}) TOTAL$(grep MemTotal /proc/meminfo | awk {print $2}) PCT$(awk BEGIN {printf \%.2f%%\, ($DIRTY/$TOTAL)*100}) printf %s | %10s | %14s | %s\n \ $(date %H:%M:%S) $DIRTY $WRITEBACK $PCT if [ $DIRTY -gt $((TOTAL * 10 / 100)) ]; then echo ⚠️ 脏页超 10%考虑手动 sync fi sleep $INTERVAL done EOFchmodx /usr/local/bin/dirty_pages_monitor.sh常见认知纠正# 认识 1: sync 不会损坏数据# ✅ 正确。sync 只是将缓冲区数据写入磁盘不会造成数据丢失# 认识 2: sync 执行后数据一定在磁盘上# ⚠️ 不完全是。对于有写缓存的硬件 RAID 卡和某些 SSD# sync 只能确保数据到达设备驱动层设备内部可能还有缓存。# 对于关键系统使用带掉电保护的存储设备。# 认识 3: 多次 sync 比一次更安全# ❌ 在现代 Linux 内核中没有必要。一次 sync 已足够。# sync sync sync 是 Unix 时代的迷信习惯。# 但无害可以继续使用。# 认识 4: sync 会阻塞# sync 调用本身几乎不阻塞它只是触发了写回操作# 但实际的磁盘写入可能持续一段时间。sync是 Linux 数据持久化的保险按钮。它简单到只有一个单词却是防止数据丢失的最后一道防线。在拔 U 盘前、断电前、系统维护前sync三个字符就是数据安全的保证。
RELATED

相关推荐

Agent的真正门槛,从来不是跑通Demo,而是解决烂工程问题

Agent的真正门槛,从来不是跑通Demo,而是解决烂工程问题

文章目录1. 三个入口,共用一个脑子1.1 常规解法听着优雅,实则藏坑1.2 我偏反着来,直接内联打包1.3 有得必有失,拿复用换踏实2. 就盯着DeepSeek调,不做万金油2.1 “模型无关”听着万能,实则谁都不合身2.2 照…

📅 2026/9/1 4:03:40
微信聊天记录导出快速上手指南:3种格式加1份年度报告

微信聊天记录导出快速上手指南:3种格式加1份年度报告

微信聊天记录导出快速上手指南:3种格式加1份年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…

📅 2026/9/1 16:08:16
Transformer架构核心原理与工程实践:从自注意力到变体演进

Transformer架构核心原理与工程实践:从自注意力到变体演进

1. 从序列到“注意力”:为什么我们需要Transformer?如果你在过去几年里稍微关注过人工智能,尤其是自然语言处理领域,那么“Transformer”这个词一定如雷贯耳。它早已不是《变形金刚》电影的专属,而是成为了驱动当今绝大…

📅 2026/9/10 8:22:06
MORE NEWS

更多资讯

📰

基于 Spring Boot 的研究生导师信息管理系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

基于 Spring Boot 的学校浴室管理系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

ADK A2A 实战:从零跑通分布式智能体协作,把孤岛智能体连成网络

ADK A2A 实战:从零跑通分布式智能体协作,把孤岛智能体连成网络 【免费下载链接】adk-docs An open-source, code-first toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control. 项目地址: https://g…

📰

如何快速选对 Rime 输入方案:awesome-rime 完整指南

如何快速选对 Rime 输入方案:awesome-rime 完整指南 【免费下载链接】awesome-rime A curated list of Rime IME schemata and configs | Rime 輸入方案和配置列表 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-rime 拼音候选翻不完&#xff0…

📰

平衡车FOC固件改造完全实战:hoverboard-firmware-hack-FOC 上手指南

平衡车FOC固件改造完全实战:hoverboard-firmware-hack-FOC 上手指南 【免费下载链接】hoverboard-firmware-hack-FOC With Field Oriented Control (FOC) 项目地址: https://gitcode.com/GitHub_Trending/ho/hoverboard-firmware-hack-FOC 平衡车FOC固件项目…

📰

Minecraft启动器PCL2:免费开源,5分钟跑起来还能自动装Java

Minecraft启动器PCL2:免费开源,5分钟跑起来还能自动装Java PCL2(Plain Craft Launcher 2)是一款免费开源的Minecraft启动器:自动匹配并下载Java、多版本并存、一键导入模组整合包,下载、启动、崩溃排查全包…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬