热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在SSD上使用btrfs文件系统的相关优化

优化挂载参数在Linux中挂载SSD上的btrfs,可以采用各种参数进行优化:#

优化挂载参数

在 Linux 中挂载 SSD 上的 btrfs,可以采用各种参数进行优化:

  1. # <file system> <mount point> <type> <options> <dump> <pass>
  2. UUID&#61;<略> / btrfs defaults,ssd,discard,noatime,compress&#61;lzo,subvol&#61;&#64; 0 1

这些参数各有优缺点&#xff0c;酌情添加。

ssd

btrfs 文件系统有对 SSD 进行优化&#xff0c;在挂载参数中加入 ssd 即可。该参数不会自动启用 TRIM/discard。

discard

可以通过以下命令确认 SSD 是否支持 TRIM&#xff1a;

  1. sudo hdparm -I /dev/sdX | grep TRIM
  2. * Data Set Management TRIM supported (limit 8 blocks)

若 SSD 支持 TRIM 命令&#xff0c;可以在 /etc/fstab 中启用 discard 参数。建议将 discard 挂载参数作为首选。据 debian wiki 所述&#xff0c;包括三星&#xff0c;镁光&#xff0c;英睿达在内的一些 SSD 在 discard/TRIM 上有问题&#xff0c;不能合适地处理 TRIM 命令。以下是 linux 内核相关处源代码 (2015/10/15)&#xff1a;

  1. /* devices that don&#39;t properly handle queued TRIM commands */
  2. { "Micron_M500_*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  3. ATA_HORKAGE_ZERO_AFTER_TRIM, },
  4. { "Crucial_CT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  5. ATA_HORKAGE_ZERO_AFTER_TRIM, },
  6. { "Micron_M5[15]0_*"," MU01", ATA_HORKAGE_NO_NCQ_TRIM |
  7. ATA_HORKAGE_ZERO_AFTER_TRIM, },
  8. { "Crucial_CT*M550*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
  9. ATA_HORKAGE_ZERO_AFTER_TRIM, },
  10. { "Crucial_CT*MX100*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
  11. ATA_HORKAGE_ZERO_AFTER_TRIM, },
  12. { "Samsung SSD 8*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  13. ATA_HORKAGE_ZERO_AFTER_TRIM, },
  14. { "FCCT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
  15. ATA_HORKAGE_ZERO_AFTER_TRIM, },
  16. /* devices that don&#39;t properly handle TRIM commands */
  17. { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, },

该参数不是必需的&#xff0c;也可以自定义周期性运行 fstrim 命令来取代该参数&#xff0c;使用该命令前要确认 SSD 支持 TRIM&#xff0c;否则可能造成数据丢失。当 SSD 有足够的空余空间或&#xff08;未分配的&#xff09;可用空间时不需要该参数。

noatime

挂载参数可以加入 noatime&#xff0c;通过禁止更新访问记录来减少不必要的写操作以提高性能。该选项对 HDD 同样有性能提升。btrfs 的默认配置为 relatime

compress

打开压缩功能在通常情况下有利于提高传输性能&#xff08;并非绝对&#xff09;&#xff0c;也可以节省存储空间。加入以下挂载参数&#xff1a;

  1. compress&#61;lzo
  2. compress&#61;zlib

lzo 速度更快&#xff0c;zlib 压缩率更高。注意确认 SSD 主控是否是非压缩主控&#xff0c;若为压缩主控不建议加入该参数。

写缓存

若 SSD 带有缓存&#xff0c;启用 Write Cache 可以提高性能&#xff1a;Disks -> Drive Setting -> Enable Write Cache&#xff0c;但在突然断电的情况下可能造成数据丢失。

I/O 调度

SSD 结构不同于传统硬盘&#xff0c;寻址时间短&#xff0c;I/O 调度算法可选择 noop 以降低延迟。以下命令可查看与修改调度器&#xff1a;

  1. cat /sys/block/sdX/queue/scheduler # sdX 指你的设备
  2. sudo tee /sys/block/sdX/queue/scheduler <<< noop

注意以上方法并不持久&#xff0c;重启后会重置。如果 SSD 是系统唯一的存储设备&#xff0c;可考虑通过 elevator&#61;noop 内核参数设置 I/O 调度器。也可使用 udev 规则来修改调度器&#xff0c;对多存储设备同样有效&#xff1a;

  1. /etc/udev/rules.d/60-ssd-scheduler.rules # 创建该文件

文件内容如下&#xff1a;

# set deadline scheduler for non-rotating disks
ACTION&#61;&#61;"add|change", KERNEL&#61;&#61;"sd[a-z]", ATTR{queue/rotational}&#61;&#61;"0", ATTR{queue/scheduler}&#61;"noop"

参考&#xff1a;

  1. 关于在SSD上使用btrfs文件系统需要做的优化 - akarin.cn
  2. Solid State Drives - Arch wiki
  3. SSD Optimization - debian wiki
  4. Btrfs wiki

  5. 本文来自云栖社区合作伙伴“Linux中国”&#xff0c;原文发布日期&#xff1a;2015-10-16   


推荐阅读
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 在Ubuntu 20.04上安装Zotero时,压缩包中包含一个`.desktop`文件,可以方便地将Zotero添加到系统启动器中。建议将解压后的目录移动到合适的位置,如`/opt/zotero`,以便更好地管理和维护。此外,确保赋予该目录适当的权限,以确保Zotero能够正常运行。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
author-avatar
Zhang钰煌_925
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有