Linux에서 '쓰기 된 총 바이트 수'측정


36

우리는 서버 환경에서 SSD 드라이브를 사용할 가능성에 대해 관심이 있습니다. 그러나 우리가 확립해야 할 한 가지는 드라이브 수명이 예상됩니다. 이 기사 에 따르면 제조업체는 'TBW (Total bytes written)'측면에서 드라이브 내구성을보고하고 있습니다. 예를 들어 Crucial C400 SSD의 정격은 72TB TBW입니다. TBW를 측정하는 데 도움이되는 스크립트 / 도구가 Linux 에코 시스템에 존재합니까? (그리고 SSD 드라이브 사용 가능성에 대해보다 교육적인 결정을 내림)

답변:


28

또 다른 가능성은 / proc / diskstats를 보는 것 입니다. 재부팅 동안 지속되지는 않지만 모든 블록 장치에 대한 데이터가 있습니다. 아마도 여러분에게 가장 흥미로운 것은 필드 10이며 여기에는 기록 된 총 섹터 수가 포함됩니다. 섹터 크기가 512 바이트 인 scsi 디스크가있는 시스템에서 다음을 실행할 수 있습니다.

awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats

각 장치에 몇 메가 바이트가 기록되었는지 확인하십시오. 출력은 다음과 같습니다

sda 728.759
sda1 79.0908
sda2 649.668


4
섹터 크기는 #cat / sys / block / sda / queue / hw_sector_size 명령을 실행하여 찾을 수 있습니다
Antonio

@Antonio 감사합니다! 언제 추가되었는지 잘 모르겠습니다. 3.2에 있지만 2.6.18에는없는 것 같습니다.
sciurus

@sciurus 계산의 배후에있는 수학을 설명해 주시겠습니까? 당신은 부문 = 512의 크기에 대해 얘기하고 있지만 계산은 천이십사분의이 함께 읽기 값 구분된다
환류

@gyre 필드 10에는 0.5 킬로바이트 섹터 수가 기록되어 있습니다. 킬로바이트 수를 얻기 위해 2로 나눕니다. 그런 다음 1024로 나누면 메가 바이트로 변환됩니다.
sciurus

@antonio 즉 않는 기본적인 하드웨어에 사용되는 섹터의 크기를 표시하지만 AFAICT 커널 소스, 소스 iostat의 한 실험적인 테스트를 통해,은 / proc / diskstats의 "섹터"수가 항상 경우에도, 512 바이트를 말한다 hw_sector_size(다른 적어도 2.4 시리즈 이후). 참조 block/cfq-iosched.c특히, cfqg_stats_update_dispatch().

23

노트북에서 같은 문제로 고심하고 있었지만 매일 거의 재부팅하면 허용되는 답변이 도움이되지 않았습니다. SMART 속성 # 241 Total_LBAs_Written이 발생하는 Samsung mSATA SSD가 있습니다. 에 따르면 공식 문서 ,

총 크기 (바이트)를 계산하려면이 속성의 원시 값에 512B를 곱하십시오.

따라서 다음 명령은 SSD 디스크 (sdb)에 기록 된 총 TB를 제공합니다

sudo smartctl -A /dev/sdb | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" } '

HDD에서도 작동하므로 거의 모든 최신 하드 디스크에서 작동해야한다고 가정합니다.


3
아니요, 특정 SSD 드라이브 모델에만 존재합니다. 보편적이지 않습니다.
Michael Hampton

3
나는 당신의 방정식이 실제로 다음과 같이 더 정확한 숫자를 생성한다고 지적하고 싶었습니다 sudo smartctl -A /dev/sda1 | awk '/^241/ { print "TBW: "($10 * 512) * 1.0e-12, "TB" }'.
Jordon Bedwell

내 인텔 SSD의 특성은 동일하지만이라고 Host_Writes_32MiB합니다. 또한 속성 249가 NAND_Writes_1GiB있습니다. 따라서 각 SSD마다 다른 것으로 보입니다 (예 : mSATA 인텔 SSD에는 해당 속성이 없음)
reox

내 인텔 SSD Pro 5400 (SATA) Total_LBAs_Written에서 GB로 지정됩니다! 낮은 4714스마트가 보여주는 것을 이해할 수 없었습니다 . 그러나 Windows의 Intel SSD Toolbox를 보면 GB로 표시되었습니다.
MrCalvin

15

/ sys / fs / ext4 / $ DEVICE / lifetime_write_kbytes에서 ext4 파일 시스템에 기록 된 데이터 양을 확인할 수 있습니다.


그것은 내가 몰랐던 멋진 기능입니다! 우리 시스템의 대부분은 ext3과 VM을위한 일부 원시 LVM 파티션을 실행하고 있습니다. :)
badnews

ext3 (및 약간 더 적은 범위) ext4는 플래시에 쓰도록 설계되지 않았습니다. 위치 작성 횟수에 따라 장애가 발생하며 기존 파일 시스템에서는 핫스팟이 매우 빠르게 발전합니다. 제조업체가 인용 한 수치는 쓰기가 고르게 분산되어 있다고 가정하기 때문에 오해의 소지가 있습니다. JFFS2와 같은 파일 시스템은 SSD의 수명을 연장하도록 특별히 설계되었습니다.
symcbean 2019

2
@symcbean-현재 플래시 장치를 사용하면 문제가되지 않습니다. 모두 온보드 컨트롤러에웨어 레벨링 루틴이 내장되어 있습니다.
EEAA

1
@symcbean-두 종류의 플래시 장치가 있습니다. 메모리 기술 장치 (또는 MTD)는 플래시 메모리에 대한 직접 인터페이스를 제공합니다. 이들은 일반적으로 임베디드 장치에서 발견되며 JFFS2와 같은 파일 시스템입니다. 다른 종류의 플래시 장치는 플래시 블록을 FTL (Flash Translation Later) 뒤에 숨겨 일반 블록 장치처럼 보이게합니다. 이것이 SSD, USB 스틱 및 메모리 카드와 같은 소비자 기술이 구현되는 방식입니다. JFFS2와 같은 파일 시스템은 이것에 적합하지 않습니다. 대신 블록 장치 용으로 설계된 ext4와 같은 파일 시스템을 사용해야합니다.
sciurus

1
주의 : ext4 lifetime_write_kbytes 및 session_write_kbytes는 SSD 메모리 셀 쓰기를 대표하지 않습니다. SSD 자체가 SMART 속성 241를 통해 1TB 만보고 한 반면 ext4 lifetime_write_kbytes에 대해 15TB의 시스템 보고서 하나를 보았습니다. 컨트롤러는 마지막 소거 이후에 ​​닿지 않은 경우 사용 가능한 모든 블록을 반복적으로 소거하지 않습니다. tune2fs -l 출력이 비슷하게 잘못된 것으로 보입니다.
ʇsәɹoɈ

2

시도해 볼 수 있습니다 iostat. IO 및 CPU 사용량과 관련된 통계를 제공합니다. 매뉴얼을 살펴보십시오 man iostat.


나는 그것이 효과가 있다고 생각하지만 누적 바이트 총계를 제공 할 수있는 더 높은 수준의 무언가가 있기를 바랐습니다 :)
badnews

2

내 KINGSTON SEDC400S37480G의 경우 Ubuntu Server 14.04에서 다음 스크립트를 사용하여 TBW를 모니터링합니다. 매일 한 번씩 cron에서 실행합니다. 스크립트가 로그 파일로 출력됩니다.

작동하려면 calc가 필요합니다. 다음을 사용하여 calc를 설치하십시오.

apt-get install apcalc

스크립트 내용 :

echo "*** $(date -R) ***" >> /scripts/tbw/log.txt
tbw=$(cat /sys/fs/ext4/sda1/lifetime_write_kbytes)
TB=1000000000
echo TB written to sda1: >> /scripts/tbw/log.txt | calc $tbw / $TB >> /scripts/tbw/log.txt

출력합니다 :

*** Thu, 20 Jul 2017 03:02:51 +0300 ***
TB written to sda1:
    3.062138442

calc 대신 GNU bc를
Elton Carvalho
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.