rootwait/rootdelay의 요점은 무엇입니까?

rootwait/rootdelay의 요점은 무엇입니까?

rootwaitrootdelay비동기적으로 감지되거나 USB를 통해 마운트되는 경우와 같이 파일 시스템을 즉시 사용할 수 없는 경우에 사용됩니다 . 문제는 root이것이 사실인지 아닌지가 bootarg에 따라 분명해야 한다는 것입니다. 그런데 파일 시스템이 나타날 때까지 기다려야 한다는 것을 커널이 자동으로 인식하지 못하는 이유는 무엇입니까? 이러한 종류의 자동화를 구현하는 데 방해가 되는 몇 가지 기술적 제한이 있습니까?

답변1

때때로 운영 체제는 느리게 응답하는 주변 장치와 존재하지 않거나 완전히 연결되지 않은 주변 장치를 구별할 수 없습니다. 가장 확실한 예는 네트워크(TFTP, NFS)의 루트 파일 시스템으로, 느린 네트워크 링크나 과부하된 서버를 끊어진 네트워크 링크나 충돌한 서버와 구별하기 어렵습니다. 시간 초과는 포기해야 할 시기를 커널에 알려줍니다.

이는 회전이 느린 디스크, 확인이 필요한 RAID 어레이 등에서도 발생할 수 있습니다. rootdelay장치를 사용할 수 없게 되더라도 즉시 포기하지 않도록 커널에 지시합니다. 커널은 SCSI 드라이브가 로컬 디스크인지 아니면 일종의 RAID 베이인지 알 수 있는 방법이 없습니다.

rootwait무기한 기다리겠다고 제안하십시오. 이것이 항상 바람직한 것은 아닙니다. 예를 들어, 일반 루트 파일 시스템이 응답하는 데 너무 오랜 시간이 걸리는 경우 시스템은 다른 루트 파일 시스템으로 폴백할 수 있습니다.

답변2

이런 오래된 질문을 다시 드려서 죄송합니다만, 최근에 제가 직접 조사하다가 이 글을 보게 되었습니다.

~에서내가 무엇을 찾을 수 있나요?, rootdelay실제로 수행하는 작업은 커널이 느린 장치에서 rootfs를 찾을 수 있도록 지정된 시간 동안 커널 시작을 지연시키는 것입니다. 따라서 이것을 설정하면 rootdelay=10시스템은 rootfs의 발견 여부에 관계없이 커널 부팅을 시도하기 전에 10초를 기다립니다.

반면에 rootwait(@Gilles가 지적했듯이) rootfs를 사용할 수 있을 때까지 무기한 기다린 다음 커널을 부팅하십시오.

전체적으로 시스템이 rootfs를 찾는 데 5초가 걸리고 이와 같이 설정하면 rootdelay=10 rootwait시스템은 10초를 기다린 후 즉시 시작됩니다. 시스템이 rootfs를 찾는 데 15초가 걸리면 rootdelay=10강제로 처음 10초를 기다린 다음 rootwait필요한 마지막 5초가 처리됩니다. 마지막으로 마지막 경우에 설정하지 않으면 rootwait시스템은 rootfs를 찾을 수 없기 때문에 10초 후에 부팅되지 않습니다.

관련 정보