서버에 새 디스크를 추가한 후 zpool을 사용할 수 없음(마운트 지점이 변경됨)

서버에 새 디스크를 추가한 후 zpool을 사용할 수 없음(마운트 지점이 변경됨)

두 개의 zpool을 사용하여 Proxmox를 실행하는 홈서버가 있습니다. 기존 풀을 더 작은 HDD로 교체하고 싶습니다. 하지만 두 개의 새로운 SATA HDD 중 하나를 플러그인하면 zpool이 작동하지 않습니다. 로그에는 중요한 디스크가 누락되었다고 나와 있습니다. 새 디스크를 발송하면 모든 것이 잘 작동합니다.

나는 나의새로운디스크가 에 마운트되었습니다 sda. 하지만 새 디스크가 연결되지 않은 경우 기존 zpool의 이전 디스크 중 하나도 마운트됩니다 sda. 이 충돌을 방지하려면 어떻게 해야 합니까? sdazpool의 이전 디스크용으로 예약된 것을 Linux에 알려야 하며 sdg새 디스크에 사용해야 합니다.

이런 행동이 일어날 수도 있다는 사실이 혼란 스럽습니다. 결과적으로 Linux는 Windows의 드라이브 문자와 같은 드라이브에 마운트 지점을 바인딩하지 않는 것 같습니다. 마운트 지점을 사용하는 것이 실수라고 생각하며 zpool에서 고유 식별자(UUID?)를 사용해야 합니다. 하지만 어떻게 할 수 있나요? 마운트 지점을 사용한 기존 zfs 풀이 있습니다.

답변1

문제에 대한 배경 지식

약간의 연구와 노력 끝에 zfs가 마운트 지점을 사용했다는 사실을 발견했습니다. 그래서 내 이론은 옳았습니다. 탑재 지점은 Windows의 드라이브 문자처럼 정적이지 않습니다. 대신 Linux에서는 부팅 중에 감지된 순서대로 할당합니다. 디스크를 추가하거나 제거하면 마운트 지점이 혼합될 수 있습니다.

간단한 예:

sda -> Drive #1
sdb -> Drive #2
sdc -> Drive #3

이제 새 드라이브 #4를 추가합니다. 다음과 같이 삽입할 수 있습니다.

sda -> Drive #1
sdb -> Drive #4
sdc -> Drive #2
sde -> Drive #3

마운트 지점에 의존한다면 이제 문제가 발생합니다. 시스템은 의 드라이브 #2를 예상했지만 sdb완전히 다른 드라이브(드라이브 #4)를 얻었습니다. 아치 위키에 따르면 이는 일반 부팅 중에도 발생할 수 있으며,없이HDD에 대한 모든 변경 사항.

우리는 무엇을 할 수 있나요?

글쎄, 이러한 마운트 지점을 사용하는 것은 나쁜 생각인 것 같습니다. 우리는 사용해야한다영구 블록 장치 이름 지정대신 udev를 사용하여 사용할 수 있습니다. 모든 최신 Linux 배포판에서 사용할 수 있습니다. 영구 블록 이름은 sda또는 같은 중립 이름을 사용하지 않습니다 sdb. 대신, 드라이브에 지속적으로 바인딩되는 일종의 이름을 생성합니다. 이는 Windows의 드라이브 문자와 유사합니다(예, 드라이브 문자는 블록 이름이 드라이브를 식별하는 파티션에 바인딩되어 있지만 둘 다 영구적입니다!).

by-id이 문제를 해결하는 데 가장 관련성이 높은 것 같지만 by-uuid다른 것들도 있습니다. 자세한 설명은 Arch의 링크된 위키 페이지에서 읽을 수 있습니다. 다른 배포판에도 적용할 수 있는 일반적인 기사입니다. 이 문제에서는 이것이 uuids일종의 생성된 고유 ID라는 것을 아는 것이 중요합니다 . 그리고 ids제조업체, 모델, 일련번호와 같은 HDD 특정 정보를 사용하고 있기 때문에 더 읽기 쉬운 대안으로 사용할 수 있습니다 .

ZFS

처럼여기에 설명되어 있습니다, 모든 풀을 내보낸 다음 다시 가져와야 했지만 스위치가 필요했습니다 -d. 장치를 찾을 위치를 zpool에 알려줍니다.

zpool export <poolname>
zpool import -d /dev/disk/by-id <poolname>

이를 사용하여 zpool status확인할 수 있습니다. 내보내기/가져오기 전에 /dev/sda장치와 같은 마운트 지점이 표시되어야 합니다. 해당 절차 후에는 디스크 ID로 변경되어야 합니다.

일반 볼륨(선택 사항)

나에게는 이것만으로는 충분하지 않았습니다. 추가로 HDD가 있습니다.완충기ISO 이미지와 같은 것들. 중요한 데이터는 없고 SSD를 완화하기 위한 용도로만 사용됩니다. 그래서 이것은 고전적인 ext3 볼륨이었습니다. 여기서도 정확히 동일한 문제가 발생하므로 서버가 부팅되지 않습니다. 새 디스크로 인해 마운트 지점이 변경되어 마운트가 실패하게 됩니다.

간단히 이 드라이브를 제거하여 이 문제를 해결했습니다. 어쨌든 이것은 내 생각이었습니다. 새 HDD는 충분히 크고 디스크 수가 적어서 에너지를 절약할 수 있기 때문입니다. 이렇게 하려면 /etc/pve/storage.cfg파일을 사용하여 proxmox에서 저장소를 제거해야 합니다. 내 경우 관련 부분은 다음과 같습니다.

dir: buffer
path /buffer
content iso

제거한 후 살펴보겠습니다 /etc/fstab. 이 파일은 /buffer근본 원인이 발생하는 볼륨을 마운트합니다.

/dev/sdf /buffer ext3 rw 0 0

보시다시피 마운트 지점이 /dev/sdf여기에 있습니다.나처럼 디스크를 거부하고 싶지 않다면 여기에서 고유한 마운트 지점을 사용하세요! 예를 들어 /dev/disk/by-id. 이는 영구 블록 장치 이름의 예입니다. 이는 장치 종속 데이터를 기반으로 생성됩니다. by-id예를 들어 하드웨어 일련 번호를 사용합니다. 그래서 우리는 두 개의 동일한 디스크를 장치할 수도 있습니다. 배경 정보는 첫 번째 단락에서 자세히 알아보세요.

내 경우에는 이 줄을 제거하면 Linux가 내 HDD를 마운트할 수 없습니다. 볼륨이 더 많은 경우 재부팅 후 문제가 발생하지 않도록 각 볼륨에 대해 해당 단계를 반복해야 합니다.

관련 정보