내 서버에는 3개의 동일한 SATA/600 3TB 드라이브( /dev/sda
, /dev/sdb
, )가 있습니다 /dev/sdc
. 드라이브는 GPT를 사용하여 파티션이 나누어져 있으며 각 드라이브에는 세 개의 파티션이 있습니다.
- 1MB: 부트로더용으로 예약된 파티션
- 1GB: RAID1 /dev/md0( ext2( /boot ) )
- 3TB: RAID1 /dev/md1(암호화된 볼륨(LVM(볼륨 그룹(스왑, /, /etc, /home...)))))
세 개의 드라이브 중 하나는 핫 스페어이고 나머지 두 개의 드라이브는 RAID 세트에서 활성화됩니다. 제대로 작동하며 단일 하드 드라이브를 분리한 후 부팅할 수 있습니다. 나는 사용하고 싶다smartd (smartmontools의 일부)드라이브 상태를 모니터링하고 시스템 로그에 오류를 보고합니다(저는로그 확인). 서버는 가능한 최고 수준의 가용성을 가져야 하지만 테스트 중 성능 저하가 허용됩니다.
출력은 다음과 같습니다 smartctl -a /dev/sda
.
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-4-amd64] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model: WDC WD30EZRX-00MMMB0
Serial Number: WD-WMAWZ0412093
LU WWN Device Id: 5 0014ee 2b19fbdcd
Firmware Version: 80.00A80
User Capacity: 3,000,592,982,016 bytes [3.00 TB]
Sector Sizes: 512 bytes logical, 4096 bytes physical
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Fri Sep 27 15:37:25 2013 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: (50280) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 255) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x3035) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 148 148 021 Pre-fail Always - 9575
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 95
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 820
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 93
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 65
193 Load_Cycle_Count 0x0032 196 196 000 Old_age Always - 12824
194 Temperature_Celsius 0x0022 119 116 000 Old_age Always - 33
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 787 -
# 2 Extended offline Completed without error 00% 727 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
오프라인 테스트를 지원하는 것 같습니다. 을 발행하면 smartctl -o on
디스플레이 smartctl -c
가 Offline data collection status
이미 로 설정되어 있습니다 (0x82)
. smartctl -o off
동일한 값을 방출하면 가 됩니다 (0x02)
.
start_smartd=yes
설정을 통해 서버를 시작하도록 smartd를 설정했습니다 /etc/default/smartmontools
. /etc/smartd.conf
이 서버를 편집하여 smartd를 구성하는 것을 어떻게 제안합니까 ? 사용하는 각 매개변수와 그런 방식으로 사용하는 이유를 설명하세요.
현재 설정을 답변으로 추가하겠습니다. 자유롭게 활용하시고 자신의 답변에 개선해 주시기 바랍니다. 동일한 설정을 사용하는 더 나은 설명도 개선이 될 것입니다!
답변1
나는 오랜 자기 검토에서 select,cont
테스트로 전환했습니다. 긴 자체 테스트와 비슷하지만 한 번에 디스크 하나씩입니다. 따라서 긴 자체 테스트는 하루 이상 걸릴 수 있지만(사용량이 많은 3TB 디스크의 경우) 선택적 테스트는 서버가 가장 사용량이 적은 매일 밤에 실행되어 바쁜 시간에 성능을 저하시키지 않고 실제로 완료할 수 있습니다.
따라서 기본적으로 전체 디스크에 대해 매월 장기 자체 테스트를 수행한 다음 한 달 동안 전체 디스크를 대상으로 야간 선택적 테스트를 수행합니다.
하지만 그러기 위해서는 약간의 준비가 필요합니다.
smartd
--savestates
일반적으로 디스크 자체는 테스트된 마지막 영역을 추적하지 않기 때문에 이 옵션을 실행해야 합니다 .- 매일 테스트할 슬라이스 크기를 확인
-t select,0-$size
하려면 첫 번째 선택적 자체 테스트( )를 수동으로 시작해야 합니다 .smartd
크기에 따라 테스트에 걸리는 시간과 전체 디스크에 대한 테스트 기간이 결정됩니다. - 선택한 $size가 디스크 크기와 일치하는지 확인하세요. 그렇지 않으면 슬라이스로 끝날 위험이 매우 적습니다(최악의 시나리오는 디스크의 단일 섹터만 테스트하는 데 하루를 낭비하는 것입니다).
- 이 정보가 실제로 savestates 파일에 저장되었는지 확인해야 합니다. 때로는 그렇지 않은 경우 테스트가 원하는 방식으로 실행되지 않기 때문입니다. (savestate 파일을 직접 편집하는 것도 옵션입니다).
smartd.conf
파일의 구문은 다음과 같습니다-s c/../.././01
(이 경우 매일 오전 1시에 실행됩니다).
그러나 일단 완료되면 프로세스는 자동으로 안정적으로 진행됩니다. 디스크 끝에 도달하면 자동으로 다음 날부터 시작됩니다. 테스트 smartctl
에 대한 select,cont
맨페이지를 읽어보세요 .
장기 또는 선택적 테스트도 훌륭하지만 단기 또는 전체 평가 테스트도 실행해야 합니다. 이는 짧은 시간만 소요되며 일반적인 문제를 감지하는 데 도움이 될 수 있습니다.
답변2
다음 줄을 사용하여 정기적인 자체 테스트를 실행하도록 모든 서버를 구성했습니다 /etc/smartd.conf
.
# DEVICESCAN matches all hard disks found in /dev/ and applies the following
# options to them.
#
# Default options from Debian:
# -d removable don't exit when the device when a device vanishes
# -n standby don't wake a device up that is sleeping
# -m root send error reports to root
# -M exec ... pipe the mail through that script
#
# Our options:
# -s L/../02/./17 run a long selftest on every 2nd of every month
# at 17 o'clock
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner -s L/../02/./17
제 생각에는 자가 테스트는 SMART가 제공하는 가장 신뢰할 수 있는 상태 점검 유형입니다.
편집하다:
-d removable
그것이 무엇인지 설명해 주실 수 있나요 ?
에서 man smartd.conf
:
removable - the device or its media is removable. This indi‐
cates to smartd that it should continue (instead of exiting,
which is the default behavior) if the device does not appear to
be present when smartd is started. This Directive may be used
in conjunction with the other ´-d´ Directives.
smartd
모니터링 중인 디스크 중 하나가 사라지면 사망을 방지할 수 있다고 생각했는데 ...? 잘 모르겠습니다. 방금 -s L/../02/./17
해당 부분을 줄에 추가했습니다. 원래 라인:
DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner
이것이 데비안의 기본 설정입니다.
답변3
# DEVICESCAN For all disks with SMART capabilities.
#
# -o off Turn off automatic running of offline tests. An offline test
# is a test which may degrade performance.
#
# -n standby Do not spin up the disk for the periodic 30 minute (default)
# SMART status polling, instead wait until the disk is active
# again and poll it then.
#
# -W 2 Report temperature changes of at least 2 degrees celsius since
# the last reading. Also report if a new min/max temperature is
# detected.
#
# -S on Auto save attributes such as how long the disk has been powered
# on, min and max disk temperature.
#
# -s (L/../.[02468]/1/04|S/../.[13579]/1/04)
# '-------a--------' '--------b-------'
#
# a: Long test on even monday mornings at 04:00
# b: Short test on uneven monday mornings at 04:00
DEVICESCAN -o off -n standby -W 2 -S on -s (L/../.[02468]/1/04|S/../.[13579]/1/04)
답변4
저는 일반적으로 시스템별(옵션 포함)이 아닌 드라이브별로 정의되는 이 간단한 검사를 사용합니다. DEVICESCAN
전반적인 SMART 상태를 확인하고 마지막 SMART 테스트 이후 보류 중인 섹터 재할당이 있는지 여부와 관심 있는 오류 섹터가 있는지 여부를 확인합니다. 의심스러운 사건은 나의 스마트 통합 주소로 발송됩니다:
/dev/sda -H -C 0 -U 0 -m [email protected]
일부 시스템에서는 특정 날짜에 자동으로 실행되도록 SMART 자체 테스트를 정의했습니다. 이 사양은 매주 일요일 자정 이후 두 드라이브에서 장기 테스트를 실행하는 것을 정의합니다(그러나 동시에는 아닙니다. 자정부터 오전 1시 사이, 그리고 오전 2시에 시작).
/dev/sda -a -s L/../../7/00 -m [email protected]
/dev/sdb -a -s L/../../7/02 -m [email protected]