sg3
一、sg3查看缓存状态
您可以使用sg_modes
命令来查看SAS盘和SATA盘的缓存状态。例如,要查看/dev/sdb
设备的缓存状态,您可以执行以下命令:
sg_modes -p 8,0 /dev/sdb
二、sg3关闭机械盘写缓存状态(仅适用于SAS盘)
对于SAS盘,您可以按照以下步骤更改其读写缓存状态:
1、编辑缓存状态
使用vi
编辑器创建或编辑一个名为mode_page.dat
的文件,并设置适当的缓存状态值。对于关闭写缓存而开启读缓存,不同的磁盘厂商有不同的设置方式。以下是一些常见磁盘厂商的设置示例:
- WD磁盘:
00
:读缓存开启,写缓存关闭
04
:读写缓存全部打开
01
:读写缓存全部关闭
05
:读缓存关闭,写缓存开启
- Seagate和Toshiba磁盘:
10
:读缓存开启,写缓存关闭
14
:读写缓存全部打开
11
:读写缓存全部关闭
15
:读缓存关闭,写缓存开启
编辑mode_page.dat
文件时,确保第一行包含正确的缓存设置值。例如,对于WD磁盘,关闭写缓存并开启读缓存,第一行可能如下:
88 12 00 00 ff ff 00 00 ff ff ff ff 00 08 00 00 00 00 00 00
请注意,您需要根据具体的磁盘型号选择正确的设置值。
2、将缓存状态写入磁盘
使用sg_wr_mode
命令将编辑后的缓存状态写入磁盘。例如,要将mode_page.dat
中的设置写入/dev/sdb
设备,您可以执行:
sg_wr_mode -p 8,0 -c - -s /dev/sdb < mode_page.dat
3、验证缓存状态
为了确保缓存状态已成功更改,您可以再次使用sg_modes
命令来查看:
sg_modes -p 8,0 /dev/sdb
检查输出中的相关位,以确保写缓存已按预期关闭。
Smartctl
一、使用smartctl
查看和更改磁盘缓存状态
1、查看写缓存状态
您可以使用smartctl
命令来查看SAS盘和SATA盘的写缓存状态。执行以下命令:
smartctl -g wcache /dev/sde
将/dev/sde
替换为您想要检查的磁盘设备名。
2、打开磁盘写缓存
要启用SAS盘或SATA盘的写缓存,执行以下命令:
smartctl -s wcache=on /dev/sde
同样,将/dev/sde
替换为相应的磁盘设备名。
3、关闭磁盘写缓存
要禁用SAS盘或SATA盘的写缓存,执行以下命令:
smartctl -s wcache=off /dev/sde
4、查看读缓存状态(仅限SAS盘)
对于SAS盘,您还可以使用smartctl
查看读缓存状态:
smartctl -g rcache /dev/sde
5、打开磁盘读缓存(仅限SAS盘)
要启用SAS盘的读缓存,执行以下命令:
smartctl -s rcache=on /dev/sde
6、关闭磁盘读缓存(仅限SAS盘)
要禁用SAS盘的读缓存,执行以下命令:
smartctl -s rcache=off /dev/sde
7、查看磁盘基础信息
使用smartctl
的-i
选项,您可以查看磁盘的基础信息,包括型号、大小、容量和固件版本等:
smartctl -i /dev/sdb
请确保将/dev/sdb
替换为您想要查询的磁盘设备名。
注意:
- 使用
smartctl
更改磁盘缓存信息是临时性的。当系统断电或重启后,缓存设置将恢复为原状态。 - 在更改缓存设置之前,请确保您了解这些更改对系统性能和数据完整性的影响。
- 对于某些磁盘,使用
smartctl
更改缓存设置可能不受支持或可能无效。在这种情况下,请参考磁盘的官方文档以获取正确的设置方法。 - 错误的缓存设置可能导致数据丢失或系统不稳定,因此在进行任何更改之前,请务必备份重要数据。
Sdparm
一、使用sdparm
查看和更改SAS磁盘缓存状态
1、查看写缓存状态
使用sdparm
命令可以查看SAS盘和SATA盘的写缓存状态。对于SAS盘,执行以下命令:
sdparm --get=WCE /dev/sdb
对于SATA盘,虽然某些情况下可能也可以使用此命令,但请注意不是所有SATA控制器或驱动器都支持通过sdparm
更改缓存设置。如果返回值为1
,则表示写缓存已开启。
2、打开磁盘写缓存
若要启用SAS盘的写缓存,执行以下命令:
sdparm -s WCE=1 --save /dev/sde
请注意,此命令仅适用于SAS盘,并且需要管理员权限来执行。
3、关闭磁盘写缓存
若要禁用SAS盘的写缓存,执行以下命令:
sdparm -s WCE=0 --save /dev/sde
同样,这也仅适用于SAS盘,并需要相应的权限。
4、查看读缓存状态
对于SAS盘和某些SATA盘,您可以使用sdparm
查看读缓存状态:
sdparm --get=RCD /dev/sdb
返回值0
表示读缓存已开启,而1
则表示读缓存已关闭。
5、打开磁盘读缓存
若要启用SAS盘的读缓存(如果之前被关闭),执行以下命令:
sdparm -s RCD=0 --save /dev/sde
这同样仅适用于SAS盘,并需要管理员权限。
6、关闭磁盘读缓存
若要禁用SAS盘的读缓存,执行以下命令:
sdparm -s RCD=1 --save /dev/sde
这也仅适用于SAS盘,并需要相应的权限。
- 在执行任何缓存更改之前,请确保您了解这些更改对系统性能和数据完整性的影响。
- 并非所有磁盘或控制器都支持通过
sdparm
更改缓存设置。在执行这些命令之前,请查阅您的磁盘和控制器文档以确认兼容性。 - 更改缓存设置可能会影响磁盘性能和数据持久性。务必在了解这些影响之后进行更改,并在进行任何更改之前备份重要数据。
- 某些更改可能是临时性的,并且在重启或断电后可能不会保持。确保测试更改的持久性,并根据需要进行调整。
SATA 盘和 SAS 盘可以分别通过 hdparm 和 sdparm 来设置它的 write-caching 属性。
但是在有的情况下,系统上没有安装这两个工具,还可以考虑使用 smartctl 工具来设置。smartctl 的 --get 和 --set 参数可以用来查询和设置非 SMART 的属性,其中就包括了写缓存属性 wcache。
查看当前硬盘当前的 wcache 值:
[root@chenhong204 ~]# smartctl --get=wcache /dev/sdc
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
Writeback Cache is: Enabled
关闭写缓存:
[root@chenhong204 ~]# smartctl --set=wcache,off /dev/sdc
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
Write cache disabled
开启写缓存:
[root@chenhong204 ~]# smartctl --set=wcache,on /dev/sdc
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-693.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
Write cache enabled
特别需要注意的是,用 smartctl 设置的值不能持久化,即重启后会恢复默认值。