2010-11-11 17 views
1

Je souhaite lire un bloc dans le pool de stockage zpool à l'aide de la commande dd. Depuis zpool ne crée pas un fichier de périphérique comme un autre gestionnaire de volume comme vxvm. Je ne sais pas quel périphérique bloquer à utiliser pour la lecture. Y at-il un moyen de lire des données de bloc par bloc dans zpool?Comment lire un bloc dans un pool de stockage (zpool) en utilisant dd?

Répondre

0

Aucune idée de ce qui pourrait être utile, mais vous pouvez certainement lire des blocs dans les périphériques sous-jacents utilisés par le pool. Ils sont affichés par la commande . Si vous posez vraiment des questions sur zvols au lieu de zpools, ils sont accessibles sous/dev/zvol/rdsk/pool-name/zvol-name. Si vous voulez regarder les données internes de zpool, vous voudrez probablement utiliser zdb.

+0

Je souhaite prendre une image de sauvegarde de zpool sur un volume vxvm. – suresh

+0

Une condition préalable serait d'exporter le pool, c'est-à-dire de démonter tous les systèmes de fichiers et les volumes zfs, pendant toute la durée de la sauvegarde. Cela pourrait être inacceptable en tant que stratégie de sauvegarde. – jlliagre

0

Si vous souhaitez des systèmes de fichiers ZFS de sauvegarde que vous devriez utiliser les outils suivants:

  • « instantané zfs » pour créer un instantané stable du système de fichiers
  • « zfs send » pour envoyer une copie du instantané vers un autre emplacement
  • 'zfs receive' pour revenir d'un instantané à un système de fichiers.

'dd' est presque certainement pas l'outil que vous devriez utiliser. Dans votre cas, vous pouvez 'zfs send' et rediriger la sortie dans un fichier sur votre autre système de fichiers. Pour plus de détails, voir chapter 7 of the ZFS administration guide pour plus de détails.

1

Vous pouvez probablement utiliser la commande zdb. Voici un pdf à ce sujet, et la sortie de l'aide.

http://www.bruningsystems.com/osdevcon_draft3.pdf

# zdb --help 

zdb: illegal option -- - 
Usage: zdb [-CumdibcsDvhL] poolname [object...] 
    zdb [-div] dataset [object...] 
    zdb -m [-L] poolname [vdev [metaslab...]] 
    zdb -R poolname vdev:offset:size[:flags] 
    zdb -S poolname 
    zdb -l [-u] device 
    zdb -C 

Dataset name must include at least one separator character '/' or '@' 
If dataset name is specified, only that dataset is dumped 
If object numbers are specified, only those objects are dumped 

Options to control amount of output: 
    -u uberblock 
    -d dataset(s) 
    -i intent logs 
    -C config (or cachefile if alone) 
    -h pool history 
    -b block statistics 
    -m metaslabs 
    -c checksum all metadata (twice for all data) blocks 
    -s report stats on zdb's I/O 
    -D dedup statistics 
    -S simulate dedup to measure effect 
    -v verbose (applies to all others) 
    -l dump label contents 
    -L disable leak tracking (do not load spacemaps) 
    -R read and display block from a device 

Below options are intended for use with other options (except -l): 
    -A ignore assertions (-A), enable panic recovery (-AA) or both (-AAA) 
    -F attempt automatic rewind within safe range of transaction groups 
    -U <cachefile_path> -- use alternate cachefile 
    -X attempt extreme rewind (does not work with dataset) 
    -e pool is exported/destroyed/has altroot/not in a cachefile 
    -p <path> -- use one or more with -e to specify path to vdev dir 
    -P print numbers parsable 
    -t <txg> -- highest txg to use when searching for uberblocks 
Specify an option more than once (e.g. -bb) to make only that option verbose 
Default is to dump everything non-verbosely 

Malheureusement, je ne sais pas comment l'utiliser.

# zdb 
tank: 
    version: 28 
    name: 'tank' 
    ... 
    vdev_tree: 
    ... 
    children[0]: 
    ... 
     children[0]: 
    ... 
      path: '/dev/label/bank1d1' 
      phys_path: '/dev/label/bank1d1' 

    ... 

Je pris les indices de tableau 0 0 pour obtenir mon premier disque (bank1d1) et a fait cette commande. Il a fait quelque chose. Je ne sais pas comment lire la sortie.

zdb -R réservoir 0: 0: 4e00: 200 | Amusez-vous bien ... essayez de ne rien détruire. Voici votre avertissement de la page man:

The zdb command is used by support engineers to diagnose failures and 
gather statistics. Since the ZFS file system is always consistent on 
disk and is self-repairing, zdb should only be run under the direction 
by a support engineer. 

Et dites-nous s'il vous plaît ce que vous cherchiez réellement. Alan avait-il raison de vouloir faire des sauvegardes?

1

Vous pouvez lire des périphériques bruts sous-jacents dans le pool, mais autant que je sache, il n'existe aucun concept de périphérique bloc contigu représentant le pool entier. Le pool dans ZFS n'est pas un seul bloc contigu de secteurs que les gestionnaires de volume «classiques» sont. La structure interne de ZFS est plus proche d'un arbre qu'il serait difficile de représenter sous la forme d'un tableau plat de blocs.

Ben Rockwood's blog post "zdb: Examining ZFS At Point-Blank Range" peut aider à avoir une meilleure idée de ce qu'il y a sous le capot.