Hoje estourou um fusível que desligou um pequeno servidor.
Este servidor tem um USB-HDD conectado a ele, mas desde que o conectei cerca de 3-4 meses atrás, nunca desliguei o servidor totalmente (sem eletricidade), mas apenas emiti um arquivo sudo reboot
.
Este USB-HDD estava listado em /dev/sdc
, então eu tinha uma partição montada via sudo mount /dev/sdc1 /media/hdd5-usb-1
.
Há também um SSD montado em , para que a aparência /dev/sdb
correta seja a seguintefdisk -l
Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000ece66
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 499711 497664 243M 83 Linux
/dev/sda2 501758 500117503 499615746 238.2G 5 Extended
/dev/sda5 501760 500117503 499615744 238.2G 8e Linux LVM
Disk /dev/sdb: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CD3F3DA1-2901-45A0-B6E9-2BEEA36F3E78
Device Start End Sectors Size Type
/dev/sdb1 2048 1000214527 1000212480 477G Linux filesystem
Disk /dev/mapper/n3150--vg-root: 222.4 GiB, 238769143808 bytes, 466345984 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/n3150--vg-swap_1: 15.9 GiB, 17028874240 bytes, 33259520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdc: 4.6 TiB, 5000981077504 bytes, 9767541167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 0B9E1A83-476F-47AE-8234-2D29497F55CA
Device Start End Sectors Size Type
/dev/sdc1 2048 9767541133 9767539086 4.6T Linux filesystem
Após a queda de energia e a seguinte inicialização automática do servidor as entradas ficaram assim:
Disk /dev/sda: 4.6 TiB, 5000981077504 bytes, 9767541167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 0B9E1A83-476F-47AE-8234-2D29497F55CA
Device Start End Sectors Size Type
/dev/sda1 2048 9767541133 9767539086 4.6T Linux filesystem
Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000ece66
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 499711 497664 243M 83 Linux
/dev/sdb2 501758 500117503 499615746 238.2G 5 Extended
/dev/sdb5 501760 500117503 499615744 238.2G 8e Linux LVM
Disk /dev/sdc: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CD3F3DA1-2901-45A0-B6E9-2BEEA36F3E78
Device Start End Sectors Size Type
/dev/sdc1 2048 1000214527 1000212480 477G Linux filesystem
Disk /dev/mapper/n3150--vg-root: 222.4 GiB, 238769143808 bytes, 466345984 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/n3150--vg-swap_1: 15.9 GiB, 17028874240 bytes, 33259520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Obviamente, isso teve alguns problemas bastante desagradáveis, já que o banco de dados no SSD no esperado /dev/sdb1
~ de /media/ssd1
repente foi apresentado a partição de inicialização, e o que se acreditava ser o HDD USB era na verdade o SSD montado.
Como posso evitar que algo assim aconteça novamente? Como posso "fixar" um hardware em uma /dev/sd*
entrada específica?
Você não deve tentar obter um
/dev/sdX
nome fixo. Você não deve usar esse nome diretamente.O que você deve fazer é referenciar seu disco (ou partição do disco) por um identificador autodetectado fornecido em
/dev/disk/
. Entre as opções disponíveis,/dev/disk/by-id/
tem entradas vinculadas ao número de série de um dispositivo de disco. Assim, mesmo dois discos idênticos podem ser diferenciados sem ambiguidade. Observe que todas as entradas na/dev/disk/
árvore são apenas links simbólicos para as/dev/sdX
entradas reais, mas como você descobriu, elas podem ser dinâmicas: a ordem de aparição ou detecção no sistema importa para/dev/sdX
, não importa para/dev/disk/
(ou pelo menos para/dev/disk/by-id/
).Algumas das entradas têm uma
/etc/fstab
sintaxe equivalente.LABEL= UUID= PARTUUID= PARTLABEL=
corresponder ao seu equivalente/dev/disk/by-{label,uuid,partlabel,partuuid}/
. Aqui está o que a página defstab(5)
manual diz:Aqui está uma página wiki interessante do Archlinux sobre essas entradas:
https://wiki.archlinux.org/index.php/Persistent_block_device_naming