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 várias baias HD, eu gostaria de colocar etiquetas (de papel) na porta do compartimento físico e colocar a mesma etiqueta logicamente no disco que eu coloquei lá.
EDIT2: Trata-se do servidor Ubuntu Linux 12.04.
EDIT3: Nas partições GPT, também existe o rótulo de partições, que pode ser configurado com, por exemplo, parted. Consulte /server//q/681088/76442
Respostas:
Sua pergunta inicial já possui algumas boas respostas; portanto, vou me concentrar nos antecedentes da sua pergunta, rotulando discos.
Uso o número de série da unidade para imprimir etiquetas para compartimentos hot swap - é a melhor maneira de identificar de forma única e consistente a unidade. Ele não será alterado independentemente de qual compartimento ou de qual controlador esteja 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 a marca, modelo e número de série, consultando / diretório dev / disk / by-id /. Acho o alias do bash a seguir útil para isso:
(a correspondência para
scsi-*
encontrar todas as unidades "scsi-like", incluindo unidades SATA e SAS. em sistemas com apenas unidades SATA,ata-*
também funcionaria)por exemplo, em um dos meus sistemas de servidor ZFS, ele produz resultados como este:
Como você pode ver, a listagem / dev / disk / by-id inclui o número de marca e modelo de cada unidade, bem como o número de série. São todas as unidades SATA conectadas às portas SATA ou 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 de
list_disks
. Em vez disso, usei um gravador de etiquetas manual antigo, porque era isso que eu tinha. As etiquetas impressas contêm apenas o número de série sem a marca / modelo (basta identificar a unidade quando necessário). As etiquetas são muito úteis quando uma unidade falha e precisa ser substituída.fonte
alias list_disks='find /dev/disk/by-id/ -iname scsi-* -o -iname usb-* | grep -v -- -part | while read disk ; do echo $(basename $(readlink $disk)) $(basename $disk); done | sed -re "s/(usb|scsi)-// ; s/(SATA|Generic)_//" | sort'
. também encontra discos USB e se livra de dados estranhos na saída.Se estamos falando de Linux, acho que você pode conseguir o que deseja usar
udev
para criar um link simbólico para seus dispositivos. Se você olhar/etc/udev/rules.d
, há um arquivo chamado70-persistent-cd.rules
cujo conteúdo possui linhas como:O que isso faz é criar o link simbólico
/dev/cdrom
para o dispositivo identificado por seu endereço de barramento PCI. Você deve conseguir o que deseja, identificando o HDD usando seu (número do compartimento? Desculpe não ter experiência lá) e usando sintaxe semelhante à acima para adicionar um link simbólico como/dev/bay1
, por exemplo. O seguinte artigo sobre como escreverudev
regras pode ser útil:Escrevendo regras do udev
Nota
Graças à resposta da slm, observe que esta solução torna as etiquetas específicas para as baias dos discos rígidos em vez dos discos dentro delas. Assim, se você usar os rótulos
/dev/bay1
e/dev/bay2
e você tem disco Um disco no compartimento 1 e do disco B duro no compartimento 2, em seguida,/dev/bay1
refere-se ao disco A e/dev/bay2
refere-se ao disco B. Se, por algum motivo, você trocar os discos A e B, você se/dev/bay1
refere ao disco B e/dev/bay2
ao disco A. Na sua pergunta, acredito que essa é sua intenção. Por favor me corrija se eu estiver errado.fonte
Você não e2label particiona, você e2label sistemas de arquivos. Esses sistemas de arquivos podem estar em partições em arquivos, em discos inteiros, em dispositivos de bloco de rede ... isso não importa.
Então, sim, se houver um sistema de arquivos ext2 / 3/4 diretamente
/dev/sda
, você pode rotulá-lo da mesma forma que um sistema/dev/sda1
.Agora, se não houver um sistema de arquivos diretamente,
/dev/sda
mas, por exemplo,/dev/sda
for particionado (usando GPT, MBR, LVM ...) em várias partições, então obviamente você não pode usare2label /dev/sda
.No particionamento GPT, você pode atribuir nomes a partições, para criar uma partição grande de um setor com um nome para ajudar a identificar seu disco. Você pode fazer isso com o
c
comandogdisk
.fonte
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 saiba que essa configuração depende do sistema; portanto, se você levar esse disco rígido para outro sistema, a "rotulagem" proposta por ele será perdida. Não está vinculado ao disco de maneira significativa.
Aliás, você pode ver os rótulos e os UUIDs definidos para diferentes unidades usando o
blkid
comandoExemplo
fonte
blkid
parece apenas lista partições não dispositivos, o que não é o que o OP está interessado./dev/disk/by-id
e você pode fazê-loudev
de estilo como mostra a esta resposta .Presumo que seu objetivo principal seja identificar inequivocamente um disco físico. Infelizmente, não acredito que exista uma maneira padrão de rotular um disco da mesma maneira que você pode rotular um sistema de arquivos.
Uma maneira é usar o modelo e o número de série do disco. No Linux, você pode recuperar esses identificadores com
hdparm -i /dev/sdX
. O bom do número de série é que ele já pode estar impresso no adesivo do fabricante. (Suponho que você se preocupa principalmente com o Linux desde que você mencionoue2label
na sua pergunta. Em caso afirmativo, edite sua pergunta e adicione a tag linux .)Se você estiver usando um controlador RAID de hardware,
hdparm
pode não funcionar para você. Nesse caso, você precisará consultar as ferramentas de linha de comando do controlador RAID.Se você quiser identificá-lo por algo no conteúdo do disco, poderá usar o GUID do disco, armazenado no cabeçalho da tabela de partição GPT ( bytes 56-71 do LBA 1 ). É uma sequência aleatória arbitrária, e não um rótulo de sua escolha, mas é como um rótulo, pois é persistente até que você decida clobber a tabela de partição. No Linux, você pode ver o GUID do disco usando
gdisk -l /dev/sdX
.fonte
Com base nas respostas que recebi (obrigado pessoal!), Parece que não há como rotular discos, mas apenas partições. Portanto, a resposta provavelmente é "NÃO".
Seguirei as sugestões propostas por @cas e @ 200_success: colarei os números de série dos discos com um adesivo nas portas do compartimento.
Criar uma pequena partição em cada disco apenas para poder rotular essa partição (como sugerido por @Stephane Chazelas) também é uma opção, mas acho que isso seria confuso demais para alguém que talvez precise manter o sistema posteriormente. .
fonte
Crie uma
udev
regra usando o WWN exclusivo garantido do disco (se houver), caso contrário, use o fornecedor combinado e os IDs de série:Obtenha os valores necessários:
Massageie esses valores em
udev
rules
, como:udevadm trigger
Para nomear automaticamente o link simbólico usando os valores fornecidos por
udevadm info -q all /dev/<YOUR-DEVICE>
, você pode usar:Também é possível criar
ENV
variáveis a partir deATTRS
valores para obter um ID exclusivo mais curto.fonte
Se você
ls /dev/disk-by-path/pci*
...Você definitivamente verá um caminho PCI para cada compartimento de unidade. Você só precisa usar 1 disco conhecido para garantir que os rótulos estejam corretos.
Use
blkid /dev/disk-by-path/pci*
para ver quais partições de disco estão no caminho PCI.Você pode montar usando esse caminho também.
fonte
Eu gosto da solução @cas, mas aqui está o meu 2 ¢
fonte
O disco já está rotulada como
sda
,sdb
,sdc
... As partições são então marcadas por exemplo, sobresda
:sda1
,sda2
...Você pode listar todos os rótulos de discos e partições com
ls /dev/sd*
fonte