linux查看存储周期,在Linux服务器上,如何配置SSD存储的周期性TRIM

介绍

由于SSD的结构是固态驱动器,如果连续使用会导致降低性能,TRIM命令允许操作系统将哪些数据块不再使用的信息传播到SSD,TRIM对设备的性能和整个寿命都有重要影响。

一个更温和的选择是配置周期性TRIM,在几乎所有情况下,它都提供了相同的持续TRIM好处,而不影响性能。

禁用连续TRIM

你可能已经在设备安装时启用了连续TRIM,在启用定期TRIM之前,先看看我们当前的挂载选项是有意义的。

通过使用discard选项安装驱动器或分区来启用连续TRIM。

首先,找到当前使用discard选项挂载的文件系统:findmnt -O discardOutputTARGET SOURCE FSTYPE OPTIONS

/mnt/data /dev/sda1 ext4 rw,relatime,discard,data=ordered

/mnt/data2 /dev/sdb1 ext4 rw,relatime,discard,data=ordered

你可以在不使用discard选项的情况下将这些文件系统重新挂载,方法是包含带有mount的-o remount,nodiscard :sudo mount -o remount,nodiscard /mnt/data

sudo mount -o remount,nodiscard /mnt/data2

如果再次运行findmnt命令,则不会收到结果:findmnt -O discard

接下来,打开/etc/fstab文件查看当前为你的文件系统定义的挂载选项,确定文件系统每次引导时的挂载方式:sudo nano /etc/fstab

查找discard选项并将它从你找到的行删除:/etc/fstab. . .

# /dev/sda1 /mnt/data ext4 defaults,nofail,discard 0 0

/dev/sda1 /mnt/data ext4 defaults,nofail 0 0

# /dev/sdb1 /mnt/data2 ext4 defaults,nofail,discard 0 0

/dev/sdb1 /mnt/data2 ext4 defaults,nofail 0 0

完成后保存并关闭文件,现在将不使用discard选项挂载文件系统,并且在后续的引导中将以同样的方式挂载,现在,我们可以为支持它的所有文件系统设置定期TRIM。

systemd建立周期TRIM

cat /etc/cron.weekly/fstrimOutput#!/bin/sh

# trim all mounted file systems which support it

/sbin/fstrim --all || true

你可以看到,这个脚本需要一个带有--all标志的fstrim版本,许多版本的fstrim以早期版本发布并不包含此选项。

其他systemd 发行版

对于其他systemd发行版,可以通过fstrim.timer文件启用周期TRIM,这将在所有可用的驱动器上运行TRIM操作,这也利用了fstrim --all选项。

在编写本文时,这是以下发行版的最佳方法:Debian,Fedora CoreOS

对于CentOS ,fedora和CoreOS,fstrim.service和fstrim.timer单元在默认情况下可用,要计划每周TRIM所有已连接的驱动器,请启用.timer单元:sudo systemctl enable fstrim.timer

Debian,8在文件系统中有fstrim.service和fstrim.timer可用,但是,默认情况下没有加载到systemd中,你只需首先复制文件:sudo cp /usr/share/doc/util-linux/examples/fstrim.service /etc/systemd/system

sudo cp /usr/share/doc/util-linux/examples/fstrim.timer /etc/systemd/system

启用与其他发行版相同的计时器:sudo systemctl enable fstrim.timer

你的服务器现在应该TRIM所有支持该操作的已挂载文件系统,每周一次。

建立非systemd的周期TRIM

巧妙的是,大多数发布非systemd init系统的发布版也带有fstrim实用程序的版本,但是没有--all标志,这使得安全的自动TRIM操作更加困难。

在不支持它或不正确实现的设备上使用TRIM可能是危险的,并导致数据丢失,--all标志可以安全地处理这些场景,但是可以手动尝试确定附加驱动器是否正确支持操作。

在Ubuntu中,有一个名为fstrim-all的简短脚本,它尝试执行此操作,cron运行的每周脚本执行这个操作,但是,脚本并不总是正确地解析驱动器的TRIM能力。

对于没有--all标志的fstrim命令和其他发行版,最好的解决方案是编译包含标志的fstrim的静态链接版本。

这可能是以下发行版的最佳选项:Ubuntu 14.04 ,Ubuntu 12.04 ,Debian 7 ,,CentOS 6

对于Ubuntu 14.04:最好禁用脚本运行,因为它可能无法正确检测状态:sudo chmod a-x /etc/cron.weekly/fstrim

sudo mv /etc/cron.weekly/fstrim /etc/cron.weekly/fstrim.bak

安装软件编译工具

首先,安装所需的软件构建工具。

对于Ubuntu和Debian系统,可以通过键入以下命令来完成:sudo apt-get update

sudo apt-get install build-essential

对于CentOS系统,你可以通过键入以下命令来安装类似的工具集:sudo yum groupinstall 'Development Tools'

现在,你有了编译fstrim的最新版本所需的构建依赖项。

下载并提取源文件

你在这里可以找到按发布版本组织的源代码。

单击软件包的最新版本,

在下一个目录中,找到软件的最新tarball ,这将从util-linux-开始,以.tar.gz结束,当前,最新的稳定版本是util-linux-2.28.1.tar.gz ,右键单击适当的链接并将它复制到剪贴板。

回到服务器,移动到/tmp目录,cd /tmp

curl -LO https://www.kernel.org/pub/linux/utils/util-linux/v2.28/util-linux-2.28.1.tar.gz

然后,提取tarball以创建源目录结构:tar xzvf util-linux*

现在我们已经拥有了源代码和构建工具,我们可以构建软件了。

配置和编译静态链接的FSTRIMcd /tmp/util-linux*

由于我们只安装独立的fstrim二进制文件,并且不希望覆盖包管理系统管理的实用程序和库,所以,我们将编译一个静态二进制文件。

为此,我们需要启用静态链接,并且禁用共享库,通过键入以下命令配置有以下属性的软件:./configure --enable-static --disable-shared

配置完软件后,你可以通过键入以下命令来编译fstrim实用程序:make fstrim

我们将创建一个名为/cron-bin的目录,并将二进制文件放入其中:sudo mkdir /cron-bin

sudo cp /tmp/util-linux*/fstrim /cron-bin

创建每周Cron脚本以运行fstrim

通过键入以下命令创建文件:sudo nano /etc/cron.weekly/fstrim

在内部,粘贴以下行,这将使用--all选项运行我们的新fstrim二进制文件:/ETC/CRON ,每周fstrim#!/bin/sh

# trim all mounted file systems which support it

/cron-bin/fstrim --all || true

完成后保存并关闭文件。

键入以下命令使脚本可执行:sudo chmod a+x /etc/cron.weekly/fstrim

cron和anacron守护进程将每周运行这个脚本来TRIM文件系统。

结束语

TRIM有助于最大程度地提高你的SSD的长期性能和寿命。

连续TRIM操作听起来可能是理想的,但是文件系统会添加显著的开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值