web-dev-qa-db-fra.com

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

J'essaie de déterminer la taille optimale pour une grande copie de mon disque dur en utilisant 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.

47
Flame

La commande lsblk est excellente pour cela:

lsblk -o NAME,PHY-SeC

Les resultats:

NAME   PHY-SEC 
sda        512 
├─sda1     512 
├─sda2     512 
└─sda5     512 
43
Thomas Bratt

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 pourrais pastrouveraeffacezrépondez en utilisant exactement la taille du bloc physique obtiendrait le résultat optimal (même si je suppose que cela ne peut pas être un mauvais choix).

31
hlovdal
$ Sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size:                  4096 bytes

http://wayback.archive.org/web/20150921015457/https://nxadm.wordpress.com/2010/04/30/4096-physical-block-size-drives/

27
Sepero

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 d'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 au niveau du périphérique et vous ne pourrez plus extraire de performances supplémentaires du processus de sauvegarde. (Soulignement ajouté)


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 (c'est-à-dire 3 minutes par heure) avec une taille de bloc optimale absolue. Par conséquent, demandez-vous s'il vaut la peine de consacrer du temps et des efforts supplémentaires à la recherche. Tant que vous restez à l’écart des valeurs extrêmes, vous ne devriez pas souffrir.

7
Mark C

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 (4k par défaut FS la taille des blocs dans la plupart des systèmes jusqu’à 64 k ISA DMA taille) serait plus pratique ...

4
ZaB

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

Sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'
1
Elliptical view