iSCSI 드라이브가 설치된 FreeBSD 10.2 서버가 있습니다. 이러한 드라이브가 재부팅 후에도 유지되도록 fstab에 자동으로 마운트되기를 원합니다.
내가 명령을 실행하면
mount /dev/da0p1 /mnt
완벽하게 작동합니다.
mount
/dev/ada0p2 on / (ufs, local, journaled soft-updates)
devfs on /dev (devfs, local, multilabel)
/dev/da0p1 on /mnt (ufs, local, soft-updates)
그러나 /etc/fstab
시스템에 항목을 넣으면 부팅 프로세스가 중지되고 해당 항목이 /dev/dap1
유효하지 않다는 메시지가 나타납니다. 이는 네트워크 및 iSCSI 서비스가 아직 시작되지 않았기 때문이라고 가정합니다.
내 /etc/fstab
파일 시스템에 "late" 옵션을 추가했지만 효과가 없습니다.
# cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ada0p2 / ufs rw 1 1
/dev/ada0p3 none swap sw 0 0
#User Added Entries
#/dev/da0p1 /mnt ufs rw,late 3 3
부팅 프로세스가 "파일 또는 디렉토리 /dev/da0p1이 없습니다. ls /dev/da*
해당 디렉토리에서 실행하면 표시됩니다. (아래 이미지 참조)
실제로 몇 가지 테스트를 거친 후 단일 사용자 모드에서 몇 초 정도 기다렸다가 프롬프트에 "exit"를 입력하면 시스템이 계속 부팅되고 드라이브가 정상적으로 마운트됩니다.
마운트가 실패하지 않도록 iscsi 장치를 생성할 수 있도록 5초 지연을 설정하는 방법이 있습니까?
답변1
면책조항: 이것이 맞는지 모르겠습니다.옳은해야 할 일이 있지만 이것이 나에게 효과적이었습니다.
따라서 네트워크 서비스 로드를 완료하고 무언가를 마운트할 수 있도록 iSCSI 마운트를 생성할 수 있도록 부팅 프로세스에 약간의 추가 시간이 필요합니다.
내가 한 일은 그것을 스크립트 sleep 5
에 추가하는 것뿐이었습니다./etc/rc.d/mountlate
# PROVIDE: mountlate
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: nojail
. /etc/rc.subr
name="mountlate"
start_cmd="mountlate_start"
stop_cmd=":"
mountlate_start()
{
local err latefs
sleep 5 <-------- Added this line
# Mount "late" filesystems.
#
err=0
나에게는 5초가 좋은 숫자인 것 같습니다. 마일리지는 다양할 수 있으며 다른 값을 테스트해야 합니다.
다시 말하지만, 이것이 이 특정 문제를 해결하는 올바른 방법인지는 모르겠습니다. 누구든지 더 낫거나 올바른 방법이 있으면 게시해 주세요.
답변2
현재 가장 좋은 솔루션(FreeBSD 11.0+ 필요)은 다음과 같습니다.
- fstab 항목에는 다음이 포함됩니다.
- "늦은" 옵션(부팅 프로세스 속도를 늦추지 않음)
- "failok" 옵션(iSCSI 연결 오류가 발생한 경우 단일 사용자 모드로 전환하지 않음)
- 덤프/패스 값이 0으로 설정됨
- iscsictl이 iscsi 연결을 기다리도록(최대 10초) rc.conf의 iscsictl_flags에 "-w 10"을 추가합니다.
/etc/fstab:
/dev/PARTITION.journal /mnt ufs rw,async,failok,late 0 0
/etc/rc.conf:
iscsictl_enable="YES"
iscsictl_flags="-Aa -w 10"
iscsid_enable="YES"
추신: 이유는 모르겠지만 iSCSI에서 GPT 레이블을 사용할 수 없습니다(생성 시에는 작동하지만 재부팅 시 레이블은 여기에 있습니다. "gpart show -l"로 표시되지만 /dev/gpt에서는 사용할 수 없음). /).
답변3
/etc/rc.d/mountlate에 절전 모드를 추가할 필요가 없다는 것을 알았습니다. 대신 /etc/fstab에서 덤프 번호를 0으로, fsck 패스 번호를 0으로 변경했습니다. fsck는 시작 시 실행되지 않지만 파티션은 마운트됩니다.
/dev/da0p1 /opt ufs rw,late 0 0