Comment trouver la taille de lecture du bloc matériel pour mon disque dur?

47

J'essaie de déterminer la taille optimale d'une grande copie de mon disque dur à l'aide de dd. J'essaie de comprendre quelle est la meilleure taille de bloc pour l'utiliser, ce qui, je suppose, est la taille du bloc matériel pour ce lecteur.

Flamme
la source
1
@Sepero a fourni la seule réponse réelle.
Sjas

Réponses:

44

La commande lsblk est idéale pour cela:

lsblk -o NAME,PHY-SeC

Les resultats:

NAME   PHY-SEC 
sda        512 
├─sda1     512 
├─sda2     512 
└─sda5     512 
Thomas Bratt
la source
3
Est-ce qu'il distingue la taille logique et la taille physique?
CMCDragonkai
2
Ne fournira pas la taille physique réelle.
Sjas
7
Cela fonctionne pour moi, PHY-SEC montre le physique correct et LOG-SEC montre la taille logique.
Soger
31

Linux expose la taille du secteur physique dans les fichiers /sys/block/sdX/queue/physical_block_size. Cependant, pour obtenir les meilleures performances, vous devriez probablement faire quelques essais avec différentes tailles et mesures. Je ne pouvais pas trouver une claire réponse à qu'utiliser exactement la taille du bloc physique obtiendrait le résultat optimal (même si je suppose que ce ne peut pas être un mauvais choix).

Hlovdal
la source
2
J'ai un système Debian Lenny (noyau 2.6.26) qui n'expose qu'un hw_sector_size à cet emplacement et un système plus récent Ubuntu Karmic (noyau 2.6.31) qui fournit les deux. c'est donc quelque peu dépendant du noyau utilisé.
Quack Quichotte
Ne fournira pas la taille physique réelle.
Sjas
@sjas Pourriez-vous développer? Comment sais-tu cela?
Hashim
1
@Hashim Je l'ai testé avec de vieux disques durs, où certains avaient une taille de secteur de 512b et 4k. superuser.com/a/426015/145072 est la solution qui a réellement fonctionné. tout hdparmva probablement vous mentir.
Sjas
7

Le mien n'est pas destiné à être une réponse complète, mais j'espère que cela aidera aussi.

Voici un petit quelque chose de http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html


3 - Déterminer la taille de bloc appropriée

Pour une sauvegarde plus rapide, il peut être utile de déterminer la taille de bloc optimale du périphérique de disque que vous allez sauvegarder. En supposant que vous sauvegardiez / dev / sda, voici comment utiliser la commande fdisk pour déterminer la meilleure taille de bloc:

rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units

Units = cylinders of 16065 * 512 = 8225280 bytes

Notez que la sortie de fdisk indique "cylindres of 16065 * 512". Cela signifie qu'il y a 512 octets par bloc sur le disque. Vous pouvez améliorer considérablement la vitesse de la sauvegarde en augmentant la taille du bloc par un multiple de 2 à 4. Dans ce cas, la taille optimale du bloc peut être 1k (512 * 2) ou 2k (512 * 4). BTW, devenir gourmand et utiliser une taille de bloc de 5k (512 * 10) ou quelque chose de excessif ne va pas aider; le système finira par créer un goulot d'étranglement sur le périphérique lui-même et vous ne pourrez pas extraire des performances supplémentaires du processus de sauvegarde. (emphase ajoutée)


Je soupçonne que la différence de performance entre une taille de bloc quasi optimale et optimale pour une configuration donnée est négligeable à moins que le jeu de données ne soit énorme. En effet, un utilisateur de FixUnix (poste de 2007) a affirmé que ses temps optimaux n’étaient que 5% plus rapides que les temps sous-optimaux. Peut-être pourriez-vous augmenter un peu plus votre efficacité en utilisant un multiple de la taille du "cluster" ou de la taille de bloc du système de fichiers.

Bien sûr, si vous vous éloignez trop des deux côtés de la taille optimale du bloc, vous rencontrerez des problèmes.

Le résultat final est que vous ne gagnerez probablement qu'environ 5% de performances (soit 3 minutes par heure) avec la taille de bloc optimale absolue. Par conséquent, demandez-vous s'il vaut la peine de consacrer du temps et des efforts à la recherche. Tant que vous restez loin des valeurs extrêmes, vous ne devriez pas souffrir.

Mark C
la source
1
une raison d'utiliser echo "p" | /sbin/fdisk /dev/sda...au lieu de /sbin/fdisk -l /dev/sda...? le second sera plus propre et n'essaiera pas de faire des changements.
Quack Quackote
Vous feriez mieux de demander à Mark Kolich (lié). Il créait une sauvegarde et je n'ai cité qu'une partie de son article.
Mark C
1
@MarkC L'article lié utilise /sbin/fdisk -l /dev/sda | grep Units. Cela aurait pu être changé au cours des deux dernières années. En tout cas, j'ai mis à jour votre réponse.
Bob
2
OMI c'est la réponse la plus utile principalement à cause du dernier paragraphe en gras. Linux travaille très dur pour optimiser l’accès au disque. Par conséquent, si vous utilisez les paramètres appropriés du planificateur io et du tampon modifié pour votre disque, une taille de bloc de 8 192 octets convient à toute situation.
Soger
4

Chaque transfert de disque génère une interruption que le processeur doit gérer. Un disque typique à 50Mb / s voudra en générer 100 000 par seconde à une taille de bloc de 512b. Un processeur normal en traiterait 10 sur des milliers, une taille de bloc plus grande (2 ^ x) serait donc plus pratique systèmes jusqu'à 64k ISA DMA) serait plus pratique ...

ZaB
la source
Pourriez-vous clarifier?
Sjas
1
@Sjas Ce qu'il dit, c'est qu'apparemment, chaque secteur est transféré séparément avec une "interruption" associée que le processeur doit gérer. Une taille de bloc plus grande signifie moins d'interruptions (et donc moins de cycles de processeur utilisés) pour la même quantité de données.
Mark C
1

De plus, vous pouvez regarder dans la sortie de lshwpour vérifier d'autres résultats (et aussi parce que je ne semble pas avoir de hdparmdisponibilité sur ma distribution). Cela pourrait aider à le réduire:

sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
Vue elliptique
la source