是否有一个Terminal命令可以显示在整个磁盘生命周期中已向我的SSD写入了多少GB?我问是因为我想找出已完成的周期数。根据类型,SSD可以执行大约1000–2000个周期。
是否有一个Terminal命令可以显示在整个磁盘生命周期中已向我的SSD写入了多少GB?我问是因为我想找出已完成的周期数。根据类型,SSD可以执行大约1000–2000个周期。
Answers:
使用适当的工具*读取SSD的以下SMART属性:
241-总共写入的LBA:在设备整个生命周期内写入的512字节扇区的总数。
242-读取的全部LBA:在设备整个生命周期内读取的512字节扇区的总数。
第二组属性是:
174-Host_Reads_MiB
175-Host_Writes_MiB
但是我不知道第二组中的值是否真的有意义(至少对我而言,将120 GB SSD作为Fusion驱动器的一部分使用),因为通过SSD向HDD写入的数据要比从HDD写入的数据多得多只有大小的1/25:
0xae Host_Reads_MiB ----CK 100 100 000 - 12268569 (~12 TiB)
0xaf Host_Writes_MiB ----CK 100 100 000 - 16481745 (~16 TiB)
与3 TB HDD(Fusion驱动器的第二部分)相比:
0xf1 Total_LBAs_Written ------ 100 253 000 - 21361815408 (~10 TiB)
0xf2 Total_LBAs_Read ------ 100 253 000 - 23925221693 (~11 TiB)
安装了smartmontools之后,如果属性“ 242 Total_LBAs_Written”存在,则以下命令将以GB表示写入数据:
smartctl -s on -i -A -f brief -f hex,id -l devstat /dev/DiskIdentifier | grep 0xf1 | awk '{ print $8/1953125 }'
或以TB为单位:
smartctl -s on -i -A -f brief -f hex,id -l devstat /dev/DiskIdentifier | grep 0xf1 | awk '{ print $8/1953125000 }'
将“ DiskIdentifier”替换为带有的内部SSD的标识符diskutil list
。可能是disk0。
如果属性“ 175-Host_Writes_MiB”存在,则以下命令以GB为单位写入数据(请谨慎处理结果):
smartctl -s on -i -A -f brief -f hex,id -l devstat /dev/DiskIdentifier | grep 0xaf | awk '{ print $8/953.67 }'
就像前面已经提到的那样,将“ DiskIdentifier”替换为您的内部SSD的标识符,该标识符为diskutil list
。可能是disk0。
上面的smartctl命令不是很可靠(至少对我来说)。
如果出现类似“读取SMART数据失败:未定义的错误:0”之类的错误,请smartctl -A /dev/disk0
首先尝试。
如果出现类似“ SMART Disabled(SMART已禁用)。请使用选项-s和参数'on'启用它。”的错误信息,请尝试smartctl -s on -A /dev/disk0
然后重试上述命令以读出并计算写入磁盘的数据。
smartctl -s on /dev/DiskIdentifier
。然后,您将能够获取数据。要再次禁用它:smartctl -s off /dev/DiskIdentifier
最初的帖子提到SSD的周期限制为1000-2000,这简化了问题。 SSD中的单个单元可能有这样的限制,但是SSD实现了许多不同的解决方案:从过度配置和写均衡到Sandforce专有的重复数据删除,压缩和数据差分技术集合,其称为“ DuraWrite”。
回到原始帖子:诸如之类的技术iostat
虽然具有相关性,但它们显示的是总体活动,但是要想知道每个单元执行了多少编程/擦除周期以及从那里开始,SSD上还有多少寿命,很难倒退。
一个有用的建议可能是避免将SSD填充到其指定容量的20%左右以内,并避免在没有足够备份的情况下部署使用过的SSD。
Ars Technica有几篇关于SSD如何工作的非常有用的文章。最直接有用的是:“ 消费级固态硬盘实际上可以持续很长时间 ”。有关更多详细信息,请参见此处,特别是第5页。
我使用Homebrew()安装了GSmartControl,并得到了以下信息:brew install gsmartcontrol
SMART属性号 173(擦除计数或磨损均衡)应表示已用完的整个扇区写入。
我的MacBook 2015回答了这个问题(没有0xf1 ID):
smartctl -s on -i -A -f brief -f hex,id -l devstat /dev/disk0
smartctl 6.4 2015-06-04 r4109 [x86_64-apple-darwin15.0.0] (local build)
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: APPLE SSD SM0256G
...
LU WWN Device Id: 5 002538 900000000
Firmware Version: BXW1SA0Q
User Capacity: 251 000 193 024 bytes [251 GB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Rotation Rate: Solid State Device
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: ATA8-ACS T13/1699-D revision 4c
SATA Version is: SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
...
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
0x01 Raw_Read_Error_Rate -O-RC- 200 200 000 - 0
0x05 Reallocated_Sector_Ct PO--CK 100 100 000 - 0
0x09 Power_On_Hours -O--CK 099 099 000 - 180
0x0c Power_Cycle_Count -O--CK 099 099 000 - 650
0xa9 Unknown_Attribute PO--C- 229 229 010 - 1975773037504
0xad Unknown_Attribute -O--CK 200 200 100 - 4296081414
0xae Unknown_Attribute -O---K 099 099 000 - 2547718
0xaf Program_Fail_Count_Chip -O---K 099 099 000 - 1304888
0xc0 Power-Off_Retract_Count -O--C- 099 099 000 - 1
0xc2 Temperature_Celsius -O---K 059 022 000 - 41 (Min/Max 19/78)
0xc5 Current_Pending_Sector -O---K 100 100 000 - 0
0xc7 UDMA_CRC_Error_Count -O-RC- 200 199 000 - 0
||||||_ K auto-keep
|||||__ C event count
||||___ R error rate
|||____ S speed/performance
||_____ O updated online
|______ P prefailure warning
ATA_READ_LOG_EXT (addr=0x00:0x00, page=0, n=1) failed: 48-bit ATA commands not implemented
Read GP Log Directory failed
Device Statistics (GP/SMART Log 0x04) not supported