Ubuntu 16.04 Xenial에 번들로 제공되는 OpenZFS를 사용하고 있습니다.
/dev/disk/by-id/
풀을 생성할 때 복원력을 위해 항상 일련 번호 (또는 /dev/disk/gpt
FreeBSD) 로 드라이브를 참조합니다 . 컴퓨터가 다시 시작되면 드라이브의 순서가 항상 동일하지는 않으며 /dev
컴퓨터에 다른 드라이브가 있는 경우 풀이 올바르게 탑재되지 않을 수 있습니다.
예를 들어 zpool status
14.04 시스템에서 실행하면 다음과 같은 결과가 나타납니다.
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HUA722020ALA330_[..] ONLINE 0 0 0
하지만 16.04에 다음(약어)을 사용하여 새 풀을 만들면:
zpool create pool raidz \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..]
나는 이것을 얻습니다 zpool status
:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdf ONLINE 0 0 0
sde ONLINE 0 0 0
sdd ONLINE 0 0 0
sda ONLINE 0 0 0
zpool은 심볼릭 링크를 참조하는 대신 심볼릭 링크를 따르는 것 같습니다.
풀을 생성할 때 16.04에서 zpool이 내 드라이브 참조를 따르도록 강제하는 방법이 있습니까? 아니면 그것이 여기서 무엇을 하고 있는지 의심하는 것이 잘못된 걸까요?
업데이트: 해결 방법
나단서를 찾았다Github의 zfsonlinux가 해결 방법을 제안했습니다. 먼저 장치로 zpool을 만든 /dev/sdX
후 다음을 수행하십시오.
$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN
zpool create
가능하다면 초기 버전에서도 이 작업을 수행하고 싶습니다.
답변1
이 게시물이 약간 오래되었다는 것을 알고 있지만 답변이 있습니다. 가져온 후에는 캐시 파일을 업데이트해야 합니다. 이 예에서는 캐시 파일의 기본 위치를 보여줍니다.
$> sudo zpool export POOL
$> sudo zpool import -d /dev/disk/by-id POOL
$> sudo zpool import -c /etc/zfs/zpool.cache
$> sudo zpool status POOL
NAME STATE READ WRITE CKSUM
POOL ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HUA722020ALA330_[..] ONLINE 0 0 0
답변2
WWN 처리
$ cd /dev/disk/by-id/
$ ls -l
… ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M5ZUJ4XE -> ../../sde
… ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M5ZUJ4XE-part1 -> ../../sde1
… ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M5ZUJ4XE-part9 -> ../../sde9
…
… wwn-0x50014ee2628c2228 -> ../../sde
… wwn-0x50014ee2628c2228-part1 -> ../../sde1
… wwn-0x50014ee2628c2228-part9 -> ../../sde9
드라이브 또는 드라이브 파티션은 by-id
브랜드, 모델 이름 및 일련 번호를 기반으로 한 ID 외에도 이제 ID를 가질 수 있습니다 wwn-
. 이것은 독특하다WWN(월드와이드 이름)드라이브 하우징에도 인쇄되어 있습니다.
두 가지 유형의 ID 모두 ZFS에서 제대로 작동하지만 WWN 정보는 덜 명확합니다. 이러한 WWN ID가아니요프로덕션 시스템(아직 내보내지 않은 루트 파티션 또는 ZFS 등)에서 참조하는 이러한 항목은 를 사용하여 간단히 삭제할 수 있습니다 sudo rm wwn-*
. 저를 믿으세요. 제가 해냈습니다. 아무것도 잘못될 수 없어ZFS가 내보낸 상태인 경우그렇게 하기 전에.
결국 WWN ID는 sd
드라이브 감지 중에 생성된 장치에 대한 심볼릭 링크일 뿐입니다. 시스템이 다시 시작되면 자동으로 다시 나타납니다. 내부적으로 Linux는 항상 sd
장치를 참조합니다.
$ sudo zpool export pool0
$ sudo rm wwn-*
$ sudo zpool import -d /dev/disk/by-id/ pool0
여기에서 찾아보세요더 많은 ZFS가 풍부합니다!
답변3
가끔 사용해봤는데 zpool import -d /dev/disk/by-id
별 효과가 없었어요.
나는 하나 이상의 설정에서 이것을 발견했습니다. 몇 가지 마법 논리를 수행하고 물리적으로 연결된 ZFS 장치를 표시하는 것 외에도 기본적으로 다음을 수행하는 가져오기 스크립트가 있습니다.
zpool import -d /dev/disk/by-id POOL
zpool export POOL
zpool import POOL
두 번째에는 스위치가 없어도 -d
처음에 명시적인 명령을 사용하지 않았더라도 장치 ID로 가져옵니다.
이는 더 이상 필요하지 않은 몇 주 또는 몇 달(1~2년 전)의 ZFS 버그로 인한 것일 수 있습니다. 버그 보고서를 제출해야 할 것 같지만 이 문제를 해결하는 것은 간단합니다.