Mac查看磁盘寿命

avatar
作者
筋斗云
阅读量:0

1. 场景还原

mac使用久了,我想查看磁盘的写入量和寿命,记录一下查看方法。

系统环境: macOS 14.4.1

电脑配置:MacBook Pro 16英寸 M1 Pro

2. 查看步骤

安装Homebrew

我们要借助Homebrew安装一个叫"smartmontools"的软件,如果你已安装Homebrew请跳过此步骤。

打开终端或者iterm输入以下命令,按照提示安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装smartmontools

brew install smartmontools

运行命令

smartctl -a disk0 | awk '/SMART\/Health Information/,/^$/'

命令解释:

  • smartctl: 运行 smartctl 工具的命令。

  • -a:  smartctl 命令的一个参数,指示它显示硬盘的所有可用 S.M.A.R.T. 属性和信息。即,显示硬盘的详细健康状态报告。

  • disk0: 目标硬盘的标识符。在这个命令中,"disk0" 是硬盘的名称或标识符,可以是系统中硬盘的设备名称或其他标识符,具体取决于操作系统和硬件配置。

  • |: 这是管道符号,将 smartctl -a disk0 的输出传递给下一个命令。

  • awk: 这是一个用于处理文本数据的强大工具。在这个命令中,我们使用 awk 来处理 smartctl 的输出。

  • '/SMART/Health Information/,/^$/': 这是 awk 命令的模式和动作部分。模式部分由两个正则表达式构成,它们用逗号分隔。第一个正则表达式 /SMART\/Health Information/ 是起始模式,用于匹配包含 "SMART/Health Information" 的行。第二个正则表达式 /^$/ 是结束模式,用于匹配空行。

  • 动作部分: 在模式匹配时执行的动作。在这个命令中,awk 将会从匹配到的起始模式开始打印输出,并在遇到结束模式(空行)时停止打印。

如何确认当前系统挂载的分区或启动的磁盘标志符?

打开终端运行下面的命令:

diskutil list | grep \* -m 1

如下图所示,最后的disk0即为启动磁盘标志符

如果你要查看别的磁盘,请运行下面的命令查找磁盘标志符(输出结果最后一列IDENTIFIER)

diskutil list

分析输出结果 

运行上面的命令后,会得到以下输出,其中的Percentage Used(磁盘使用百分比)Data Units Written(磁盘写入量)就是我们要关注的值:

SMART/Health Information (NVMe Log 0x02) Critical Warning:                   0x00 #严重警告。此处值为 0x00,表示没有严重警告。 Temperature:                        33 Celsius #温度。当前温度为 33 摄氏度 Available Spare:                    100% #可用备用空间。当前可用备用空间为 100%。 Available Spare Threshold:          99% #可用备用空间阈值。当前可用备用空间阈值为 99%。当可用备用空间低于此阈值时,可能会出现警告。 Percentage Used:                    2% #使用百分比。当前使用了 2% 的存储器容量 Data Units Read:                    91,207,805 [46.6 TB] #读取的数据单元数量。当前已读取 91,207,805 个数据单元,相当于 46.6 TB 的数据量。 Data Units Written:                 95,333,096 [48.8 TB] #写入的数据单元数量。当前已写入 95,333,096 个数据单元,相当于 48.8 TB 的数据量。 Host Read Commands:                 2,236,552,092 #主机读命令数量。当前已执行 2,236,552,092 条主机读命令。 Host Write Commands:                1,626,904,490 #主机写命令数量。当前已执行 1,626,904,490 条主机写命令。 Controller Busy Time:               0 #控制器忙碌时间 Power Cycles:                       349 #电源循环次数。当前已进行了 349 次电源循环。 Power On Hours:                     1,237 #上电时间。当前已经上电运行了 1,237 小时。 Unsafe Shutdowns:                   10 #不安全的关闭次数。当前发生了 10 次不安全的关闭。 Media and Data Integrity Errors:    0 #媒体和数据完整性错误。当前没有发生媒体和数据完整性错误。 Error Information Log Entries:      0 #媒体和数据完整性错误。当前没有发生媒体和数据完整性错误。

3. 拓展知识

Smartmontools

Smartmontools 是一组用于监控存储设备健康状态的开源软件。它主要用于监控和分析支持 S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)的存储设备,比如硬盘和固态硬盘(SSD)。S.M.A.R.T. 是一种由硬盘制造商提供的技术,用于检测硬盘的健康状况,并提前警告用户可能的硬盘故障

Smartmontools 软件包括两个主要工具:

smartctl: 这是一个命令行工具,用于读取和解释存储设备的 S.M.A.R.T. 数据。它可以提供硬盘的各种参数,如温度、错误率、剩余寿命等。通过 smartctl,用户可以定期检查硬盘的健康状态,及时发现潜在的故障。

smrtctl的参数:

  1. -a, --all: 显示所有可用的 S.M.A.R.T. 属性和信息。

  2. -H, --health: 显示硬盘的健康状态。

  3. -i, --info: 显示硬盘的基本信息,如型号、序列号等。

  4. -l selftest, --selftest: 显示硬盘自检的结果。

  5. -t test_type, --test= test_type: 执行指定类型的硬盘自检,test_type 可以是 short、long 或 conveyance。

  6. -c, --capabilities: 显示硬盘支持的 S.M.A.R.T. 功能和自检选项。

  7. -d type, --device=type: 指定硬盘接口类型,如 ata、scsi、sat 等。

  8. -q, --quietmode=errorsonly: 以安静模式运行,只显示错误信息。

  9. -a, --nocheck=errorsonly: 只显示关键错误信息。

  10. -l error[,read], --log=error[,read]: 显示硬盘的错误日志,可选择是否显示读取错误日志。

  11. -l xerror[,read], --xall=error[,read]: 显示扩展错误日志,包括读取错误日志。

  12. -t select[,select], --select=select[,select]: 显示指定的 S.M.A.R.T. 属性。

  13. -r ioctl[,dev], --report=ioctl[,dev]: 显示指定的 IOCTL 命令的输出。

smartd: 这是一个守护进程,用于在后台运行并监视存储设备的健康状况。它可以配置成在检测到硬盘问题时发送警报邮件或执行其他操作,以便及时采取措施。

smartd的参数:

  1. -d, --debug: 开启调试模式,输出更详细的调试信息。

  2. -i n, --interval=n: 指定监测硬盘的时间间隔(以分钟为单位)。

  3. -l facility, --logfacility=facility: 指定日志记录的设施。

  4. -n, --nocheck: 不进行初始的 S.M.A.R.T. 检查。

  5. -p, --pidfile=file: 指定 pid 文件的路径,用于记录 smartd 进程的 PID。

  6. -s (l|w|r|n|a) [ , [l|w|r|n|a]]: 指定硬盘状态发生改变时的警报方式。l 表示日志记录,w 表示发送警报邮件,r 表示重新启动系统,n 表示无动作,a 表示执行所有操作。

  7. -t, --test: 在启动时进行一次 S.M.A.R.T. 检查,然后退出。

  8. -m address, --mailto=address: 指定接收警报邮件的地址。

  9. -M exec command, --exec=command: 指定在硬盘状态改变时执行的命令。

  10. -R, --nocheck=errorsonly: 以错误模式运行,只检查关键错误。

  11. -u, --shutdown: 在硬盘状态改变时关闭系统。

Smartmontools 可以在多种操作系统上运行,包括 Linux、FreeBSD、Windows 等,并且支持各种硬盘接口,如 SATA、IDE、SCSI 等。它是一个非常有用的工具,可以帮助用户及时了解硬盘的健康状况,以预防数据丢失和硬盘损坏。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!