[unix] zpool이 Ubuntu Xenial에서 / dev / disk / by-id를 사용하도록 설정

Ubuntu 16.04 Xenial에서 번들로 제공되는 OpenZFS를 사용 해보고 있습니다.

풀을 만들 때 항상 복원력을 위해 드라이브를 직렬 /dev/disk/by-id/(또는 /dev/disk/gptFreeBSD)로 참조합니다 . /dev머신이 재부팅 될 때 드라이브가 항상 같은 순서로 정렬되는 것은 아니며 머신에 다른 드라이브가있는 경우 풀이 올바르게 마운트되지 않을 수 있습니다.

예를 들어 zpool status14.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를 들어. /dev/sdX먼저 장치를 사용 하여 zpool을 만든 후 다음을 수행하십시오.

$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN

나는 zpool create가능하다면 초기에 이것을 할 수 있기를 여전히 선호한다 .



답변

가끔씩 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 버그로 인한 것일 수 있으며 더 이상 필요하지 않습니다. 버그 보고서를 제출해야한다고 생각했지만 해결하기가 쉽지 않았습니다.


답변

이 스레드가 부실하다는 것을 알고 있지만 대답이 있습니다. 가져온 후 캐시 파일을 업데이트해야합니다. 이 예는 캐시 파일의 기본 위치를 보여줍니다.

$> 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


답변