1 votos

Identificar de forma fiable un disco (no en una partición) en Linux (Debian)

Quiero hacer copia de seguridad de la tabla de particiones de un disco en un script como este:

sfdisk --dump /dev/sda > partition_table.dump

Pero

  • No quiero usar /dev/sda, debido a que puede no ser fiable.

  • /dev/disk/by-id también parece no ser confiable.

  • /dev/disk/by-uuid y df incluyen particiones (no discos).

Sin embargo, fdisk -l muestra un Disco "Identificador" UUID. Puedo conseguir de alguna manera el nombre del disco (sda) desde el disco identificador? O hay otra manera de identificar de forma fiable un disco?

1voto

Kamil Maciorowski Puntos 897

Uso /dev/disk/by-id/ de todos modos. El problema que el enlace a mí me parece un raro mal funcionamiento de hardware o algo similar malo.

Comparar

ls -l /dev/disk/by-id/

a

# 'lsblk' is from 'util-linux' package
lsblk -pdo NAME,VENDOR,MODEL,SERIAL,WWN

Sin embargo, en algunos de mis sistemas el comando anterior muestra los valores en blanco; todavía puede intentar:

# the below 'smartctl' command (from 'smartmontools' package) probably needs 'sudo'
for sd in $(lsblk -pdo NAME | tail -n +2); do
  printf "%s\n" "$sd"; smartctl -i "$sd" |
  grep -E "Model:|Number:|WWN"
done

Yo no sé mucho acerca de WWN pero los números de serie deben estar codificados en hardware. Mi punto es, si el número de serie de cualquier número de cambios por cualquier razón, entonces puede haber problemas más grandes que un script de copia de seguridad que de repente no funciona.


Nota: un número de serie que identifica a un dispositivo físico no importa cuál sea su tabla de particiones (o si hay uno en todo, el estudio, el término "superdisquete" y esta pregunta). Si desea identificar la partición de tablas de sí mismos, entonces estas en Disco "Identificador" Uuid que usted descubrió que va a ser el enfoque correcto (nota que son de 128 bits Uuid en GPT régimen, pero, 32-bit opcional de firmas en el MBR, por ejemplo aquí). Son pocos bytes en el disco que puede ser cambiado, clonado, la copia de seguridad. No he encontrado ninguna forma rápida para identificar un nodo de dispositivo por este tipo de identificador, distintos de la navegación a través de dispositivos disponibles:

id=8080fdb4-6905-4f34-91fa-61389615d7d3
# the below 'fdisk' command (from 'util-linux' package) probably needs 'sudo'
for sd in $(lsblk -pdo NAME | tail -n +2); do
  fdisk -l "$sd" | grep -qi " ${id}$" && printf "%s\n" "$sd"
done

/dev/disk/by-uuid [...] incluyen particiones (no discos).

Así, se pueden incluir ni siquiera todos ellos debido a que estos Uuid se refieren a las estructuras en el interior de particiones (como los sistemas de ficheros o de intercambio), no particiones (y si usted trata con superdisquete, que va a estar aquí como en todo el disco). Cada uno de estos Uuid está escrito en algún lugar dentro de su correspondiente partición (o dispositivo, si superdisquete). Estos son identificadores que ver cuando se invoca por ejemplo,

# 'file' is from 'file' package
file -s /dev/sda2

Si usted necesita particiones identificadores, están en /dev/disk/by-partuuid/. Estos son los mismos que en

# 'partx' is from 'util-linux' package
partx --show /dev/sda

y que se almacenan en su correspondiente tabla de particiones, no dentro de cualquier partición. Usted puede obtener un panorama más amplio mediante la ejecución de

# 'blkid' (from 'util-linux' package) probably needs 'sudo'
blkid

Para identificar un dispositivo que contiene una partición con un UUID dado, tratar de:

id=68e3b991-5c7a-4d18-a120-834ef4effe00
readlink -e "/dev/disk/by-partuuid/$id" | sed 's/[0-9]*$//'

(sed sólo tiras dígitos finales aquí). Esta solución puede ser fácilmente adaptado para recuperar información de /dev/disk/by-uuid/ si usted necesita.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: