문맥
NAS와 클라이언트 서버라는 두 개의 서버가 있습니다. 둘 다 소형 기계(Raspberry, OLinuXino)이며 동일한 전원 스트립에 연결됩니다(전원 버튼이 있음).
클라이언트 서버는 시작 시 NAS에서 NFS 볼륨을 마운트합니다.
질문
멀티탭을 켜면 두 서버가 동시에 시작됩니다. 그러나 클라이언트가 NFS 볼륨을 마운트하려고 하면 아직 NAS에서 사용할 수 없습니다.
그래서 수동으로 설치해야 하고 자동으로 설치하고 싶습니다.
나는 fstab을 사용하여 Debian Wheezy 배포판에 볼륨을 마운트합니다.
nas.local:/media/myshare /media/myshare nfs defaults 0 0
어떻게 해결할까?
그래서 ssh 명령을 호출하여 클라이언트에게 "NFS 볼륨을 마운트하세요. 이제 준비되었습니다!"라고 알리는 스크립트를 NAS에 추가할 수 있다고 생각했습니다.
ssh -i idFile login@clientServer 'sudo mount -a'
NAS 측에서 그런 것입니다.
질문
그러한 스크립트를 넣는 가장 좋은 장소는 어디입니까?
NFS 후크? 콜백 같은 거요?
추가 질문
아니면 이를 수행하는 또 다른 더 좋은 방법이 있습니까?
답변1
나는 여러 가지 이유로 실패를 방지하려고 노력합니다. cron 작업은 볼륨이 마운트되었는지 확인하고 그렇지 않은 경우 마운트하여 이를 수행합니다.
다음 답변을 사용하여 스크립트를 작성하겠습니다.bash를 사용하여 디렉토리가 설치되어 있는지 확인하세요.
생성 중인 bash 스크립트 내 설치의 경우 Giles의 답변을 사용하여 sudoers 파일을 수정하여 cron 스크립트가 sudo로 실행되도록 허용하세요.비밀번호를 묻지 않고 루트로 특정 프로그램을 어떻게 실행할 수 있나요?. 이는 설정에 따라 선택적 단계일 수 있습니다.
크론 작업을 설정합니다. 당신은 두 개를 원할 것입니다. 첫 번째는 정기적으로 설치 여부를 확인하고 그렇지 않은 경우 설치하는 것입니다. 이렇게 하면 둘 중 하나라도 독립적으로 실패하면 다시 온라인 상태가 됩니다. 두 번째는 시작 후 cron을 사용해야 합니다. 이 답변이 도움이 될 것입니다@reboot 후 1분 후에 Crontab 작업이 시작됩니다.
서버 측에서: 스크립트를 NFS 서비스 자체에 연결할 수 있습니다. 완료 시 잠시 대기한 후 실행되도록 서비스 스크립트를 편집할 수 있습니다. Bash 스크립트는 다음 형식을 따를 수 있습니다.
sleep 60 && my_mount_script.sh
systemd를 사용하면 기다릴 수 있습니다systemd는 다른 프로세스를 다시 시작/종료하거나 종료하기 전에 명령이 완료될 때까지 기다립니다.그러면 nfs.service가 시작됩니다. 교체에는 이전 부분을 제거하고 이후 서비스 이름을 nfs.service로 변경하는 것이 포함됩니다.