FreeBSD 10에서 부팅 시 자동으로 iSCSI 파티션 마운트

FreeBSD 10에서 부팅 시 자동으로 iSCSI 파티션 마운트

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

관련 정보