Errores de disco

Existen diversas vías por las que podemos prepararnos nosotros mismos y nuestros equipos para solucionar problemas y errores de disco antes de que ocurran. Quizás lo primero sea familiarizarnos con las herramientas de recuperación y resolución con que contamos. Usar redundancia de discos aminora el impacto de fallos de hardware. Realizar copias de seguridad asegura que los datos que se pierden son mínimos ante un fallo. Protección contra ataques maliciosos, usando anti-virus actualizados. O llevando a cabo un mantenimiento regular de los dispositivos de almacenamiento.

Deberíamos utilizar ASR para guardar la información de configuración importante de disco a un disquete del que rápidamente podamos recuperar el sistema ante un error de disco. También, como se ha comentado en diversas ocasiones, familiarizarnos con la Consola de recuperación (instalarla en los equipos), y tener siempre a mano un CD/DVD de Windows Server 2003 para iniciar la consola en el caso de que el disco sea inaccesible.

Ejecutar con regularidad el comando chkdsk -f -r para el arreglo de problemas de sistema de archivos debido a errores de hard, cortes de electricidad o por errores de software. Programar reinicios del servidor con Autochk programado para comprobación/resolución de problemas de inicio en los volúmenes de sistema. Revisar la información de salida que nos ofrecen los comandos utilizados para identificar problemas que ellos mismos no pueden arreglar.

El uso de redundancia en discos nos ofrece la posibilidad de poder seguir con el funcionamiento del servidor aunque falle un disco, y que podamos reemplazar el defectuoso sin pérdida de datos. Windows Server 2003 nos ofrece redundancia por medio de software, pero un uso de redundancia mediante controladoras RAID minimiza el impacto en el rendimiento y nos permitirá el cambio de discos defectuosos sin pérdida de tiempo.

Como mínimo, deberíamos realizar copia de seguridad de datos críticos diariamente (sea de día o programarla cada noche). La redundancia no sustituye la necesidad de realizar copias de seguridad. Incluso los sistemas de archivo redundantes pueden fallar, y la redundancia no protege contra archivos corruptos o que han sido corrompidos por una aplicación. Los archivos corruptos deben restaurarse desde una copia de seguridad guardada y creada antes de producirse la corrupción.

Los virus son una fuente significativa de problemas de discos y sistema de archivos, así que:

  • Tengamos en nuestros sistemas al menos un servidor con programas de detección de virus y que se actualice automáticamente.
  • Configurar la detección de virus donde sea posible, Por ejemplo, un módulo anti-virus para Exchange.
  • Implementar un correcto servicio de actualización de software (WSUS por ejemplo), para una puesta al día del sistema eficiente.
  • Desconfiar de scripts o aplicaciones que no sean de confianza en un servidor.
  • NO USAR un servidor como una estación de trabajo. Y menos para usar la navegación web o ver el correo electrónico.

Una fragmentación en los discos no produce fallos de disco, aunque puede producir un peor rendimiento. Una programación regular de desfragmentación en horarios de poco o ningún uso, ayudará a mantenerlos adecuadamente. Guardar la salida de los comandos de defragmentación para poder consultarlos y ver que ésta se realiza como queremos.

Herramientas

Como ya hemos visto en otras ocasiones, disponemos de:

Windows Server 2003:

Característica Descripción
ASR Recuperación del sistema en dos partes que nos permite la restauración del estado del sistema operativo con los archivos guardados en un medio de almacenamiento y la información de configuración del disco guardada en un disquete.
Desfragmentador de disco Windows Server 2003 nos proporciona dos caminos para la desfragmentación de discos: El elemento de consola y la versión de la herramienta en línea de comandos defrag. Ambas pueden desfragmentar volúmenes NTFS con tamaños de clúster superiores a 4KB y archivos con menos de 16 clústers. También ambas, pueden desfragmentar la MFT en volúmenes NTFS.
DiskPart Comando para soluciones desde la línea de comandos como alternativa al administrador de discos.
Fsutil.exe Herramienta en línea de comandos con diversidad de parámetros para usar en la administración de sistema de archivos.
DiskProbe mejorado Añadido ver volúmenes FAT32.
Chkdsk mejorado Actúa más rápidamente, puede corregir MFT corruptas en las que antes fallaba.

Chkdsk

Cuando ejecutamos el comando Chkdsk en volúmenes NTFS el proceso que sigue se divide en tres etapas principalmente y en una 4 y 5 opcionales. El comando muestra su progreso para cada una de estas etapas.

CHKDSK está comprobando archivos (etapa 1 de 3)…
0% completado. (0 de 36304 registros de archivos procesados)
…          
9% completado. (32674 de 36304 registros de archivos procesados)

36304 registros de archivos procesados.
Comprobación de archivos terminada.
10% completado. (1 de 26 registros de archivos grandes procesados)
26 registros de archivos grandes procesados.

0 registros de archivos no válidos procesados.

0 registros de EA procesados.4 registros de análisis procesados.

CHKDSK está comprobando índices (etapa 2 de 3)…
10% completado. (1 de 123120 entradas de índice procesadas)
…          

92% completado. (123042 de 123120 entradas de índice procesadas)
123120 entradas de índice procesadas.
Comprobación de índices terminada.         
5 archivos no indizados procesados.

CHKDSK está comprobando descriptores de seguridad (etapa 3 de 3)…
93% completado. (1638 de 36304 descriptores procesados) 
…                 
98% completado. (31406 de 36304 descriptores procesados)

36304 descriptores de seguridad procesados.
Comprobación de descriptores de seguridad terminada.
2449 archivos de datos procesados.
CHKDSK está comprobando el diario USN…
99% completado. (1048576 de 28017208 bytes de USN procesados)   
100% completado. (28016640 de 28017208 bytes de USN procesados)

28017208 bytes de USN procesados.                                    
Se ha completado la comprobación del diario USN.

133154720 KB de espacio total en disco.
   5587560 KB en 32604 archivos.
      9608 KB en 2450 índices.
         0 KB en sectores defectuosos.
    134632 KB en uso por el sistema.
El archivo de registro ha ocupado      65536 kilobytes.
127422920 KB disponibles en disco.

      4096 bytes en cada unidad de asignación.
  33288680 unidades de asignación en disco en total.
  31855730 unidades de asignación disponibles en disco.

Etapa 1: Se verifica cada segmento de registro de archivo en la MFT. El tanto por cien que se muestra en esta etapa indica la MFT verificada.

Etapa 2: Comprobación de los directorios en el volumen. Se examina cada índice (directorio) en el volumen por consistencia interna y se verifica que cada archivo y directorio representados por un segmento de registro de archivo en la MFT está referenciado por al menos un directorio. También confirma que cada archivo y subdirectorio referenciado en cada directorio actual existe como un segmento de registro de archivo válido en la MFT y se comprueban referencias circulares de directorio. Entonces se confirma que los datos no se han alterado y la información del tamaño asociado está actualizado en el listado de directorios de estos archivos.

El tanto por cien mostrado es el número total de archivos en el volumen que son comprobados. En el caso de muchos archivos y carpetas, puede ser una etapa con gran duración.

Etapa 3: Se verifican los descriptores de seguridad para cada volumen. Se examinan cada descriptor de seguridad asociado con cada archivo y directorio en el volumen, verificando que cada estructura de descriptor está bien formada y consistente.

El tanto por cien es referido al número de archivos y directorios del volumen comprobados.

Etapa 4(opcional): Verificación de archivos de datos. Se comprueban todos los clústers en uso. Tanto esta etapa como la siguiente (5) se realizan sólo si especificamos el parámetro /r al ejecutar el comando chkdsk. Este parámetro confirma que los sectores en cada clúster es utilizable. Normalmente no es necesario especificarlo ya que NTFS identifica y remapea los sectores defectuosos durante el curso de operaciones normales, pero puede usarse si se sospecha de que el disco tiene sectores defectuosos o erróneos.

El tanto por cien mostrado se basa en los clústers que se han comprobado. Los clústers usados necesitan más tiempo de comprobacón que los no usados, siendo la etapa 4 más larga que la 5 en un volumen con cantidad igual de usados y no usados. En el caso de mayoría de no usados, la etapa 5 tardará más que la 4.

Etapa 5(opcional): Verificación del espacio libre. Se comprueban los clústers no usados. Sólo se lleva a cabo si se especifica el parámetro /r.

El tanto por cien se refieren a los clústers no usados comprobados.

 

Autochk.exe

Autochk.exe es una versión de Chkdsk que se ejecuta sólamente durante el inicio de Windows Server 2003 y se ejecuta cuando:

  • Chkdsk no tiene uso exclusivo del volumen. Si el comando no tiene uso exclusivo de un volumen al ejecutarlo se ofrece programar la comprobación en un próximo reinicio. Siempre ocurre si el volumen es el de arranque o de sistema. Si respondemos S, la autocomprobación se programará, en caso contrario se deja sin efecto.
  • El volumen ha sido marcado como dañado. Si el sistema de archivos tiene marcado el volumen como dañado. Autochk ejecutará el proceso de reparación al inicio. Los volúmenes se marcan como dañados si el sistema de archivos detecta un error en el mismo. Si autochk encuentra un volumen dañado, se dan 10 segundos de espera y luego comienza el proceso de reparación. Si cancelamos Autochk cuando un volumen está dañado, éste intentará ejecutarse de nuevo después de 10 segundos cada vez que el equipo se reinicie.

El comando Chkntfs.exe nos servirá para cambiar el tiempo de espera de Autochk, de 0 hasta 3 días. Sin embargo una espera larga significa que el equipo no se reiniciará hasta pasado ese tiempo o hasta que pulsemos una tecla para cancelar Autochk.

Si elegimos permitir el autochk, podemos revisar el informe en el visor de sucesos(registro de aplicación). La información de autochk es registrada por el servicio Winlogon, podemos filtrar las entradas según este origen.

Discos, volúmenes y sistemas de archivo(II).

MBR en discos dinámicos.

Al igual que los discos básicos, los discos dinámicos contienen un MBR con su código de inicio maestro, la firma del disco y, la tabla de particiones del disco. Sin embargo, la tabla de particiones en los discos dinámicos no contienen una entrada por cada volumen en el disco, ya que la información sobre el volumen está guardada en la BD del disco dinámico. En su lugar, la tabla de particiones contiene entradas por volumen del sistema, volumen de arranque(si no es el mismo que el del sistema), y uno o más particiones que abarcan el espacio restante no asignado en el disco. Todas estas particiones usan el ID de sistema 0x42, que indica que son particiones que están en un disco dinámico. Colocar estas particiones en la tabla de particiones impide que las utilidades de disco basadas en MBR interpreten el espacio disponible para nuevas particiones.

Sectores de inicio en discos MBR

El sector de inicio, que se ubica en el sector 1 de cada volumen, es una estructura de disco que es crítico para el inicio del equipo. Contiene el código ejecutable y los datos necesarios por el código, incluida la información que usa el sistema de archivos para el acceso al volumen. El sector de inicio se crea durante el formato del volumen. Al final de éste sector hay una estructura de 2 bytes denominada signature word o marcador de fin de disco, que está siempre establecido a 0x55AA. En equipos con Windows Server 2003, el sector de inicio en la partición activa carga en memoria y ejecuta el Ntdlr, que carga el menú de inicio si existen varias instalaciones de Windows, o carga el sistema operativo directamente en el caso de una única instalación.

El sector de inicio consiste en los elementos:

  • Una instrucción de interrupción de CPU de 24 bits.
  • La identificación del fabricante original (ID de OEM).
  • Una estructura de datos que es el BPB (BIOS parameter Block).
  • El BPB extendido.
  • El código ejecutable de inicio (bootstrap code) que arranca el sistema.

Cada sector de inicio en Windows Server 2003 tiene los elementos descritos sin importar si el disco es básico o dinámico.

El BPB describe los parámetros físicos del volumen: el BPB extendido comienza inmediatamente después del BPB. Debido a los diferentes tipos de campos y de la cantidad de datos que contienen, el tamaño del BPN es diferente para sectores de inicio FAT16, FAT32 y NTFS.

Los controladores de dispositivo de disco utilizan la información en el BPB y el BPB extendido para leer y configurar los volúmenes. El área que sigue al BPB extendido suele contener código ejecutable de inicio, que lleva a cabo las acciones necesarias para seguir con el proceso de arranque.

Procesos de arranque del sector de inicio

Los equipos usan este sector para ejecutar las instrucciones de arranque. El proceso de arranque inicial resumido:

  • La BIOS y la CPU inician la POST.
  • La BIOS selecciona el dispositivo de arranque, normalmente el primer disco que encuentra, si la controladora no está configurada para iniciar desde un disco/dispositivo diferente.
  • La BIOS carga el primer sector físico del dispositivo de arranque en memoria y transfiere la ejecución a ésta dirección de memoria.
  • Si el dispositivo de arranque es un disco, la BIOS carga el MBR. El código de inicio en el MBR carga a su vez el sector de inicio de la partición activa y le transfiere la ejecución a esta dirección de memoria. En equipos con Windows Server 2003, el código de inicio del sector de inicio busca el Ntldr, lo carga en memoria y le pasa el control.
  • Si la unidad A contiene un disquete, la BIOS carga el primer sector del disco en memoria. Si es un disco de arranque con formato MS-DOS y tiene los archivos de sistema necesarios, se carga el sector de inicio en la memoria y se usa el código para transferir el control a la CPU y el archivo IO.sys. Si el formato es con un sistema reciente de Windows, una vez cargado el sector de inicio se transfiere el control al Ntldr. En el caso de no ser un disco de inicio, se muestra el mensaje:

Non-system disk or disk error. Replace and press any key when ready

Si el mensaje es similar y el inicio se está ejecutando sobre un disco duro, el sector de inicio podría estar corrupto.

En principio, el proceso de arranque es independiente del formato del disco y del sistema operativo. Las características de sistema operativo y de sistema de archivo son importantes cuando se inicia el código ejecutable de inicio del sector de inicio.

Elementos de un sector de inicio

El MBR transfiere la ejecución a la instrucciones ejecutables de 32-bits del sector de inicio, por lo que los 3 primeros bytes de éste han de ser válidos. Esto incluye una instrucción de salto que irá a los siguientes bytes no ejecutables.

Lo siguiente a la instrucción de salto es el ID de OEM (8 bytes), una cadena de carácteres que identifica el nombre y versión del sistema operativo de formato del volumen. Para respetar la compatibilidad con MS-DOS, Windows Server 2003 graba “MS-DOS5.0” en éste campo en discos FAT16 y FAT32. En discos NTFS, graba “NTFS”.

Posteriormente al ID OEM es el BPB, que proporciona información que permite al código ejecutable localizar al Ntldr. El BPB siempre se inicia en el mismo offset, parámetros estándar en sitio conocido. Tamaño y geometría variable del disco están encapsulados en el BPB. Ya que la primera parte del sector de inicio es una instrucción de salto de CPU de 24 bits, el BPB puede extenderse en el futuro agregando nueva información al final. La instrucción de salto necesita pocos ajustes para adaptarse al cambio. El BPB se guarda en un formato de paquete(sin alineamiento).

Los sectores de inicio y los BPB y BPB extendidos son distintos según si son FAT16, FAT32 o NTFS.

Sectores de Disco en discos GPT

GPT usa estructuras de particiones primarias y de copia de seguridad para proporcionar redundancia. Estas estructuras se ubican al comienzo y el final del disco. GPT identifica estas estructuras por sus direcciones LBA (Logical Block Address) más que por sus sectores relativos. Usando este esquema, los sectores en un disco están numerados del 0 a n-1, donde n es el número de sectores del disco.

La primera estructura en un disco GPT es el Protective MBR en el LBA0, seguido por la cabecera GPT primaria en LBA1. Esta cabecera es seguida por la entrada-array de partición GUID primaria, que incluye una entrada de partición por cada una de ellas en el disco.

Las particiones en el disco se situan entre las entradas-arrays GUID primaria y de copia de seguridad. Las particiones deben colocarse dentro del primero y el último LBAs utilizables, como esté especificado en la cabecera de particiones GPT.

Protective MBR

La especificación EFI (Extensible Firmware Interface) requiere que LBA0 esté reservado, por compatibilidad con el código y un Protective MBR. El protective MBR tiene el mismo formato que un MBR existente, y contiene una entrada de partición con un valor de ID de sistema de 0xEE. Esta entrada reserva el espacio entero del disco, incluyendo el usado por la cabecera GPT, como una partición única. El protective MBR se incluye para impedir que las herramientas de disco diseñadas para discos MBR interpreten el disco, como el espacio disponible y que no sobreescriban las particiones GPT. EFI ignora el protective MBR y no ejecuta código MBR.

Cabecera de particiones GPT

La cabecera GPT determina el rango de direcciones de bloques lógicos que son utilizables mediante las entradas de partición. También su localización en el disco, su GUID y el CRC32 (32 bits cyclic redundary check checksum) que se usa para la comprobación de la integridad de la propia cabecera GPT.

Los discos GPT usan una cabecera de partición GUID primaria y de copia de seguridad:

  • La primaria en LBA1, inmediatamente después del protective MBR.
  • La copia de seguridad en el último sector del disco. No hay datos después de esta.

EFI comprueba la integridad de las cabeceras mediante CRC32, un valor calculado que se usa para comprobación de errores en los datos . Si la primaria está corrupta, se comprueba la copia de seguridad, si ésta es válida, se usa para restaurar la primaria. Este proceso trabaja al revés si la primaria es correcta y la de copia es la corrupta. Si ambas están corruptas, entonces Windows Server Itanium no puede acceder al disco.

AVISO: Cualquier herramienta de disco no diseñada específicamente, como Diskpart.efi o las herramientas de versión Itanium, pueden realizar cambios que hagan inválidos los checksum y dejar los discos GPT inaccesibles.

Entrada-array GUID Partición

Similar a la tabla de particiones en los discos MBR, la entrada-array de particiones GUID contiene entradas de particiones que representan cada una de ellas en el disco. Las versiones Itanium de Windows Server 2003 crean un array de 16.384 bytes, por lo que el primer bloque utilizable se encuentra en una LBA igual o superior a 34. (EL LBA0 contiene el protective MBR, LBA1 la cabecera GPT, y entre el LBA2 y LBA33 se utiliza por la entrada-array de particiones GUID).

Cada disco GPT contiene dos entradas-array de particiones GUID:

  • La primaria que está justamente después de la cabecera y que finaliza antes del primer LBA utilizable.
  • La de copia de seguridad, ubicada entre el último LBA utilizable y la cabecera GUID de la misma copia de seguridad.

El valor CRC32 se guarda en la cabecera GPT. Cuando se agrega una nueva partición, se actualiza el CRC32 en las entradas primaria y copia de seguridad y luego se actualiza el tamaño de checksum de la cabecera GPT.

Entrada de partición GUID

Tiene un tamaño de 128 bytes y establece una única partición. Ya que las versiones Itanium crean una entrada-array que tiene 16.384 bytes, podemos tener un máximo de 128 particiones en un disco básico GPT

Cada entrada de partición GUID comienza con una partición tipo GUID. El tipo GUID de 16-bytes, similar a un ID de sistema en la tabla de particiones de un disco MBR, identifica el tipo de datos que la partición contiene y como se usa la partición. Las versiones Itanium sólo reconocen una serie de particiones GUI y no montan ninguna otra más. Sin embargo, los OEMs y distribuidores independientes (LSVs), como otros sistemas operativos, pueden establecer tipos adicionales.

Atributos de la entrada de partición GUID

Son descriptores de como se usa la partición. Están especificados dentro de un valor de 64-bits, EFI es compatible con hasta 64 atributos distintos. Las versiones Itanium usan 4 atributos:

Bits Descripción
Bit 0 Especifica que la partición es necesaria para el funcionamiento de la plataforma. Los OEMs deben establecer este bit para protegerla de sobrescritura por herramientas de disco de Windows Server 2003.
Bit 60 Marca la partición como sólo-lectura. Usado por particiones primarias básicas de cierto tipo.
Bit 62 Marca la partición como oculta. Usado por particiones primarias básicas de cierto tipo.
Bit 63 Impide que el sistema asigne de forma predeterminada una letra de unidad a la partición. Usado por particiones primarias básicas de cierto tipo.

Sectores de inicio en discos GPT

Similares a los de discos MBR, exceptuando que EFI ignora todo el código de 32-bits en el sector de arranque. En su lugar, EFI usa su propio controlador de sistema de archivos para leer el BPB y entonces monta el volumen.

Discos, volúmenes y sistemas de archivo(I).

Los errores en los discos y sistemas de archivo en Windows Server 2003 surgen de situaciones diversas, errores de hardware, cortes de electricidad, pobre mantenimiento del sistema, virus, o errores humanos. Cuando se intenta solucionar uno de estos problemas hemos de tener en cuenta el master boot record MBR, la tabla de particiones GPT y los sectores de arranque.


Para solucionar este tipo de problemas parece evidente que conocer el funcionamiento de los discos, volúmenes y el sistema de archivo es una de las necesidades requeridas.


Un disco es un término que usamos para representar un dispositivo físico de almacenamiento. En la mayoría de casos, es una simple unidad física conectada al equipo. Sin embargo, las controladoras de disco pueden hacer abstractos los dispositivos físicos en Windows Server 2003. Es bastante común implementar almacenamiento RAID mediante una controladora hardware, y combinar varios discos físicos que representen a una única unidad de disco. En este caso, el término disco se referirá al array RAID que se compone de múltiples discos físicos.


Un Volumen es un mecanismo por el que Windows Server 2003 usa para dividir un disco lógicamente. Pueden haber uno o múltiples volúmenes en un disco. Adicionalmente, un único volumen puede abarcar múltiples discos.


Antes, una aplicación podía almacenar archivos en un volumen, el volumen debía estar formateado con un sistema de archivos. El sistema controla como los archivos, directorios y otros tipos de datos se guardan en un volumen. Cada volumen tiene sólo un sistema de archivos.


Un sector es una unidad de almacenamiento en un disco, y normalmente tiene un tamaño de 512 bytes. Los equipso acceden a ciertos sectores de un disco durante su inicio para determinar que sistema operativo iniciar y donde se encuentran las particiones. Los datos guardados en estos sectores varía dependiendo de la plataforma del equipo.


Los equipos que ejecutan sistemas de 32-bits de Windows Server 2003 comienzan el proceso de arranque desde discos con MBR. Aquéllos que ejecutan versiones Itanium, arrancan desde discos con GPT. Ambos discos, MBR y GPT, tienen sectores críticos para el arranque, pero la diferencia con el resto es que no son visibles desde la interfaz gráfica de usuario. En su lugar, debemos usar herramientas de edición, como disk-probe, para ver como están estructurados los datos en estos sectores.



Sectores en discos MBR


Los dos sectores críticos en equipos 32-bits:



  • MBR, siempre ubicado en el sector 1 del cilindro 0, cabezal 0, el primer sector del disco.
  • l sector de arranque, que se encuentra en el sector 1 de cada volumen.

Estos sectores contienen tanto el código ejecutable como los datos necesarios en su ejecución.



MBR en discos básicos

El MBR, la estructura de datos más importantes en el disco, se crea en el momento en que se particiona el disco. Contiene una pequeña porción de código ejecutable denominado código de arranque maestro, la firma del disco y la tabla de aprticiones del disco. Al final del MBR hay una estructura de 2-bytes llamada firma o marca de final de sector, que siempre está establecida a 0x55AA. Una firma también distingue el final de un EBR (extended boot record) y el sector de arranque.


La firma de disco, un número único en la posición 0x01B8, lo identifica ante el sistema operativo. Windows Server 2003 lo usa como un índice para guardar y recuperar información del disco, como las letras de unidad, desde el registro.


El código de Master boot realiza lo siguiente:



  1. Busca la partición activa en la tabla de particiones.
  2. Sector de inicio de la partición activa.
  3. Carga una copia del sector de arranque desde la partición activa a la memoria.
  4. Transfiere el control al código ejecutable del sector de arranque.

Si el código no puede completarlas, el sistema mostrará un mensaje parecido a cualquiera de los siguientes:


Invalid partition table (Tabla de particiones no válida)


Error loading operating system (Error en la carga del sistema operativo)


Missing operating system (No se encuentra sistema operativo)


Nota: Las unidades removibles, como disquetes o unidades omega, etc… no contienen MBR. El primer sector de estos es el sector de arranque. Aunque cada disco contiene un MBR, el código de sector de arranque sólo se utiliza si el disco contiene la partición primaria activa y el equipo considera al disco como un dispositivo de inicio.


Tabla de particiones en discos básicos


La tabla de particiones es una estructura de datos de 64-bits que se usa para identificar el tipo y ubicación de las particiones en un disco, según una capa estándar independiente del sistema operativo. Cada entrada de la tabla de particiones tiene un tamaño de 16 bytes, con un máximo de cuatro entradas. Cada entrada se inicia en una posición predeterminada desde el que comienza el sector:



















Partición 1 0x01BE (446)
Partición 2 0x01CE (462)
Partición 3 0x01DE (478)
Partición 4 0x01EE (494)

 


La siguiente imagen muestra una parte de una tabla de particiones de MBR de un disco no arrancable con tres particiones NTFS. Cuando hay menos de cuatro particiones en un disco, los campos de la tabla de la partición restante están establecidos a 0.


partitiontable


La tabla describe los campos en cada entrada de la tabla de particiones. El ejemplo corresponde a la primera entrada de la tabla de particiones anterior. El byte offset corresponde a las direcciones. Hay tres entradas adicionales cuyos valores pueden calcularse añadiendo 10h al byte offset específico de cada entrada adicional de la tabla de particiones.


























































Byte offset Tamaño campo Valor de ejemplo Nombre del campo y definición.
0x01BE 1 byte 0x00 Indicador de arranque. Indica si el volumen es la partición activa:
00 No se usa como arranque
80 Partición activa
0x01BF 1 byte 0x01 Cabezal de inicio
0x01C0 6 bits 0x01* Sector de inicio. Sólo se utilizan los bits 0 al 5. Los dos superiores, 6 y 7, los utiliza el campo de Cilindro de inicio.
0x01C1 10 bits 0x00* Cilindro de inicio. Usa 1 byte adicional a los 2 superiores del campo de sector de inicio para tener el valor de cilindro. El cilindro de inicio es un número de 10 bits que tiene un valor máximo de 1023.
0x01C2 1 byte 0x07 ID de sistema. Determina el tipo de volumen.
0x01C3 1 byte 0x7F Cabezal final.
0x01C4 6 bits 0x3F* Sector final. Sólo se utilizan los bits 0 al 5. Los dos superiores, 6 y 7, los utiliza el campo de cilindro final.
0x01C5 10 bits 0x98* Cilindro final Usa 1 byte adicional a los 2 bits superiores del campo de sector final para obtener el valor de cilindro. El cilindro final es un número de 10 bits, con un valor máximo de 1023.
0x01C6 4 bytes 0x3F000000 Sectores relativos. El offset desde el comienzo del disco hasta el comienzo del volumen, contado en sectores.
0x01CA 4 bytes 0x41D31200 Sectores totales. Número total de sectores en el volumen.

* Los valores de ejemplo con asterisco no representan con precisión el valor de los campos ya que el campo es entre 6 o 10 bits y los datos grabados lo son en bytes.


Los números sectores relativos y sectores totales se guardan en un formato especial “little endian” o en orden de byte reverso. Este formato “little endian” es un método que significa que el byte de menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso en la más alta, lo que hace que el de menor peso aparezca el primero en la notación hexadecimal. Por ejemplo: el valor de ejemplo del campo sectores relativos en la tabla, 0x3F000000 es la representación little endian de 0x0000003F. El equivalente en decimal de este número little endian es 63. El valor de ejemplo para sectores totales es 0x41D31200, que representa 0x0012D341. Por tanto, en decimal, hay 1.233,729 sectores en el volumen. El volumen tiene un tamaño de sector de 512 bytes (que no se indica en la tabla de particiones). Si multiplicamos el número de sectores por su tamaño en bytes se ve que el volumen es de 600MB.


El campo de Indicador de arranque es el primer indicador de la tabla de particiones e indica si el volumen es la partición activa. Sólo una partición primaria en el disco puede tener este campo establecido.


Es posible tener distintos sistemas operativos en diferentes sistemas de archivo y en diferentes volúmenes. Podemos usar las herramientas de disco, como el administrador de disco, Diskpart o el comando Fixmbr de la consola de recuperación para marcar una partición primaria como activa.


El campo ID del sistema es otro de los elementos presentes en la tabla de particiones, donde se indica el sistema de archivos, FAT, FAT32 o NTFS que se utilizó para el formato del volumen. Este campo también indica si es una partición extendida. Windows Server 2003 lo usa para saber que controladores de sistema de archivos cargará durante el arranque. Y los valores posibles son:

























































Valor de ID Tipo de partición
0x01 Partición primaria FAT12 o una Unidad lógica.(Menor de 32680 sectores en el volumen)
0x04 Partición primaria FAT16 o una Unidad lógica.(Entre 32680 y 65535 o 16MB-33MB)
0x05 Partición extendida
0x06 Partición grande DOS FAT16 o Unidad lógica.(33MB-4GB)
0x07 Sistema de archivos instalable (Partición NTFS o Unidad lógica)
0x0B Partición FAT32 o Unidad lógica
0x0C Partición FAT32 o Unidad lógica usando las extensiones de BIOS INT 13h
0x0E Partición grande DOS FAT16 o Unidad lógica usando las extensiones de BIOS INT 13h
0x0F Partición extendida usando las extensiones de BIOS INT 13h
0x12 Partición EISA u OEM
0x42 Volumen dinámico
0x84 Partición de administración de energía-hibernación
0x86 Volumen multidisco FAT16 creado con Microsoft Windows NT 4.0
0x87 Volumen NTFS multidisco creado por Microsoft Windows NT 4.0
0xA0 Partición de hibernación de portátil
0xEE Partición GPT
0xEF Partición de sistema EFI o un disco MBR.

Windows Server 2003 no es compatible con volúmenes multidisco que se crearon con MS Windows NT 4.0 y anteriores, y que usan los ID 0x86, 0x87, 0x8B o 0x8C.


En el caso de estar actualizando desde NT 4.0 primero debemos realizar una copia de seguridad y eliminar los volúmenes multidisco antes de dicha actualización. Al finalizarla, creamos los volúmenes dinámicos y restauramos los datos. Si no lo hacemos así debemos usar la herramienta Ftonline de las Windows Support Tools para acceder al volumen después de finalizar la actualización.


Si la actualización es desde Windows 2000 server, debemos convertir los volúmenes multidisco en volúmenes dinámicos antes de comenzar la instalación o se detendrá.


MS-DOS(c) sólo puede acceder a volúmenes que tienen un ID 0x01, 0x04, 0x05 o 0x06. Sin embargo, podemos suprimir volúmenes que tienen otros valores de la tabla usando el Administrador de discos o Diskpart.


Los campos cilindro, cabezal y sectores iniciales y finales. En conjunto suelen definirse como campos CHS, son elementos adicionales de la tabla de particiones. Estos campos son esenciales para el inicio del equipo. El MBR los utiliza para encontrar y cargar el sector de arranque de la partición activa. Los campos de inicio de CHS en particiones no activas apuntan a los sectores de arranque de las restantes particiones y el EBR de la primera unidad lógica en la partición extendida.


Conocer el sector inicial de una partición extendida es muy importante para soluciones de problemas de disco a bajo-nivel. Si el disco falla, necesitamos trabajar con el punto inicial de la partición (entre otros factores) para recuperar datos guardados.


El campo de cilindro final en la tabla de particiones es de 10 bits, que limita el número de cilindros que pueden ser descritos en la tabla de partición a un rango entre 0 y 1023. Los campos cabezal inicial y final son de 1 byte cada uno, que limita el rango del campo entre 0 y 255. Los campos sector inicial y final son de 6 bits, que limita el rango de dichos campos entre 0 y 63. Sin embargo, la enumeración de los sectores se inicia en 1 (no en 0, como en otros campos), así el máximo número de sectores por pista es 63.


Ya que la mayoría de discos están formateados a bajo-nivel con un estándar de 512 bytes por sector, la máxima capacidad de disco descrita mediante los campos cilindro, cabezal y sector de la tabla de partición en estos discos se calcula como sigue:


Máxima capacidad = tamaño de sector x cilindros(10 bits) x cabezales(8 bits) x sectores por pista(6 bits)


512 x 1024 x 256 x 63 = 8.455.716.864 (7,8GB)


Windows Server 2003 y otras versiones de Windows que son compatibles con las extensiones BIOS INT 13h pueden acceder a particiones que excedan estos 7,8 GB primeros del disco ignorando los campos CHS iniciales y finales en favor de los campos de sectores relativos y totales.


Windows 2000 y Windows Server 2003 ignoran los campos CHS iniciales y finales sin hacer caso de si la partición supera los primeros 7,8GB del disco. Sin embargo, Windows Server 2003 debe colocar los valores apropiados en los campos CHS iniciales y finales ya que Windows 95, 98 y Millenium (que son compatibles con las extensiones BIOS INT 13h) usan estos campos si la partición no supera los 7,8GB primeros del disco. Estos campos también se requieren para mantener la compatibilidad con las extensiones BIOS INT 13h para el inicio.


MS-DOS y otros sistemas de Windows que no soportan las extensiones BIOS INT 13h ignoran las particiones que superen el límite de 7,8GB ya que usan un ID que sólo reconocen los sistemas compatibles con dichas extensiones.


Tanto el sistema operativo como el equipo deben ser compatibles con las extensiones de BIOS INT 13h si queremos crear particiones que excedan los primeros 7,8GB del disco.


Los campos sectores relativos y totales: El campo de los sectores relativos representan el offset desde el comienzo del disco hasta el comienzo del volumen, contado en sectores, para el volumen descrito en la entrada de la tabla de particiones. El campo de sectores totales representan el total de sectores en el volumen.


El uso de los campos sectores relativos y sectores totales(que resultan en un número de 32-bits) proporciona 8 bits más para representar el número total de sectores que los que hace el esquema CHS. Esto nos permite la creación de particiones que contienen más de 232 sectores. Con un tamaño estándar de sector de 512 bytes, los 32 bits usados para representar los campos de sectores relativos y totales se traducen en un máximo de 2 Terabytes como tamaño de partición.


En la imagen vemos el MBR, tabla de particiones y sectores de arranque de un disco básico con cuatro particiones. Los campos en la tabla de particiones y las tablas de las particiones extendidas contienen la misma información.


discobasico 


EBR(Extended Boot Record) en discos básicos. Un EBR, que consiste en una tabla de partición extendida y la firma para el sector, existe en cada unidad lógica en la partición extendida. Contiene sólo la información sobre la primera cara del primer cilindro de cada unidad lógica en la partición extendida. El sector de arranque en una unidad lógica está usualmente ubicada en uno de los sectores relativos 32 o 63. Sin embargo, si no hay partición extendida en un disco, no hay EBRs ni unidades lógicas.


La primera entrada en una tabla de partición extendida de la primera unidad lógica apunta a su propio sector de arranque. La segunda entrada apunta al EBR de la siguiente unidad lógica. Si no hay más unidades lógicas, la segunda entrada no se usa y se le graban una serie de ceros. Si hay unidades lógicas adicionales, la primera entrada de la tabla de partición extendida para la segunda unidad lógica apunta a su propio sector de arranque. La segunda entrada para la segunda unidad lógica apunta al EBR de la siguiente unidad lógica. La tercera y cuarta entradas de una tabla de partición extendida nunca se usan.


Como podemos ver en la imagen: los EBRs de las unidades lógicas en la partición extendida son una lista enlazada. Vemos tres unidades lógicas en una partición extendida, ilustrando la diferencia en las tablas de partición extendida entre las unidades lógicas precedentes y la última unidad lógica.


EBRs


Con la excepción de la última unidad lógica en la partición extendida, el formato de la tabla de partición extendida, descrita en la tabla siguiente, se repite para cada unidad lógica. La primera entrada identifica a la propia unidad su sector de arranque y la segunda entrada el EBR de la siguiente unidad lógica. La tabla de partición extendida para la última unidad lógica tiene sólo listada la entrada de su propia partición. De la segunda a la cuarta entrada no se utilizan en la última tabla de partición extendida.


















Entrada Contenido de la entrada
Primera Información sobre la actual unidad lógica en la partición extendida, incluyendo la dirección de inicio de los datos.
Segunda Información sobre la siguiente unidad lógica en la partición extendida, incluyendo la dirección del sector que contiene el EBR de la siguiente unidad lógica. Si no hay unidades lógicas adicionales, este campo no se usa.
Tercera sin usar
Cuarta sin usar

Los campos en cada entrada de la tabla de partición extendida son idénticos a las entradas de la tabla de particiones del MBR.


El campo de sectores relativos en una entrada tabla de partición extendida muestra el número de sectores que están en el offset desde el comienzo de la partición extendida al primer sector en la unidad lógica. El número en el campo de sectores totales se refiere al número de sectores que componen la unidad lógica, y es igual al número de sectores desde el sector de arranque determinado por la entrada de la partición extendida al final de la unidad lógica.

Preparados para los stop error

Algunas técnicas útiles de soft-hard relacionadas con los errores pueden sernos de utilidad para nuestro propio entrenamiento ante la posibilidad de ocurrencia de estos problemas y así identificar la causa.

Impedir que el sistema se reinicie automáticamente

Cuando sucede un stop error, Windows Server nos muestra el mensaje de error relacionado y después lleva a cabo una de dos:

  • Se vuelve inestable, ‘no responde’.
  • Se reinicia automáticamente

De forma predeterminada se reinicia automáticamente después de un stop error a menos que se vuelva inestable y no responda. Si se reinicia inmediatamente puede que no dispongamos de suficiente tiempo para atender a la información del mensaje de error, además de perder la oportunidad de poder cambiar las opciones de arranque o de iniciarlo en modo seguro. Deshabilitar este reinicio predeterminado nos permite una lectura más comoda del mensaje de error. El deshabilitarlo hace que que el sistema permanecerá detenido hasta que lo reiniciemos manualmente. Aunque es recomendable que no se deshabilite en servidores críticos o remotos donde el reinicio manual es más problemático o poco accesible.

Para deshabilitar la opción de reinicio automático:

  1. Desde el panel de control, icono Sistema, pestaña avanzadas.
  2. En la sección Inicio y recuperación, botón configuración.
  3. En el cuadro Error de sistema, desmarcamos la casilla de Reinicio automático.

dibable-restart

 

Guardar la información del mensaje de error

Con el reinicio automático deshabilitado, podemos reiniciar el equipo manualmente después de mostrarnos el mensaje de error. Este mensaje nos proporciona información, como el número de error y parámetros y los nombres de controladores, que nos servirán para resolver el problema. Sin embargo, esta información desaparecerá en cuanto reiniciemos el equipo. Normalmente puede recuperarse después del reinicio desde el registro del sistema o analizando el archivo de volcado. Pero hay situaciones en que la información mostrada en pantalla no se registra adecuadamente y por tanto, es importante poder guardarla para consultas futuras. Antes de reiniciar el sistema, hemos de llevar a cabo algunas acciones para asegurarnos que se ha guardado la info para utilizarla después.

  1. Copiar los datos de las secciones técnica y de controlador del mensaje de error.
  2. Copiar y evaluar las sugerencias de la sección de acciones recomendadas. Los mensajes de error suelen proporcionar tips para solucionarlo.
  3. Comprobar las secciones de Debug port y Dump file status para verificar que Windows Server ha creado el archivo de volcado de memoria.
  4. Si hay un archivo de volcado de memoria, lo copiamos a cualquier otro medio removible, o en una unidad de red. Podemos usar la consola de recuperación para ello si somos incapaces de reiniciar Windows.

Errores más comunes

La información más extensa sobre errores de stop se encuentra en las herramientas de depuración de Windows, también podemos encontrar información actualizada usando el número de error, como 0x0000000A o 0xA como palabra clave.

Si después de realizar las acciones recomendadas el error persiste, deberíamos valorar el solicitar ayuda a personal técnico, e incluso a Microsoft.

Los códigos de los mensajes de stop se muestran en hexadecimal, 32 bits para versiones de Windows de 32 bits y 64 bits en las versiones de 64 bits. Por ejemplo: el código IRQL_NOT_LESS_OR_EQUAL se muestra como 0x0000000A.

0xA IRQL_NOT_LESS_OR_EQUAL

Este mensaje indica que el núcleo(kernel) o un controlador ha intentado acceder a una ubicación de la memoria para la que no tiene permiso, o que una solicitud de interrupción (IRQL-Interrupt Request Level) era demasiado grande. El núcleo representa una IRQL como un número entre 0 y 31, cuanto más alto más alta prioridad de la interrupción. Un hilo de ejecución normal tiene una prioridad baja IRQL-0. Este error lo causa típicamente software o hardware incompatible.

El mensaje contiene cuatro parámetros junto al número de error:

Primero: Dirección de la memoria que se intentó acceder incorrectamente

Segundo: IRQL solicitada para acceder a la memoria

Tercero: Tipo de acceso, 0x00000000=lectura, 0x00000001=escritura.

Cuarto: Dirección de la instrucción que intentó el acceso a la dirección de memoria especificada en el primero.

Si el cuarto parámetro está dentro del rango de direcciones de un controlador usado por el sistema, podemos determinar el controlador que se ejecutaba en el momento del acceso a la memoria. Normalmente el nombre del controlador lo leemos en una línea parecida a **Address 0xZZZZZZZZ has base at <dirección> – <controlador>.

Si el tercero es idéntico al primero es porque se da una condición especial en la que una rutina, llevada a cabo por un hilo para manejar en segundo plano tareas conocidas como work items, ha devuelto una IRQL alta. En este caso, algunos de los parámetros toman un nuevo significado.

Primero: Dirección de la rutina

Segundo: IRQL del núcleo

Tercero: Dirección de la rutina

Cuarto:  Dirección del work item

Para resolver este error revisamos el visor de sucesos, registro del sistema para ver el problema.

Elementos del controlador del dispositivo: Un error de este tipo puede suceder después de instalar un controlador de dispositivo caducado o erróneo, un servicio del sistema o haber cambiado firmware. Si el mensaje nos muestra el nombre del controlador  y éste ha sido actualizado o cambiado hace poco, entonces lo mejor es volver al controlador anterior (roll back desde Administrador de dispositivos). Si el dispositivo no es crítico para la funcionalidad del sistema, podemos desinstalar el dispositivo o deshabilitar el controlador.

Elementos hardware: El error puede ser causado también por un error o fallo de hardware. Si el mensaje apunta a una categoría de dispositivos, podemos intentar quitar o reemplazarlos para ver si son ellos los que causan el problema.

Elementos de compatibilidad de software: Si el error sucede durante una actualización de Windows Server, puede que esté causado por un controlador incompatible, un servicio del sistema, un antivirus o una copia de seguridad. Para evitar el problema mientras actualizamos, simplificamos la configuración de hardware presente, quitando los controladores de dispositivo, servicios de sistema y antivirus antes de comenzar a actualizar. Después de una instalación con éxito, obtener la compatibilidad necesaria.

 

Podríamos ir viendo diversos errores pero supongo que podemos encontrarlos fácilmente con google mismo, en cuanto se tiene un número de error y sus parámetros. Aquí queda este como muestra.

Errores de Stop en el visor de sucesos.

Podemos usar el visor de sucesos (Eventvwr.msc) para ver las entradas del Registro del sistema que describen los errores de stop que se hayan producido. La información del error de stop se agrega automáticamente al Registro del sistema junto al ID de evento 1003. El visor de sucesos es el camino más simple para que veamos el número del error y sus parámetros en cuanto el sistema se ha reiniciado.

id1003