Eu conheço o programa e2label and friends para anexar um rótulo a uma partição de disco, por exemplo
e2label /dev/sda1 bla
O que eu quero fazer é algo diferente: quero criar um rótulo para um disco rígido, ou seja, para/dev/sda, não para uma partição.
Isso é possível e se sim, como?
EDIT: Background: Em um caso com múltiplas baias de HD eu gostaria de colocar etiquetas (de papel) na porta da baia física e colocar a mesma etiqueta logicamente no disco que coloquei lá.
EDIT2: Trata-se do servidor Ubuntu Linux 12.04.
EDIT3: Nas partições GPT existe também o partlabel, que pode ser definido com, por exemplo, parted. Verhttps://serverfault.com/q/681088/76442
Responder1
Sua pergunta inicial já tem algumas boas respostas, então vou me concentrar no contexto da sua pergunta, rotulando os discos.
Eu uso o número de série da unidade para imprimir etiquetas para baias hot swap - é a melhor maneira de identificar a unidade de maneira única e consistente. Ele não mudará independentemente de qual compartimento ou controlador estiver conectado.
Você não menciona se está usando Linux ou algum outro Unix, mas no Linux você pode obter uma lista de discos (e partições, que queremos excluir) com sua marca, modelo e número de série olhando no / diretório dev/disk/by-id/. Acho o seguinte alias do bash útil para isso:
alias list_disks='find /dev/disk/by-id/ -iname 'scsi-*' | grep -v -- -part | while read disk ; do echo $(readlink $disk | sed -e s:../../:: ) $(basename $disk); done'
(a correspondência para scsi-*
encontrar todas as unidades "semelhantes a scsi", incluindo unidades SATA e SAS. em sistemas apenas com unidades SATA, ata-*
também funcionaria)
por exemplo, em um dos meus sistemas de servidor ZFS, ele produz uma saída como esta:
# list_disks | organizar sdb scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2195141 sdc scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2114122 sdd scsi-SATA_ST31000528AS_9VP4P4LN sde scsi-SATA_ST31000528AS_6VP3FWAG sdf scsi-SATA_ST31000528AS_9VP509T5 sdg scsi-SATA_ST31000528AS_9VP4RPXK sdh scsi-SATA_OCZ-VECTOR_OCZ-0974C023I4P2G1B8 sdi scsi-SATA_OCZ-VECTOR_OCZ-8RL5XW08536INH7R sdj scsi-SATA_ST31000528AS_9VP18CCV sdk scsi-SATA_WDC_WD10EARS-00Y_WD-WMAV50933036
Como você pode ver, a listagem /dev/disk/by-id inclui a marca e o número do modelo de cada unidade, bem como o número de série. São todas unidades SATA conectadas a portas SATA ou portas SAS em um controlador LSI SAS-2008.
Se eu tivesse uma impressora de etiquetas conectada, seria fácil imprimir etiquetas com base na saída do arquivo list_disks
. Em vez disso, usei um antigo gravador de etiquetas manual porque era o que eu tinha. As etiquetas impressas contêm apenas o número de série sem a marca/modelo (é o suficiente para eu identificar o drive quando preciso). As etiquetas são muito úteis quando uma unidade falha e precisa ser substituída.
Responder2
Se estamos falando de Linux, então acho que você pode conseguir o que deseja usando udev
para criar um link simbólico para seus dispositivos. Se você olhar /etc/udev/rules.d
, há um arquivo chamado 70-persistent-cd.rules
cujo conteúdo tem linhas como:
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"
O que isto faz é criar o link simbólico /dev/cdrom
para o dispositivo identificado pelo seu endereço de barramento PCI. Você deve ser capaz de realizar o que deseja identificando o HDD usando seu (número do compartimento? Desculpe, não tenho experiência) e usando sintaxe semelhante à acima para adicionar um link simbólico como /dev/bay1
, por exemplo. O seguinte artigo sobre udev
regras de redação pode ser útil:
Observação
Graças à resposta do slm, observe que esta solução torna as etiquetas específicas para os compartimentos de HDD, e não para os discos dentro deles. Assim, se você usar os rótulos /dev/bay1
e /dev/bay2
tiver o disco rígido A no compartimento 1 e o disco rígido B no compartimento 2, então /dev/bay1
se refere ao disco A e /dev/bay2
se refere ao disco B. Se, por algum motivo, você trocar os discos A e B, você /dev/bay1
se refere ao disco B e /dev/bay2
ao disco A. Pela sua pergunta, acredito que essa seja sua intenção. Por favor me corrija se eu estiver errado.
Responder3
Você não e2label partições, você e2label sistemas de arquivos. Esses sistemas de arquivos podem estar em partições de arquivos, em discos inteiros, em dispositivos de bloco de rede... não importa.
Então, sim, se houver um sistema de arquivos ext2/3/4 diretamente em /dev/sda
, você poderá rotulá-lo da mesma forma que estaria em /dev/sda1
.
Agora, se não houver nenhum sistema de arquivos diretamente, /dev/sda
mas, por exemplo, /dev/sda
estiver particionado (usando GPT, MBR, LVM...) em várias partições, então obviamente não, você não pode usar o e2label /dev/sda
.
No particionamento GPT, você pode dar nomes às partições, para poder criar uma partição grande de um setor com um nome para ajudar a identificar seu disco. Você pode fazer isso com o c
comando em gdisk
.
Responder4
Para responder à sua pergunta se é possível rotular um disco em vez de uma partição, a resposta é não. Não conheço nenhum método para fazer isso.
Você pode usar o método descrito por @JosephR, mas perceba que essa configuração depende do sistema; portanto, se você levasse esse HDD para outro sistema, a "rotulagem" proposta por ele seria perdida. Não está vinculado ao disco de nenhuma maneira significativa.
Aliás, você pode ver os rótulos e UUIDs definidos para diferentes unidades usando o blkid
comando.
Exemplo
$ blkid
/dev/sda1: LABEL="SYSTEM_DRV" UUID="XXXXXX" TYPE="ntfs"
/dev/sda2: LABEL="Windows7_OS" UUID="XXXXXX" TYPE="ntfs"
/dev/sda3: LABEL="Lenovo_Recovery" UUID="XXXX" TYPE="ntfs"
/dev/sda5: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext4"
/dev/sda6: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXfG93LA" TYPE="LVM2_member"
/dev/mapper/vg_grinchy-lv_root: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4"
/dev/mapper/vg_grinchy-lv_swap: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="swap"
/dev/mapper/vg_grinchy-lv_home: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4"