FreeBSD: devfs에서 심볼릭 링크 제거

FreeBSD: devfs에서 심볼릭 링크 제거

배경

저는 작은 가정용 NAS를 재구축하고 있습니다. 이 서버는 서버 관리에 대한 나의 첫 번째 "실제" 진출을 의미하며 많은 것을 가르쳐주었습니다. 원래 이 것은 raidz1의 3개 디스크로 구성된 썸 드라이브에서 FreeNAS를 사용하여 설정되었습니다. 그 이후로 저는 시스템을 더 잘 제어하고 "직접 수행"하는 방법을 배우기 위해 전체 시스템을 FreeBSD 9.0(안정 버전)으로 마이그레이션하기로 결정했습니다. 모든 것이 순조롭게 진행되었으며, OS가 성공적으로 설치 및 업데이트되었습니다(플래시 남용을 방지하기 위해 썸 드라이브, RW, 액세스 시간 및 기타 몇 가지 사항이 비활성화되었습니다).

이제 다시 raidz1을 사용하여 디스크 저장소를 설정하고 있습니다. 이를 위해 보관하고 싶은 모든 파일을 외부 저장소에 복사했습니다. 다양한 zfs 명령을 탐색하는 동안 FreeNAS 설치의 원래 zpool이 여전히 표시된다는 것을 발견했습니다. 다음을 사용하여 풀을 가져오고 업그레이드했습니다.

# zpool import ZFS1 tank   //Import the original zpool 'ZFS1', renaming it 'tank'
# zpool upgrade tank       //FreeNAS uses an older ZFS version, FreeBDS is v28
# zfs mount tank

그리고 내 파일을 다시 볼 수 있었습니다. 육수. 몇 가지 탐색을 거친 후, 나는 오래된 수영장을 버리고 다시 시작하기로 결정했습니다. 나는 보낸다

# zfs umount tank
# zpool destroy tank

오류 없이 완료되었습니다. 이제 이 디스크를 사용하여 "깨끗한" raidz1을 다시 만들고 싶습니다.

질문

새로운 raidz1을 만들기 전에, /dev나는 무엇을 배울 수 있는지 알아보기 위해 RAIDZ1에 대해 몇 가지 조사를 했습니다. 어레이에 사용된 디스크를 확인하고 싶지만 출력 결과가 이상해 보입니다. 더 나쁜 것은 Google 검색이 실제로 무슨 일이 일어나고 있는지 설명하지 않는다는 것입니다. 디스크 목록은 다음과 같습니다.

# ls -l ad*
lrwxr-xr-x  1 root  wheel            4 Aug 12 20:50 ad2 -> ada2
lrwxr-xr-x  1 root  wheel            4 Aug 12 20:50 ad4 -> ada0
lrwxr-xr-x  1 root  wheel            4 Aug 12 20:50 ad6 -> ada1
crw-r-----  1 root  operator    0,  96 Aug 12 20:50 ada0
crw-r-----  1 root  operator    0,  98 Aug 12 20:50 ada1
crw-r-----  1 root  operator    0, 100 Aug 12 20:50 ada2

저는 Raid를 설정할 때 FreeNAS에서 3개의 가상 디스크를 생성했다는 것을 알고 있으며, 그것이 링크의 출처인 것으로 의심됩니다. 이에 대한 나의 질문은 다음과 같습니다.

  1. 심볼릭 링크의 작동 방식을 검색하면서 심볼릭 링크는 단지 한 프로젝트를 다른 프로젝트에 연결하는 파일일 뿐이라는 것을 알게 되었습니다. 이 경우 ada* 장치가 "l" 속성으로 나열되지 않고 실제 하드웨어 장치가 다른 속성(아마도 블록 장치)으로 나열되지 않는 이유는 무엇입니까?

  2. 이 링크는 이전 설정의 결과입니다.생각하다필요한. 삭제할 수 있나요? 그렇다면 어떻게 할까요(무작위로 삭제하는 것이 조금 두렵습니다. 리소스 섹션의 마지막 링크를 참조하세요). 항목을 삭제하면 존재하지 않는 링크를 참조하기 때문에 노드가 ad*암시적으로 삭제 됩니까? ada*아니면 이런 회귀가 있습니까?

  3. 실제 하드웨어 장치는 무엇입니까? 이전 질문에서 언급했듯이 ad*노드는 문자 장치 또는 이와 유사한 것이고 ada*노드는 링크된 파일이 될 것이라고 생각했습니다.

  4. 마지막으로, 설정과 개인 선호도에 따라 분명히 약간의 차이가 있다는 것을 알고 있습니다. 하지만 간단한 raidz1용으로 SATA 장치를 구성하는 "허용되는" 방법은 무엇입니까? 간단한 가정용 NAS의 경우 이 모든 심볼릭 링크 사업은 과잉처럼 보일 수 있습니다.

이렇게 긴 글을 올려서 죄송합니다만, 저는 오랫동안 이 내용을 이해하려고 노력해 왔습니다. 귀하의 시간과 도움에 미리 감사드립니다.

인용하다

답변1

  1. ada장치는 최신 SATA 포트에 연결된 드라이브입니다. 일부 사람들은 메모를 놓쳤기 때문에 DevFS는 기존 장치처럼 이러한 장치 이름에 대한 심볼릭 링크를 제공하도록 수정되었습니다 ad. 그러나 시스템에 이미 일부 이전 SATA 포트나 IDE 포트가 있을 수 있으므로 이러한 포트는 더 낮은 ad장치 번호(ad0, ad1 등)를 차지합니다. 따라서 매핑된 ada장치는 더 높은 숫자를 갖게 됩니다.

    참고: 아직 깨닫지 못했다면 /dev이는 다른 유형의 파일 시스템(파일 시스템 개발). 이는 심볼릭 링크와 같은 단순한 구조를 보여주지만 여러분이 생각하는 의미에서 실제 심볼릭 링크는 아닙니다.

  2. 전제가 잘못되었습니다. #1을 참조하세요.
  3. l( 당신이 지적했듯이) 심볼릭 링크라고 말하지 않는 것은 장치 드라이버입니다. 소프트웨어가 장비를 제공할 수도 있으므로 "진정성" 정도는 다양합니다.
  4. 내 생각에 "가장 좋은" 접근 방식은 GPT 파티션을 사용하고, 합리적인 이름을 부여하고, 이러한 명명된 파티션을 raidz의 vdev로 포함시키는 것입니다.

    다음과 같은 것이 트릭을 수행합니다.

    gpart create -s GPT ada0
    gpart create -s GPT ada1
    gpart create -s GPT ada2
    
    gpart add -t freebsd-zfs -l tank-disk0 ada0
    gpart add -t freebsd-zfs -l tank-disk1 ada1
    gpart add -t freebsd-zfs -l tank-disk2 ada2
    
    zpool create tank raidz /dev/gpt/tank-disk0 /dev/gpt/tank-disk1 /dev/gpt/tank-disk2
    

    그렇지 않으면 디스크를 ZFS에 직접 전달하는 것이 가장 좋습니다. 두 구성 모두에 대한 지지자가 있습니다. 이 경로를 사용하는 경우 smartd디스크 상태 모니터링도 설정하는 것이 좋습니다 . 또한 periodiczpool을 청소하고 SMART를 모니터링하며 정기적으로(매주 또는 원하는 시간에) 보고서를 보내도록 구성할 수도 있습니다 .

그건 그렇고, FreeNAS 및 기타 FreeBSD 파생 프로젝트를 사용하면 단순히 핵심 운영 체제를 파헤치는 것보다 FreeBSD 작업이 훨씬 쉬워집니다.수동설정하려는 대부분의 항목에 대해 안내를 받게 되지만 시간이 지남에 따라 몇 가지 문제에 직면하게 됩니다. Google에서 "핸드북"을 검색하는 경우 FreeBSD 핸드북이 두 번째 링크입니다. 매우 중요하고 인기 있고 좋습니다.

참조에 대한 추가 참고 사항입니다. 첫 번째는 나쁜 예입니다. 네트워크 카드를 심볼릭 링크하면 안 되므로 이름을 바꿔야 합니다(파일 시스템 유형 이름 바꾸기는 아님). DevFS는 대부분 예상한 대로 연결 및 연결 해제 요청에 응답합니다. 두 번째와 세 번째 참조는 좋아 보입니다. 심볼릭 링크보다 더 많은 유형의 링크가 있다는 점을 명심하세요.

관련 정보