iSCSI를 통해 원격 NAS에 호스팅된 LVM 볼륨에서 마운트된 파일 시스템을 사용하여 일부 Linux 서버를 가상화된 환경으로 마이그레이션하려고 합니다. 나는 그들을 시작할 수 있었고 아무런 문제 없이 완벽하게 실행되었습니다.
하지만 NAS 서버는 윈도우 기반이어서 마이크로소프트가 패치를 발표하면 자동으로 패치를 적용하고 재부팅한다. 다시 시작하면 모든 가상 서버의 파일 시스템이 오류를 감지하고 읽기 전용 모드로 전환됩니다. 읽기/쓰기로 다시 마운트하려고 했지만 커널이 파일 시스템을 쓰기 금지로 표시하여 실패했습니다. 제가 찾은 유일한 복구 방법은 virt를 종료하고 해당 LVM 볼륨을 fsck한 다음 다시 시작하는 것입니다.
virt는 다음 형식의 fstab 항목을 사용하여 이러한 LVM 볼륨을 마운트합니다.
/dev/xvda2 / ext3 noatime,nodiratime,errors=remount-ro 0 1
또는
/dev/xvda2 / ext4 errors=remount-ro 0 1
가상 호스트 운영 체제에는 이러한 중단에도 불구하고 읽기/쓰기 모드에서 계속 작동하는 NAS 서버의 LVM/iSCSI 마운트도 있습니다(동일한 볼륨 그룹에 있더라도). fstab 항목은 다음과 같습니다.
/dev/mapper/nas6-dom0 /mnt/nas6 ext4 _netdev 0 0
이로 인해 게스트에서 fstab 항목을 제거하면 내결함성이 제공될 것이라고 의심되지만 errors=remount-ro
이에 대해 약간 불안합니다. 파일 시스템에서 실제 오류가 발생하면 fs에 계속 쓰기를 허용하면 문제가 발생할 수 있습니다. 단기적으로는 더 나쁘다.
NAS가 재부팅된 후에도 가상 게스트가 계속 실행될 수 있도록 이 문제를 해결하는 모범 사례는 무엇입니까?
답변1
Recovery Timeout
연결이 설정된 후 실시간으로 매개변수를 변경하는 방법도 있습니다 .
echo 86400 > /sys/class/iscsi_session/session28/recovery_tmo
session28
세션 ID로 바꾸세요 .
답변2
~에 따르면iSCSI 문서 열기:
8.2 iSCSI 루트에 대한 iSCSI 설정
iSCSI 디스크를 통해 직접 루트 파티션에 액세스하는 경우 iSCSI 타이머는 iSCSI 계층이 세션을 다시 설정하려고 시도할 수 있는 기회를 여러 번 갖고 명령이 SCSI 계층에 빠르게 다시 대기열에 추가되지 않도록 설정해야 합니다. 기본적으로 원하는 것은 dm-multipath를 사용할 때 원하는 것과 반대입니다.
이 설정의 경우 다음 설정을 통해 iSCSI Ping을 끌 수 있습니다.
node.conn[0].timeo.noop_out_interval = 0
node.conn[0].timeo.noop_out_timeout = 0
replacement_timer를 매우 긴 값으로 설정할 수 있습니다.
node.session.timeo.replacement_timeout = 86400
기본 설정 replacement_timeout
은 120초이고 NAS 재부팅에는 2분 30초가 조금 넘게 걸렸습니다. 따라서 이 시간 초과가 지나면 iSCSI 세션과 보류 중인 모든 I/O 요청이 삭제되어 가상 서버의 디스크 장애가 발생하고 읽기 전용으로 전환됩니다. 방법.
위에 설명된 대로 시간 초과 설정을 변경하면 앞으로 최소한 최대 24시간 동안 NAS가 중단되는 상황이 발생하는 것을 방지할 수 있습니다. 하락세가 이보다 오래 지속된다면 어쨌든 처리해야 할 더 큰 문제가 있습니다.