두 개의 디스크에서 LVM RAID 1을 실행하고 있습니다. lvs
내 VG에 대해 알려주는 내용은 다음과 같습니다 .
root@picard:~# lvs -a -o +devices,lv_health_status,raid_sync_action,raid_mismatch_count
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Health SyncAction Mismatches
lv-data vg-data rwi-aor-r- 2.70t 100.00 lv-data_rimage_0(0),lv-data_rimage_1(0) refresh needed idle 0
[lv-data_rimage_0] vg-data iwi-aor-r- 2.70t /dev/sda(0) refresh needed
[lv-data_rimage_1] vg-data iwi-aor--- 2.70t /dev/sdb(1)
[lv-data_rmeta_0] vg-data ewi-aor-r- 4.00m /dev/sda(708235) refresh needed
[lv-data_rmeta_1] vg-data ewi-aor--- 4.00m /dev/sdb(0)
에 문제가 발생한 것 같습니다 /dev/sda
. 해당 디스크의 SMART 로그가 괜찮아 보이므로 일시적인 현상이기를 바라며 RAID를 새로 고치거나 다시 동기화하고 싶습니다. 내가하는 일은 다음과 같습니다.
root@picard:~# lvchange --refresh vg-data/lv-data
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
(…wait for a couple of minutes…)
root@picard:~# lvs -a -o +devices,lv_health_status,raid_sync_action,raid_mismatch_count
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Health SyncAction Mismatches
lv-data vg-data rwi-aor-r- 2.70t 100.00 lv-data_rimage_0(0),lv-data_rimage_1(0) refresh needed idle 0
[lv-data_rimage_0] vg-data iwi-aor-r- 2.70t /dev/sda(0) refresh needed
[lv-data_rimage_1] vg-data iwi-aor--- 2.70t /dev/sdb(1)
[lv-data_rmeta_0] vg-data ewi-aor-r- 4.00m /dev/sda(708235) refresh needed
[lv-data_rmeta_1] vg-data ewi-aor--- 4.00m /dev/sdb(0)
그럼 아무 일도 일어나지 않았나요? 내 dmesg는 RAID 복구를 시도했음을 나타냅니다.
[150522.459416] device-mapper: raid: Faulty raid1 device #0 has readable super block. Attempting to revive it.
글쎄요, 문지르는 것이 도움이 될까요? 시도해 봅시다:
root@picard:~# lvchange --syncaction repair vg-data/lv-data
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
root@picard:~# lvs -a -o +devices,lv_health_status,raid_sync_action,raid_mismatch_count
/run/lvm/lvmetad.socket: connect failed: No such file or directory
WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Health SyncAction Mismatches
lv-data vg-data rwi-aor-r- 2.70t 100.00 lv-data_rimage_0(0),lv-data_rimage_1(0) refresh needed idle 0
[lv-data_rimage_0] vg-data iwi-aor-r- 2.70t /dev/sda(0) refresh needed
[lv-data_rimage_1] vg-data iwi-aor--- 2.70t /dev/sdb(1)
[lv-data_rmeta_0] vg-data ewi-aor-r- 4.00m /dev/sda(708235) refresh needed
[lv-data_rmeta_1] vg-data ewi-aor--- 4.00m /dev/sdb(0)
여기에는 몇 가지 이상한 점이 있습니다.
- 즉 , 스크러빙이 즉시 완료된 것처럼 보입니까
SyncAction
?idle
- 스크러빙이 완료되면,그리고어레이를 여전히 새로 고쳐야 하는데 어떻게 불일치 개수가 여전히 0일 수 있습니까? 스크러빙을 통해 불일치를 감지하고 이를 수정하거나(예: "새로 고침 필요" 상태 지우기) 불일치 수를 0이 아닌 값으로 올려야 합니까?
dmesg 말한다:
[150695.091180] md: requested-resync of RAID array mdX
[150695.092285] md: mdX: requested-resync done.
그것은 또한 스크러빙이 실제로 아무 것도하지 않은 것처럼 보입니다.
질문
- 실제 스크러빙을 호출하려면 어떻게 해야 합니까?
- 드라이브에 결함이 없다고 가정할 경우, 어레이를 어떻게 새로 고치나요?
- 드라이브에 결함이 있는 경우(예: 새로 고침 시 즉시 오류가 발생하는 경우) - 이를 어떻게 알 수 있습니까? dmesg가 일부 I/O 오류를 표시해야 한다고 가정합니까? (하나도 안 보이는데...)
시스템 정보
저는 Ubuntu 16.04.4 LTS를 기반으로 Armbian을 실행하고 있습니다. LVM 버전:
root@picard:~# lvm version
LVM version: 2.02.133(2) (2015-10-30)
Library version: 1.02.110 (2015-10-30)
Driver version: 4.37.0