NAME

Solaris::Disk::VTOC - Read Solaris VTOC (aka. slices or partitions) from disks

SYNOPSIS

use Solaris::Disk::VTOC;;

$vtoc = Solaris::Disk::VTOC->new();
$vtoc = Solaris::Disk::VTOC->new(
          sourcedir => "/path/containing/c0t0d0.txt/" );
$vtoc = Solaris::Disk::VTOC->new(
          init => 1);

# get c0t0d0 slices. All 3 are valid:
$vtoc->readvtoc( device => "c0t0d0s0" );
$vtoc->readvtoc( device => "c0t0d0s7" );
$vtoc->readvtoc( device => "c0t0d0" );

# from file
$vtoc->readvtoc( device => "c0t0d0", source => "/tmp/c0t0d0.dump" );

# read vtoc from file in a directory
$vtoc->readvtocdir( "/tmp/" );

$size = $vtoc->size("c0t0d0s1");    # slice 1
$size = $vtoc->size("c0t0d0s3");    # slice 3
$size = $vtoc->size("c0t0d0", 1);   # slice 1
$size = $vtoc->size("c0t0d0s2", 3); # slice 3

$vtoc->show("c0t0d0", ...);

# when code is written:
$vtoc->dump("c0t0d0");
$vtoc->format("c0t0d0"); # or should it be `partition' or `slice'?
                         # or `label' 

DESCRIPTION

Solaris::Disk::VTOC aims to provide methods to read Solaris disks partitions (aka slices).

GLOBALS

Two global hashes are defined for completeness. They are not this useful if you are a used Solaris administrator.

  • %VTOCSliceType

    Global hash to translate slice types ([0-9a]) to plain english.

  • %VTOCSliceFlag

    Global hash to translate partition flags (00, 01, 10, 11) to format(1M) codes (wm, wu, rm, ru).

METHODS

new

The new method returns a Solaris::Disk::VTOC object, which will then be used to read partitions for disks, to access these data, or to dump them in a human or computer readable manner.

  • Create the object, but not initialize:

    my $vtoc = Solaris::Disk::VTOC->new();	
  • Create the object, initialize from devices, with prtvtoc(1M) :

    my $vtoc = Solaris::Disk::VTOC->new(init => 1);	
  • Create the object, initialize from a directory containing prtvtoc(1M) dumps (see the readvtocdir method).

    my $vtoc = Solaris::Disk::VTOC->new( sourcedir => '/path/to/dir/' );	

readvtoc

$vtoc->readvtoc( device => 'c0t0d0s0' [, source => 'c0t0d0s0.txt' ] );

readvtoc loads the vtoc and disk parameters (bytespersector, sectorspertrack, sectorspercyl, cylinders and accylinders) in the object referenced by $vtoc.

Only the controler+target+LUN part of the name is keeped, the slice number is dropped (s2 is used internally).

The device parameter is mandatory, even if it could be read from the default source (prtvtoc /dev/rdsk/$device |). This will allow further testing at the expense of a little typing overhead.

The source parameter allows one to specify a different data source such as a file containing a dump from the prtvtoc command for the specified disk.

readvtocdir

readvtocdir allows one to specify a directory containing prtvtoc(1M) dumps, with names in the form c\d+t\d+d\d+[s\d]\.txt

@disknames = $vtoc->readvtocdir('/path/to/dir/');

readvtocdir return the list of the disk vtocs found in the given directory.

size

The size method, taking one or two parameters, gives the size of a slice.

$vtoc->size( $diskwithslice )
$vtoc->size( $disk, $slice )

$vtoc->size( "c0t0d0s1" )           # get slice 1 size for c0t0d0
$vtoc->size( "c0t0d0", 1 )          # same 
$vtoc->size( "c0t0d0s0", 1 )        # same

The size() methods returns the block count in a partition specified as cXtXdXsX

If the disk does not currently exists in the current configuration, it tries to load it from system.

Bug: no named parameters for now.

show

The show method prints on STDOUT the disk details and partitions for the disks asked.

dump

The dump method, when implemented, will dump in a prtvtoc(1M) fashion, the information about the specified disk. Its output should be suitable to feed the fmthard(1M) command.

BUGS

Not all methods take named parameters for now.

This module has only been tested on Solaris for Sparc. Please contact the author for feedback about Solaris on Intel and/or AMD.

The dump method is not currently implemented. Maybe a format method should be implemented as well (could be dangerous, don't you think?)

AUTHOR

Jérôme Fenal <jfenal@free.fr>

VERSION

This is version 0.02 of the Solaris::Disk::VTOC module.

COPYRIGHT

Copyright (C) 2004 Jérôme Fenal. All Rights Reserved

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

  • The prtvtoc(1M) command and man page.

  • The format(1M) command and man page.

  • The fmthard(1M) command and man page.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 413:

Non-ASCII character seen before =encoding in 'Jérôme'. Assuming CP1252