在其生命周期内已将多少数据写入我的SSD?


15

是否有一个Terminal命令可以显示在整个磁盘生命周期中已向我的SSD写入了多少GB?我问是因为我想找出已完成的周期数。根据类型,SSD可以执行大约1000–2000个周期。


您的Mac中有哪个SSD?
bmike

如果在250GB驱动器上写入1000个周期,则意味着您已写入250TB数据。即使您每天写入50GB ,杀死它也需要13年。
Thomas Ayoub

2
实际上,我的SSD平均每天平均有32 GB。根据DriveDx的数据,我已经记录了42 TB的写入,“耗损水平”仅为88%,总写入为“ 99%”(无论如何)。我的驱动器已经通电了20个月。我绝对没有错误或坏扇区。
zagadka314

1
@ThomasAyoub 50GB /天,这是一个被低估的地狱,这要归功于swap!我的120GiB SSD的Host_Writes_MiB为317296939(即2421个周期),而Wear_Leveling_Count为FAILING_NOW。我的Macbook距离13岁还不到,更像是4岁。
纳文

2
@Navin很好,我同意我是完全错误的。
Thomas Ayoub

Answers:


7

使用适当的工具*读取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
然后重试上述命令以读出并计算写入磁盘的数据。

* smartmontools


OS X默认不启用SSD中的SMART吗?启用它会提供过去的历史信息吗?
grg

@grgarside发布之前,我检查了Fusion-SSD并启用了SMART。但是找不到这些属性。
klanomath 2015年

我的“ APPLE SSD SM256E”(rMBP)在smartctl中显示“可用”但“已禁用”。
grg

@grgarside使用启用它smartctl -s on /dev/DiskIdentifier。然后,您将能够获取数据。要再次禁用它:smartctl -s off /dev/DiskIdentifier
klanomath 2015年

1
您可能想要添加的内容smartctl 可以使用自制软件或端口轻松安装,甚至还有GUI
n1000

5

最初的帖子提到SSD的周期限制为1000-2000,这简化了问题。 SSD中的单个单元可能有这样的限制,但是SSD实现了许多不同的解决方案:从过度配置和写均衡到Sandforce专有的重复数据删除,压缩和数据差分技术集合,其称为“ DuraWrite”。

回到原始帖子:诸如之类的技术iostat虽然具有相关性,但它们显示的是总体活动,但是要想知道每个单元执行了多少编程/擦除周期以及从那里开始,SSD上还有多少寿命,很难倒退。

一个有用的建议可能是避免将SSD填充到其指定容量的20%左右以内,并避免在没有足够备份的情况下部署使用过的SSD。

Ars Technica有几篇关于SSD如何工作的非常有用的文章。最直接有用的是:“ 消费级固态硬盘实际上可以持续很长时间 ”。有关更多详细信息,请参见此处,特别是第5页。


4

我使用Homebrew()安装了GSmartControl,并得到了以下信息:brew install gsmartcontrol

GSmartControl屏幕截图OSX

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

-2

这个问题已经在这里给出了非常详细的答案

以下命令

iostat -Id disk0

反映从设备安装到iostat命令运行之间的数据传输统计信息。


6
尽管这提供了有用的信息,但是这如何适用于“在磁盘的整个生命周期内”?
grg

2
这仅写出自启动以来的读写+ MB的总和。通常与“活动监视器”的“磁盘”选项卡中的统计相同。
亚当·霍谢克(AdamHošek)2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.