Translate

20/1/10

Solaris Format Utility

-->

La utilidad 'format' en el sistema operativo Solaris

Greg (shoe) Schuweiler, noviembre de 2004

Muchos consideran que un disco duro viene a ser una caja negra, un pequeño dispositivo donde se almacenan datos, programas y/o un sistema operativo. Este planteamiento no tiene nada que reprochar si eso es todo lo que le importa. Sin embargo, la preocupación primordial de un administrador del sistema debe ser la protección de los datos. Otra prioridad esencial debe ser la transferencia eficaz de los datos entre la memoria y el disco físico. En este artículo quiero analizar una de las utilidades básicas que nos ofrece el sistema operativo Solaris: format.
La utilidad format que sirve para administrar segmentos en un disco se creó originariamente para administrar discos conectados mediante SCSI, de ahí que el rendimiento pueda variar en el caso de los discos conectados mediante IDE. Si están instalados y configurados correctamente los controladores adecuados, no debe haber problemas para administrar unidades con conexión Fibre Channel o LUN presentados por dispositivos RAID.
Además de format, también me ocupo de otros comandos de dos tipos: no destructivos y destructivos. Siempre destaco los comandos destructivos en negrita y cursiva precedidos por la palabra Warning. Por ejemplo, si se ejecuta «Warning: cd / ; rm –r * » como root se destruirá el disco del sistema.
Otra llamada de atención: los comandos no destructivos deben ser sólo eso, pero es usted quien debe decidir si los ejecuta o no en su sistema. Los comandos destructivos destruyen los datos de un disco. Sólo debe ejecutarlos si sabe con seguridad lo que hace.
En este artículo utilizo los comandos format, prtvtoc, dd, od, cat y fmthard. Para empezar, me gustaría definir algunos de los términos de disco que voy a emplear.
Etiqueta del disco:
Área especial con información sobre el disco, como la geometría y los segmentos. También se denomina tabla de contenido del volumen (VTOC). La etiqueta del disco ocupa los 512 primeros bytes de un disco. Ahora la mayoría de los discos ya vienen etiquetados de fábrica.
Lista de defectos:
Es la lista de las áreas del disco donde no se puede leer o escribir. Siempre hay una lista de defectos del fabricante y, como veremos, una lista ampliada que crece con los defectos que surgen a medida que pasa el tiempo.
Tabla de particiones:
La tabla de particiones forma parte de la VTOC del disco y contiene los segmentos (o particiones) del disco, los límites y los tamaños de los segmentos. Un segmento está formado por una sucesión continua de bloques en un disco. Un disco consta de ocho segmentos [0-7], salvo que se etiquete como EFI (Extensible Firmware Interface), de lo cual me ocuparé más tarde. En la mayoría de los casos no se utiliza el segmento 2, porque representa todo el disco.
Recuerde lo siguiente a lo largo de este artículo:
  • Cada segmento de disco sólo puede contener un sistema de archivos.
  • Un sistema de archivos no puede ocupar varios segmentos (suponiendo que no se utilice ningún administrador de volúmenes lógicos).
  • Una vez creado un sistema de archivos, no es posible cambiar su tamaño sin reparticionar todo el disco.
  • Los segmentos no pueden ocupar varios discos. (En el caso de un dispositivo RAID que ocupe n discos y los presente al sistema como un solo disco, la utilidad format sólo verá un disco.)



Espero que tenga conectado al sistema un disco con el que practicar, porque me gustaría que este artículo fuera interactivo. En primer lugar, seleccione el disco que vaya a usar con format:
r_gps@holstein: format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0.c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  boot
  /pci@1f,4000/scsi@3/sd@0,0
1.c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  home
  /pci@1f,4000/scsi@3/sd@1,0
2.c2t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  trashme
  /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number):
Puede escribir 'quit' para salir, retroceder un menú o usar <Ctrl-D>, que cerrará totalmente la utilidad format. En mi caso, utilizaré "AVAILABLE DISK SELECTION 2". Como mencioné antes, si compra discos a Sun o a un proveedor que venda equipos de Sun, los discos ya deben llevar las etiquetas de Sun. En cambio, si tiene un entorno heterogéneo por donde circulan discos SCSI, no se reconocerá la etiqueta de disco de una unidad de 36 GB de un servidor HP, AIX o Windows (al menos, con el SO Solaris) y tendrá que agregar una etiqueta. Por tanto, empezaremos por el principio y nos divertiremos destruyendo la etiqueta del disco que estoy usando:
« Warning: echo "adios data" | dd of=/dev/dsk/c2t1d0s2 bs=1 count=512 »
En consecuencia, el comando format nos dará lo siguiente:
r_gps@holstein: format
Searching for disks...done

c2t1d0: configured with capacity of 33.92GB

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  boot
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  home
          /pci@1f,4000/scsi@3/sd@1,0
       2. c2t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number): 2
selecting c2t1d0
[disk formatted]
Disk not labeled. Label it now?
Ahora debe escribir "y" si desea etiquetar el disco, lo cual le conviene para poder utilizarlo con Solaris. A continuación, salga del comando format y utilice prtvtoc para consultar la información sobre la geometría y las particiones del disco:
r_gps@holstein: prtvtoc /dev/dsk/c2t1d0s2                            
* /dev/dsk/c2t1d0s2 partition map
*
* Dimensions:
*       512 bytes/sector
*       107 sectors/track
*         27 tracks/cylinder
*     2889 sectors/cylinder
*   24622 cylinders
*   24620 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First        Sector       Last
* Partition  Tag  Flags    Sector        Count       Sector     Mount Directory
   0        2    00    0  262899      262898
   1        3    01    262899 262899      525797
   2        5    01    0  71127180     71127179
   6        4    00    525798 70601382     71127179
El comando format ofrece algo de esa información, pero en este caso podemos constatar que hay cuatro particiones. La columna Tag indica que tenemos las particiones root (2), swap (3), backup (5) y usr (4). La columna Flags nos dice que tenemos dos particiones montables, con lectura y escritura (00), y dos no montables (01). Para cada partición, la columna First Sector indica dónde empieza la partición, Sector Count muestra el número de sectores y Last Sector señala la ubicación del último sector de la partición. Si hubiera un sistema de archivos montado, Mount Directory indicaría dónde está montada la partición. Antes de lanzarnos a estropear y arreglar cosas, veamos qué nos dice el comando format sobre el disco recién etiquetado. Ejecute el comando siguiente:
r_gps@holstein: format /dev/rdsk/c2t1d0s2
En la solicitud format, escriba partition y, después, en el menú de la partición, introduzca print. Así obtendrá esta tabla:
Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part    Tag     Flag     Cylinders        Size       Blocks
  0     root   wm 0 - 90      128.37MB  (91/0/0)        262899
  1        swap   wu 91 - 181       128.37MB  (91/0/0)        262899
  2       backup  wu 0 - 24619       33.92GB   (24620/0/0)   71127180
  3   unassigned  wm 0       0       (0/0/0)         0
  4   unassigned  wm 0       0       (0/0/0)         0
  5   unassigned  wm 0       0       (0/0/0)         0
  6          usr  wm 182 - 24619      33.67GB   (24438/0/0)  70601382
  7   unassigned  wm 0       0       (0/0/0)         0

partition>
Parte de la información es la misma que proporciona el comando prtvtoc. El formato varía un poco y vemos las particiones no utilizadas. Quizá haya notado que le estoy diciendo a format qué disco voy a usar. Lo hago para evitar problemas no intencionados con los demás discos del sistema. Otra manera de consultar la etiqueta del disco es volcarla con el comando dd:
r_gps@holstein: dd if=/dev/dsk/c2t1d0s2 of=wart.bin bs=512 count=1  
1+0 records in
1+0 records out
Así obtenemos un archivo binario que podemos usar con el comando od.
r_gps@holstein: od -x wart.bin
0000000 5355 4e33 3647 2063 796c 2032 3436 3230
0000020 2061 6c74 2032 2068 6420 3237 2073 6563
0000040 2031 3037 0000 0000 0000 0000 0000 0000
0000060 0000 0000 0000 0000 0000 0000 0000 0000
*
0000200 0000 0001 0000 0000 0000 0000 0008 0002
0000220 0000 0003 0001 0005 0001 0000 0000 0000
0000240 0000 0000 0000 0004 0000 0000 0000 0000
0000260 0000 0000 0000 0000 0000 0000 600d deee
0000300 0000 0000 0000 0000 0000 0000 0000 0000
*
0000640 0000 0000 2729 602e 0000 0000 0000 0001
0000660 602c 0002 001b 006b 0000 0000 0000 0000
0000700 0004 02f3 0000 005b 0004  02f3  0000 0000
0000720 043d 508c 0000 0000 0000 0000 0000 0000
0000740 0000 0000 0000 0000 0000 0000 0000 00b6
0000760 0435 4aa6 0000 0000 0000 0000 dabe 4297
0001000
El volcado octal contiene abundante información, que se describe muy bien en un documento de Sun, así que no voy a repetirla aquí. Busque el ID de documento 74087 en SunSolve. Cabe señalar que od siempre omite las líneas repetitivas (el carácter *), VTOC_SANE siempre es 0x600ddeee en el desplazamiento 0xbc, mientras que DKL_MAGIC siempre es 0xdabe en el desplazamiento 0x1fc, justo antes de la suma de comprobación. Ahora que ya hemos etiquetado el disco, ¿qué podemos hacer con él (y el comando format)? Primero observe el listado de menús siguiente. Con excepción de la opción volname, empezaré ocupándome de las opciones no destructivas del menú de formato. Son las que aparecen en negrita a continuación.
r_gps@holstein: format /dev/rdsk/c2t1d0s2
selecting /dev/rdsk/c2t1d0s2
[disk formatted]

FORMAT MENU:
        disk        - select a disk
        type        - select (define) a disk type
        partition   - select (define) a partition table
        current     - describe the current disk
        format      - format and analyze the disk
        repair      - repair a defective sector
        label       - write label to the disk
        analyze     - surface analysis
        defect      - defect list management
        backup      - search for backup labels
        verify      - read and display labels
        save        - save new disk/partition definitions
        inquiry     - show vendor, product and revision
        volname     - set 8-character volume name
        !<cmd>      - execute <cmd>, then return
        quit
format>
Para que el sistema sea más personal, me gusta asignar siempre a cada disco un nombre de volumen. También resulta muy útil cuando varios sistemas ven las mismas unidades de disco, como puede suceder en un clúster de alta disponibilidad. He visto más de 120 discos presentados por un par de dispositivos RAID, todos ellos visibles para 15 sistemas en un clúster VERITAS. Si cada disco tiene un nombre de volumen, es más fácil identificar los discos que ya se han usado. Los discos sin nombre de volumen no se han utilizado. Hay que tener en cuenta algo al utilizar la opción de menú volname, como muestra el ejemplo siguiente:
format> volname
Enter 8-character volume name (remember quotes)[""]:"pigsnot"
Ready to label disk, continue? y

format>
La opción volname escribirá en la etiqueta del disco. Yo lo he hecho en discos que tenían sistemas de archivos montados y contenían datos válidos. La primera vez fue por casualidad. No estalló el universo y la gravedad siguió actuando. Así que hice pruebas en unidades de disco, cambiando el nombre de volumen en discos con sistemas de archivos montados y en discos con sistemas de archivos no montados. Aunque cambiara la etiqueta, nunca perdí los datos. Por supuesto, se aplican las exenciones de responsabilidad habituales: "sus resultados pueden variar, actúe bajo su propia responsabilidad, no se asume responsabilidad por errores tipográficos, etc., etc."
La opción disk permite cambiar de disco dentro de la utilidad format, pero como ya he seleccionado el disco que quiero usar, sólo muestra dicho disco.
format> disk

AVAILABLE DISK SELECTIONS:
       0. /dev/rdsk/c2t1d0s2 <SUN36G cyl 24620 alt 2 hd 27 sec 107> pigsnot
          /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number)[0]:
La opción current nos ofrece el disco actual seleccionado tras ejecutar el comando format. En este artículo he utilizado el disco 2, de manera que la opción current muestra lo siguiente:
Current Disk = c2t1d0: pigsnot
<SUN36G cyl 24620 alt 2 hd 27 sec 107>
/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
La opción current nos da la ubicación física del disco en la última línea. La ubicación física debe precederse con /devices, y una letra representa el número de partición.
r_gps@holstein: ls /devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0*

/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:a
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:a,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:b
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:b,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:c
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:c,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:d
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:d,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:e
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:e,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:f
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:f,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:g
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:g,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:h
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:h,raw
El nombre del dispositivo físico con la palabra "raw" es el dispositivo de carácter, mientras que el otro es el de bloque. La letra 'a' es la partición 0, 'b' es la partición 1, etc.
La opción defect abre el menú Defect, que permite ver cuántos defectos tenía el disco al salir de la fábrica. Para comprobarlo, use la opción primary. Mi equipo tiene tres discos con un intervalo de defectos principales de 72 a 2922. Pero la opción grown resulta más interesante. Dado que los defectos de un disco pueden crecer con el tiempo, nos conviene saber la tasa de crecimiento. Si la tasa de crecimiento es alta, puede haber un fallo de disco pendiente.
La opción print proporciona una lista de los defectos y sus ubicaciones en el disco. También es posible volcar (guardar) la lista de defectos del disco en un archivo. Yo lo he hecho en breves lapsos de tiempo cuando sospechaba de un disco.
La opción verify aporta abundante información que ya hemos visto con el comando prtvtoc y al visualizar las particiones con el comando format.
format> verify

Primary label contents:

Volume name  = < pigsnot>
ASCII name   = <SUN36G cyl 24620 alt 2 hd 27 sec 107>
pcyl         = 24622
ncyl         = 24620
acyl         =    2
nhead        =   27
nsect        =  107
Part   Tag     Flag   Cylinders       Size        Blocks
  0        root  wm 0 - 90        128.37MB  (91/0/0)         262899
  1        swap  wu 91 - 181      128.37MB  (91/0/0)         262899
  2      backup  wu 0 - 24619      33.92GB  (24620/0/0)  71127180
  3  unassigned  wm 0       0     (0/0/0)    0
  4  unassigned  wm 0       0     (0/0/0)    0
  5  unassigned  wm 0       0     (0/0/0)    0
  6         usr  wm 182 - 24619    33.67GB   (24438/0/0)    70601382
  7   unassigned wm 0       0     (0/0/0)    0
La opción save genera un archivo format.dat (o con el nombre que le asignemos). Este archivo dat contiene información que orienta al comando format al realizar la configuración. (Consulte man -s4 format.dat para obtener más información sobre este archivo.) Si aplica cat al archivo format.dat recién creado en una ventana y después ejecuta el comando verify en otra ventana, gran parte de la información obtenida será la misma, pero con otro formato o con un formato más legible para algunas personas. El archivo format.dat que se crea con la opción save amplia un poco la información con las rpm del disco.
#
# New disk/partition type  saved on Fri Aug  6 06:34:05 2004
#
disk_type = "SUN36G" \
         : ctlr = SCSI : ncyl = 24620 : acyl = 2 : pcyl = 24622 \
         : nhead = 27 : nsect = 107 : rpm = 10025
...
Por último, en la lista de opciones que nos sirven para recopilar información sobre el disco tenemos inquiry,que proporciona información bastante básica, como indica el ejemplo siguiente.
format> inq
Vendor:   FUJITSU 
Product:  MAN3367M SUN36G 
Revision: 1502
format>
Conviene recordar el nivel de revisión, porque aparecen actualizaciones del firmware para las unidades de disco. Esta opción permite comparar los niveles de revisión de los discos con lo que ofrece el proveedor. Algunos de mis proveedores actualizan el firmware de las unidades de disco en grandes matrices RAID, pero lo hacen sobre la marcha. Hace mucho tiempo actualicé el firmware de los discos SCSI. Ya no me tomo esa molestia, sobre todo por los numerosos discos que hay en los entornos actuales y por el elevado tiempo de inactividad que necesitaría. (Y por un sabio principio: "si no está roto, no lo arregles", que a veces tiene sentido.) No he logrado averiguar cómo actualizar sin que haya tiempo de inactividad. Todavía.
Una de las ventajas del comando format es que se puede incluir en un archivo de comandos. Por ejemplo, el archivo de comandos siguiente nos podría servir para volcar la lista de defectos en un archivo:
defect
both
dump /disks/c2t1d0-defect.dat

r_gps@holstein: format -f c2t1d0.cmd /dev/rdsk/c2t1d0s2
No obstante, ante el poder destructivo del comando format, no debemos incluirlo en un archivo de comandos si hay particiones montadas en el disco. Si cree que le puede resultar útil, le aconsejo que utilice Perl y Expect para obtener esta información.
Advertencia: He reproducido el menú de format y, las demás opciones que quedan pueden destruir los datos del disco. Tenga mucho cuidado, porque si destruye datos serán los suyos.
r_gps@holstein: format /dev/rdsk/c2t1d0s2
selecting /dev/rdsk/c2t1d0s2
[disk formatted]

FORMAT MENU:
        disk        - select a disk
        type        - select (define) a disk type
        partition   - select (define) a partition table
        current     - describe the current disk
        format      - format and analyze the disk
        repair      - repair a defective sector
        label       - write label to the disk
        analyze     - surface analysis
        defect      - defect list management
        backup      - search for backup labels
        verify      - read and display labels
        save        - save new disk/partition definitions
        inquiry     - show vendor, product and revision
        volname     - set 8-character volume name
        !<cmd>      - execute <cmd>, then return
        quit
format>
La opción type apenas se utiliza en la actualidad. Antes se usaba mucho cuando los discos (principalmente no SCSI) no siempre incluían información sobre sí mismos. Los administradores de los sistemas antiguos se acuerdan de cuando introducían información como el número de cilindros, cilindros alternativos, cilindros físicos, número de pilas, número físico de cabezas, número de sectores de datos/pista y un sinfín de elementos más. En muchos casos aplicábamos los valores predeterminados porque simplemente no lográbamos encontrar la información. Los proveedores de discos, que por aquel entonces eran muchos, protegían con celo la información de su propiedad. A veces probábamos valores hasta que conseguíamos el correcto. Puede intentarlo, pero primero debe guardar toda la información que antes ha recopilado sobre el disco. Ya sé que esa información debe estar en algún dispositivo de sólo lectura del disco, pero es mejor asegurarse que trabajar hasta la madrugada. Quizá tenga que restablecer los valores correctos de los parámetros del disco, sobre todo si está siguiendo este artículo con un disco viejo.
Solíamos hacer esto con unidades IPI y SMD. Busque "disco ipi smd" en Google para averiguar un poco de la historia y dónde se pueden comprar todavía este tipo de unidades si le interesan.
La opción partition es seguramente la más empleada con la utilidad format. Al seleccionar esta opción se accede al menú de particiones, donde podemos modificar las particiones de un disco. Recuerde que la segunda partición (número 2) o de copia de seguridad ocupa todo el disco. No nos interesa modificar la partición de copia de seguridad. Sin embargo, en raras ocasiones se crea un sistema de archivos en la partición de copia de seguridad y se monta sólo eso, normalmente con bases de datos. De todos modos, recuerde que no es una buena idea. Puede tener problemas si utiliza software que se liga a una partición en disco. Trabajé con una aplicación que lo hacía y se convirtió en una pesadilla en cuanto a mantenimiento, actualizaciones y demás. Si los proveedores no tienen cuidado, cuando necesitamos que sus productos utilicen el segmento 2, el software puede acabar con la VTOC.
Aquí empieza a aflorar un aspecto en el que disiento radicalmente de Sun. Por ejemplo, Sun y sus ingenieros de sistemas que conozco recomiendan últimamente una partición raíz y otra para todo lo demás en el disco del sistema. Me parece un disparate. El sistema operativo percibe como un disco distinto cada segmento de un disco, así que voy a explicar por qué estoy en desacuerdo con Sun antes de segmentar nuestro disco de prueba. Usted también puede estar en desacuerdo conmigo, o lo que es mejor aún: escriba su propio artículo.
¿Qué ocurre si / (root) se llena porque una aplicación se vuelve loca (y a su vez llena /var/tmp)? El sistema operativo no sufrirá daños, incluso es posible que tampoco los sufra la aplicación problemática. Sin embargo, una vez más es posible que esto impida cualquier otro procesamiento hasta que se corrija dicha aplicación. Por tanto, necesitamos una partición para construir un sistema de archivos y montar /. En este caso coincido con Sun: una única partición. Pero también necesitamos ese /var en un sistema de archivos distinto. En consecuencia, necesitamos otra partición para /var. Dos particiones. Yo también sitúo /usr en una partición separada. El sistema de archivos /usr sólo debe contener archivos ejecutables y ASCII. Tres particiones. Como lo que incluyo en /opt no es necesario para ejecutar el sistema, también lo coloco en otro sistema de archivos. Cuatro particiones. Además, creo un sistema de archivos /tmp, que sólo debe albergar los archivos temporales generados por el sistema. Cinco particiones. Como se trata de nuestro disco del sistema, necesitamos una partición de intercambio. Eso hace seis. Y me queda una partición libre para lo que quiera. Si bloqueo el sistema por motivos de seguridad, todos los sistemas de archivos son de sólo lectura, excepto /tmp y /var/tmp.
El sistema operativo percibe cada partición como un sistema de archivos distinto. Esto significa que crea caché y búferes para cada uno de estos sistemas de archivos. La caché y los búferes extra dispersan ligeramente la carga de E/S. Por supuesto, está la limitación de la copia de seguridad, la velocidad de interconexión y el controlador de disco. Sin embargo, es menos probable que surjan problemas cuando la carga de E/S sea muy alta.
Vale, me bajaré de la parra y seguiré con el menú de particiones. Aparece otro menú como éste:
PARTITION MENU:
        0 - change `0' partition
        1 - change `1' partition
        2 - change `2' partition
        3 - change `3' partition
        4 - change `4' partition
        5 - change `5' partition
        6 - change `6' partition
        7 - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name - name the current table
        print - display the current table
        label - write partition map and label to the disk
        !<cmd> - execute <cmd>, then return
        quit
La manera más fácil que he encontrado para trabajar con las particiones es así: en la pantalla Partition Menu me limito a pulsar la tecla 'P' para la opción print. Así vemos con qué vamos a empezar. Obtenemos la información siguiente, que también hemos visto antes.
Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part    Tag     Flag     Cylinders     Size        Blocks
  0        root wm 0 - 90     128.37MB (91/0/0)         262899
  1        swap wu 91 - 181   128.37MB  (91/0/0)        262899
  2      backup wu 0 - 24619   33.92GB (24620/0/0)  71127180
  3  unassigned wm 0     0    (0/0/0)        0
  4  unassigned wm 0     0    (0/0/0)        0
  5  unassigned wm 0     0    (0/0/0)        0
  6         usr wm 182 - 24619 33.67GB (24438/0/0)  70601382
  7  unassigned wm 0     0    (0/0/0)        0
Ésta es la tabla de particiones predeterminada, que necesitamos cambiar, sin olvidar que de ningún modo queremos particiones solapadas. La forma más segura de modificar las particiones es utilizar la opción modify. Ello conlleva el llamado segmento de monopolio libre (Free Hog Slice), una partición temporal que por arte de magia se amplía y reduce automáticamente según las opciones de partición. El segmento de monopolio libre sólo se produce cuando se ejecuta la utilidad format.
Si introduce modify, tiene la posibilidad de seleccionar una base de partición y puede modificar la partición actual o la de monopolio totalmente libre (All Free Hog).
partition> modify
Select partitioning base:
        0. Current partition table (original)
        1. All Free Hog
Choose base (enter number) [0]?
Normalmente se modifica la partición actual, lo cual está bien. En realidad el resultado no es muy diferente. Cuando se selecciona la tabla de particiones actual, la utilidad format muestra primero las particiones actuales. Si selecciona All Free Hog, verá que la única partición que tiene espacio asignado es la de copia de seguridad. La opción modify ofrece la oportunidad de modificar todas las particiones excepto la de copia de seguridad. Una cosa que no me gusta de la opción modify es que no me permite asignar tag o definir flag en las particiones que creo. Aunque puedo hacerlo después seleccionando cada partición por separado, me parece redundante.
Si decido no usar la opción modify, puedo cambiar cada partición individualmente. Como estoy usando una unidad de 36 GB, también puedo agrandar un poco la partición raíz. Para empezar, selecciono la partición que quiero modificar, defino los permisos de la partición, le asigno un cilindro inicial y, por último, un tamaño.
partition> 0
Part      Tag    Flag     Cylinders         Size        Blocks
  0       root    wm       0 -    90      128.37MB    (91/0/0)      262899

Enter partition id tag[root]: 
Enter partition permission flags[wm]: 
Enter new starting cyl[0]: 
Enter partition size [262899b, 91c, 90e, 128.37mb, 0.13gb]: 256mb
También se puede introducir un signo '?' en la etiqueta identificadora (id tag) de la partición, así como preguntas en los identificadores de permiso (permission flags), para obtener respuestas aceptables. Si vuelvo a pulsar la tecla 'P', vemos un problema que es preciso resolver.
Part      Tag   Flag     Cylinders      Size            Blocks
  0      root wm 0 - 181       256.74MB (182/0/0)   525798
  1      swap wu 91 - 181       128.37MB (91/0/0)    262899
  ...
La partición 0 se solapa con la partición 1. A medida que cree las particiones, cerciórese de que no se solapen. El número y el tamaño de las particiones que cree depende realmente de su sitio, necesidades, experiencias, etc. Al terminar tenemos lo siguiente:
Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag   Flag     Cylinders         Size      Blocks
  0        root wm 0 -  181       56.74MB  (182/0/0)        525798
  1        swap wu 182 - 272      128.37MB  (1452/0/0)      4194828
  2      backup wu 0 - 24619       33.92GB  (24620/0/0)    71127180
  3  unassigned wm 3540 - 4265      1.00GB    (726/0/0)       2097414
  4  unassigned wm 0      0     (0/0/0)    0
  5  unassigned wm 4266 - 4991      1.00GB    (726/0/0)       2097414
  6         usr wm 273 - 2087       2.50GB  (1815/0/0)  5243535
  7         var wm 2088 - 3539     2.00GB    (1452/0/0)    4194828
Todavía hay que generar la tabla de particiones. Para ello basta con introducir label y responder 'Y' a la pregunta "continue?". Seguramente se preguntará dónde está /home. Yo no suelo poner nada en el disco del sistema. Así es más fácil pasar de un nivel a otro del SO.
En realidad no debería hacer falta usar la opción format si los discos se compran a Sun. En caso de que adquiera discos usados, los traslade desde otro sistema operativo o tenga una lista de defectos abundantes, la opción format los preparará para Solaris. Si la lista de defectos es grande, puede limpiar un poco el disco. Esta opción puede resultarle útil si el sistema tiene conectados dispositivos RAID que no son bastante avanzados como para presentar los LUN creados de manera que Solaris los entienda. Si tiene hardware así, seguramente le interesa conseguir nuevos equipos. Según el tamaño, le convendrá empezar a formatear el disco antes de irse a casa o al iniciar la jornada laboral. En mi estación de trabajo Ultra Enterprise (UE-60), el tiempo de duración estimado para una unidad de 36 GB es de 332 minutos.
La opción repair puede servir para reparar un bloque defectuoso en el disco, tal vez. No la he usado en estos años. De hecho, la había olvidado hasta que empecé a redactar estas líneas. Con el bajo coste de los discos actuales, resulta más seguro y, probablemente más barato, sustituir un disco que perder horas y horas amañándolo para intentar recuperar un bloque aquí y otro allí. Quizá no sea muy divertido, pero probablemente sí más seguro.
Como antes ya he dicho más que suficiente sobre la opción label, me centraré directamente en analyze. Al igual que la opción defect, analyze abre otro menú. Yo ya casi no uso la opción analyze, salvo a veces cuando hago pruebas o escribo un artículo. Puede utilizar los elementos del menú Analyze para analizar un disco, claro. Observará que algunos elementos indican que deterioran los datos.
La opción backup busca etiquetas de copia de seguridad. Primero busca una etiqueta primary y, si la encuentra, format le pregunta si desea continuar. Si continúa, la opción backup sustituye la etiqueta primary por la de copia de seguridad que encuentra. Nunca he tenido que hacer esto, y me pregunto cómo se utiliza. Por lo que yo sé, sin la etiqueta primary no es posible acceder a la opción backup en el comando format. Supongo que Sun podría decirnos cómo utilizar el comando dd para trasladar una etiqueta backup a la posición de la etiqueta primary en el disco, pero es sólo una suposición mía.
¿Se ha divertido? Asignar formato y definir particiones en un par de discos no es un problema; hay que teclear mucho, pero es soportable. En cambio, ¿qué ocurre si acabamos de conectar una matriz RAID grande y necesitamos configurar de manera idéntica 10 o incluso 200 discos? Una buena amiga tuvo que hacerlo en un voluminoso proyecto de producción de imágenes. Utilizó fmthard y algo de secuencia de comandos para conseguirlo de un tirón.
Como siempre, man -s1m fmthard brinda más información, pero resumiré brevemente el uso de fmthard. De entrada, necesitará un archivo de datos ASCII para indicar a fmthard cómo configurar las particiones en los discos de destino. Puede crearlo con el editor que prefiera o con el propio comando fmthard. Al observar el archivo de texto, notará que debe especificar el primer sector y el número de sectores de cada partición en cada disco. Como vengo insistiendo, no queremos en absoluto que se solapen las particiones.
* Partition    Tag       Flag     First Sector  Sector Count
  0  2  00  4194828  1048707
  1  7  00  5243535  4145715
  2  5  00  0  71127180
  3  3  01  0  4194828
  4  0  00  9389250  2097414
  5  0  00  11486664 8389656
  6  4  00  19876320 6292242
Por tanto, lo mejor sería emplear la utilidad format para particionar uno de los discos con la configuración necesaria y después ejecutar el comando fmthard para crear el archivo de datos correspondiente a las particiones de los demás discos.
fmthard -i -n "" /dev/rdsk/c2t1d0s2 > ./mypartition.dat
 
El comando anterior genera las particiones del disco c2t1d0 en el archivo mypartition.dat. A continuación debe usar este archivo dat con el comando fmthard para todos los discos en que desee definir las mismas particiones.
« fmthard -s mypartition.dat -n "volumename" /dev/rdsk/cxtydzs2 »
El inconveniente de fmthard es que actualiza la VTOC. Así que si los discos no tienen etiquetas válidas con las que empezar, fmthard no funciona. Si prevé utilizar o definir el nombre del volumen con el comando fmthard, quizá acabe teniendo una secuencia de comandos con 200 (o cualquiera que sea el número de discos que modifique). No obstante, sigue siendo mejor que configurar lentamente las particiones en un montón de discos con la utilidad format.
Si ha leído la página sobre format del manual, observará lo siguiente:
-e    Enable SCSI expert  menu.  Note  this  option  is  not
      recommended for casual use.
Nos dice que es una opción reservada a los expertos, pero yo he tenido que usarla, no sé usted. Al acceder a la utilidad format, otras dos líneas del menú advierten sobre SCSI:
scsi - independent SCSI mode selects
cache - enable, disable or query SCSI disk cache
Incluso aparece una advertencia rotunda si se introduce la opción scsi. Si en la vida real no es usted un experto en SCSI, seguramente querrá un buen libro donde se explique el protocolo SCSI, sobre todos las selecciones de modo que se pueden cambiar con la opción scsi de la utilidad format. Yo le recomendaría The SCSI Bus and IDE Interface: Protocols, Applications, and Programming, de Friedhelm Schmidt. Aunque a veces he jugueteado con esto, nunca me he arriesgado con un servidor de producción. A veces es mejor dejar las cosas como están.
Un aviso si va a probar con la opción scsi: inicie primero la utilidad format con la opción de registro (-l c2t1d0.log) y después recorra cada pantalla de la utilidad format; así se guardará todo en el archivo de registro. Además, la selección de formato con la opción scsi no es la misma que en el nivel de menús superior.
La opción cache ofrece un menú para la caché de lectura y escritura en disco. No todos los discos SCSI tienen caché y, de los que la tienen, no todos permiten cambiar las opciones de caché. Esta caché es una pequeña cantidad de memoria en el disco, no tiene nada que ver con la memoria del sistema. Ello significa que cada disco puede ser un poco distinto y actuar de diferente manera cuando se usan estas opciones. He comprobado que la caché de lectura suele estar activada, lo que tiene sentido si se va la luz durante una operación de lectura. Los datos deben seguir en el disco. Análogamente, siempre he encontrado desactivada la caché de escritura. También tiene sentido, porque si se va la luz perderá todo lo que hay en la caché de escritura. Cuando la he activado y comparado las cargas de E/S mediante IOzone, las operaciones de lectura mejoraron desde muy poco hasta mucho. Esta mejora varía según el modelo de disco y el proveedor.
Ya que estamos en la utilidad format con la opción -e, veamos otro elemento. Escriba label y obtendrá esta respuesta:
format> label
[0] SMI Label
[1] EFI Label
Specify Label type[0]:
Creo que SMI significa Sun Microsystems. Ésta es la opción predeterminada, que aparece cuando se inicia la utilidad format sin la opción -e. La opción SMI proporciona la configuración estándar de ocho particiones, de las cuales la segunda es la de copia de seguridad.
Si selecciona la etiqueta EFI (Extensible Firmware Interface), la partición obtenida es la siguiente:
ascii name  = <FUJITSU  MAN3367M SUN36G  1502 43d671f>
bytes/sector    =  512
sectors = 71132958
accessible sectors = 71132925
Part      Tag    Flag     First Sector        Size            Last Sector
  0    root    wm               34     128.35MB            262898    
  1    swap    wu           262899     128.37MB            525797    
  2  unassigned    wm                0         0                     0  
  3  unassigned    wm                0         0                     0    
  4  unassigned    wm                0         0                     0    
  5  unassigned    wm                0         0                     0    
  6         usr    wm           525798      33.66GB          71116540    
  7  unassigned    wm                0         0                     0   
  8    reserved    wm         71116541       8.00MB          71132924    

format>
En la página Extensible Firmware Interface de la web de Intel encontrará abundante información sobre EFI.
¿Dónde nos lleva esto? Espero haberle aclarado algunas cosas que puede hacer con la utilidad format y lo que la utilidad format puede hacer por usted.


y luego esta de EMC te explica cómo crear el FileSystem y montar/desmontar la unidad.

Creating and mounting a file system for a Solaris server
To make the partition usable, you must create a file system in the
partition:
1. Create a file system:
newfs /dev/rdsk/disk_name_parition_number
Installing a CX3-20f Storage System in a Fibre Channel Direct Configuration
with a Solaris Server with EMC PowerPath 93
where:
disk_name is the LUN device name
partition_number is the partition number
For example:
newfs /dev/rdsk/emcpower5a
2. When you are prompted to confirm the construction of a new file
system, enter y and press Enter.
3. Create a mount directory for the file system:
mkdir mount_ point
For example:
mkdir /temp
4. Mount the file system:
mount /dev/dsk/disk_name_partition_number_mount_point
For example:
mount /dev/dsk/emcpower5a /temp
This mounts the partition /dev/dsk/emcpower5a onto the mount
point temp.
To verify that the file system was mounted, enter df -k.
This mount command is required every time the server is rebooted.
If you prefer, you can have the file system mount automatically at
boot time by adding this mount command to the /etc/vfstab file.
94 Installing a CX3-20f Storage System in a Fibre Channel Direct Configuration with a Solaris Server
with EMC PowerPath
The server can now write data to and read data from the file system.


Unmounting a file system for a Solaris server
1. Make sure you are out of the mount point directory by entering cd /.
2. Enter
umount mount_point.
For example:
umount /temp


Y si te interesa mas documentación, aquí dejo el enlace del PDF Oficial de Sun:
System Administration Guide: Devices and File Systems (A partir del capitulo 10 esta lo interesante):

 Guidelines for Using the format Utility


Fuente: EMC y SUN


Jorge.




No hay comentarios:

Publicar un comentario