Bem, você viu o código, que usa readdir
, o que não garante a ordem em que as entradas são lidas.
Mas isso não importa.
O ZFS não se importa se o nó do dispositivo é referido de uma forma ou de outra. O que importa é saber se os dados no disco estão acessíveis ou não. E se não for, então essa entrada de diretório específica não será candidata à importação do pool, então não faz diferença.
A única razão pela qual você se importa se deseja que um nome específico seja exibido na saída zpool status
. E, nesse caso, você não deve importar de / dev / disk / by-id (que, como você observou, tem várias maneiras de se referir à mesma partição), mas, ao invés disso, configura / etc / zfs / vdev_id. conf e depois importar de / dev / disk / by-vdev. (Você provavelmente precisará executar novamente udevadm trigger
.)
Geralmente, não se preocupe com os detalhes da implementação, a menos que você realmente tenha algum uso real dos detalhes da implementação, porque a próxima versão pode mudar completamente o comportamento que você está observando. Em vez disso, use as interfaces documentadas para obter o efeito desejado.
Isso poderia ter sido evitado se alguém colocasse o tipo em um componente de caminho separado, de modo que tivéssemos algo como / dev / disk / by-id / scsi / SATA_WDC_WD6001FSYZ-_WD-WXB1HB4SFS7W, / dev / disco / by-id / ata / WDC_WD6001FSYZ-01SS7B0_WD-WXB1HB4SFS7W e / dev / disk / by-id / wwn / 0x50014ee004032d28 em vez disso. Mas, infelizmente. Você poderia fazer isso em seu próprio sistema, mas isso confundiria todos os outros e seus scripts ...