For file system related errors, in one of the following circumstances, take the actions as indicated for the relevant situation.
(1) After the system has been restarted, the ZFS storage pool status in a local class has become UNAVAIL.
Explanation
If one creates a ZFS storage pool on a local class volume and restarts the system while under a status of having imported the ZFS storage pool without specifying the -R option of the zpool import command, the ZFS storage pool status will become UNAVAIL after system restart and one will become unable to use the ZFS file system.
Resolution
Using the zpool clear command, delete the error information for the ZFS storage pool. For details on the zpool clear command, please refer to the manual for ZFS.
Also, to prevent this phenomenon from occurring, please perform a setup following the procedures outlined in "If using ZFS with a local class" of "A.2.42 If using ZFS."
(2) Restoring the UFS file system created on the local volume.
Explanation
This is the procedure to restore the UFS file system created on the volume of the local class by using the fsck(1M) command.
Resolution
If the file system is located on the local volume, how to execute the fsck(1M) command is equal to when restoring the file system created on the physical slice, with following two exceptions.
Start the volume before executing the fsck(1M) command.
When executing the fsck(1M) command, specify the device special file (/dev/sfdsk/class_name/dsk/volume_name) of the GDS volume.
The following example shows the procedure when the class name is Class1, the volume name is Volume1, the mount point is /mount_point, and the file system type is ufs.
Stop applications that use the target file system.
Unmount the target file system if it is mounted.
# umount /mount_point |
Start the target volume.
If the volume is already started, skip this step.
# sdxvolume -N -c Class1 -v Volume1 |
Execute the fsck(1M) command. When executing the fsck(1M) command, specify the device special file of the target volume.
# fsck -F ufs -y /dev/sfdsk/Class1/rdsk/Volume1 |
See
For more information such as fsck(1M) command options, see the Solaris manual.
(3) Restoring the UFS file system created on the shared volume.
Explanation
This is the procedure to restore the UFS file system created on the volume of the shared class by using the fsck(1M) command.
Resolution
If the file system is located on the shared volume, how to execute the fsck(1M) command is equal to when restoring the file system created on the physical slice, with following two exceptions.
Before executing the fsck(1M) command, start the target volume only on the node where the fsck(1M) command is executed.
When executing the fsck(1M) command, specify the device special file (/dev/sfdsk/class_name/dsk/volume_name) of the GDS volume.
The following example shows the procedure when the class name is Class1, the volume name is Volume1, the mount point is /mount_point, and the file system type is ufs.
Take any one of the following two procedures suitable for each case:
The class is not registered to the cluster application.
The class is registered to the cluster application.
On all the nodes in the class scope, stop the applications that use the target file system.
On all the nodes in the class scope, unmount the target file system.
# umount /mount_point |
On all the nodes in the class scope, stop the target volume.
Log in to any one of the nodes in the class scope, and execute the sdxvolume -F -e allnodes command.
# sdxvolume -F -c Class1 -v Volume1 -e allnodes |
Start the target volume on any one of the nodes in the class scope.
# sdxvolume -N -c Class1 -v Volume1 |
Execute the fsck(1M) command on the node where the volume has been started in step 4.
When executing the fsck(1M) command, specify the device special file of the target volume.
# fsck -F ufs -y /dev/sfdsk/Class1/rdsk/Volume1 |
See
For more information such as fsck(1M) command options, see the Solaris manual.
Stop the applications that use the target class.
See
For how to stop the cluster application, see "PRIMECLUSTER Installation and Administration Guide."
Start the target volume on any one of the nodes in the class scope.
# sdxvolume -N -c Class1 -v Volume1 |
Execute the fsck(1M) command on the node where the volume has been started in step 2.
When executing the fsck(1M) command, specify the device special file of the target volume.
# fsck -F ufs -y /dev/sfdsk/Class1/rdsk/Volume1 |
See
For more information such as fsck(1M) command options, see the Solaris manual.
Stop the target volume on the node where the volume has been started in step 2.
# sdxvolume -F -c Class1 -v Volume1 |
(4) Restoring the UFS file system created on the root volume.
Explanation
This is the procedure to restore the UFS file system created on the volume of the root class by using the fsck(1M) command.
Resolution
For file systems except / (root), /usr, and /var, how to restore the file system is equal to when restoring the file system created on the local class volume.
For details on the procedure, see "(2) Restoring the UFS file system created on the local volume."
If the message "Run fsck manually (fsck -F ...)" requesting the execution of the fsck(1M) command is output, follow the message to execute the fsck(1M) command.
See below for the procedure when booting the system from the CD-ROM drive to restore the / (root), /usr, and /var file systems by executing the fsck(1M) command. Boot the system from the CD-ROM drive, execute the fsck(1M) command for one of the mirrored physical slices, and then copy the data from that physical slice to another physical slice.
Boot the system from the CD-ROM drive.
Note
When booting the system from the CD-ROM drive, the Solaris version must be the same as the restored Solaris version.
In the system where the disks are mirrored by GDS, if the system is booted from the CD-ROM drive and operations are performed improperly, the mirroring status may collapse.
Be sure to perform operations according to the procedures described here. Operations other than those described here should not be performed.
When mounting the file system on the physical slice at the time of restoring, mounting as read-only is recommended to write-lock.
Check the physical slice name of the target file system to be restored among the / (root), /usr, and /var file systems.
Note
If multiplicity of the mirroring configuration is 3 or more, there are multiple mirror physical slices.
# eeprom nvramrc | grep sdx-root-slice devalias sdx-root-slice-1 /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw devalias sdx-root-slice-2 /devices/pci@1e,4000/scsi@3/sd@0,0:a,raw # eeprom nvramrc | grep sdx-usr-slice devalias sdx-usr-slice-1 /devices/pci@1f,4000/scsi@3/sd@0,0:g,raw devalias sdx-usr-slice-2 /devices/pci@1e,4000/scsi@3/sd@0,0:g,raw # eeprom nvramrc | grep sdx-var-slice devalias sdx-var-slice-1 /devices/pci@1f,4000/scsi@3/sd@0,0:b,raw devalias sdx-var-slice-2 /devices/pci@1e,4000/scsi@3/sd@0,0:b,raw |
In this example, the physical slices are as follows:
Original slice of / (root ): /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw Mirrored slice of / (root): /devices/pci@1e,4000/scsi@3/sd@0,0:a,raw Original slice of /usr: /devices/pci@1f,4000/scsi@3/sd@0,0:g,raw Mirrored slice of /usr: /devices/pci@1e,4000/scsi@3/sd@0,0:g,raw Original slice of /var: /devices/pci@1f,4000/scsi@3/sd@0,0:b,raw Mirrored slice of /var: /devices/pci@1e,4000/scsi@3/sd@0,0:b,raw
Information
If /usr and /var file systems do not exist in the configuration, the physical slice names are not displayed as shown below.
# eeprom nvramrc | grep sdx-usr-slice |
Execute the fsck(1M) command. Specify the original physical slice of the file systems to be restored.
3-1) Check the special file name in /dev/rdsk/cXtXdXsX format for the original physical slice.
For the grep(1) command arguments, specify the physical disk names confirmed in step 2. Add ",raw" at the end of each physical name.
# ls -l /dev/rdsk | grep /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw lrwxrwxrwx 1 root root 45 Jan 21 18:09 c0t0d0s0 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:a,raw # ls -l /dev/rdsk | grep /devices/pci@1f,4000/scsi@3/sd@0,0:g,raw lrwxrwxrwx 1 root root 45 Jan 21 18:09 c0t0d0s6 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:a,raw # ls -l /dev/rdsk | grep /devices/pci@1f,4000/scsi@3/sd@0,0:b,raw lrwxrwxrwx 1 root root 45 Jan 21 18:09 c0t0d0s1 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:a,raw |
In this example, the special file names of the original physical slices are as follows:
/ (root): /dev/rdsk/c0t0d0s0 /usr: /dev/rdsk/c0t0d0s6 /var: /dev/rdsk/c0t0d0s1
3-2) Execute the fsck(1M) command. Specify the special file confirmed in step 3-1).
# fsck -F ufs -y /dev/rdsk/c0t0d0s0 # fsck -F ufs -y /dev/rdsk/c0t0d0s6 # fsck -F ufs -y /dev/rdsk/c0t0d0s1 |
See
For more information such as fsck(1M) command options, see the Solaris manual.
If the file systems cannot be restored by executing the fsck(1M) command, the file systems cannot be restored by this procedure.
In this case, follow the procedure described in "6.3.3 Restoring (When the System Cannot Be Booted)" to restore the file system.
Check the sector size and cylinder size. Write down them for later reference.
# prtvtoc /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw
...
* Dimensions:
* 512 bytes/sector
* 248 sectors/track
* 19 tracks/cylinder
* 4712 sectors/cylinder
... |
In this example, the sector size is 512 bytes, and the cylinder size is 4712 sectors = 512 x 4712 (bytes).
Check the physical slice that contains the first sector (VTOC area) of the disk.
In the prtvtoc(1M) command output, a physical slice with 0 in the First Sector field contains the first sector of the disk.
# prtvtoc /devices/pci@1f,4000/scsi@3/sd@0,0:a,raw
...
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
0 2 00 0 409656 409655
1 7 00 409656 307242 716897
2 5 00 0 4117568 4117567
3 3 01 737906 388648 1126553
4 33 00 716898 21008 737905
5 4 00 1126554 942734 2069287
6 4 00 2069288 2048280 4117567
... |
In this example, the physical slice of Partition 0 (:a) contains the first sector.
Information
Partition 2 is a special partition that corresponds to the entire disk.
Copy the data from the original physical slices restored by the fsck(1M) command to the mirror physical slices.
Take the following steps to copy the data:
Step a. if the physical slices do not contain the first sector of the disk
Step b. if the physical slices contain the first sector of the disk
Note
If the multiplicity of the mirroring configuration is 3 or more, there are multiple mirror physical slices. Be sure to copy the data to all of the mirror physical slices.
The original slices that were not restored by the fsck(1M) command in step 3. do not have to be copied.
The physical slices do not contain the first sector of the disk
To reduce copying time, specify the cylinder size calculated in step 4. to the bs option (I/O block size) of the dd(1M) command.
# dd if=/devices/pci@1f,4000/scsi@3/sd@0,0:g,raw \ of=/devices/pci@1e,4000/scsi@3/sd@0,0:g,raw bs=4712b # dd if=/devices/pci@1f,4000/scsi@3/sd@0,0:b,raw \ of=/devices/pci@1e,4000/scsi@3/sd@0,0:b,raw bs=4712b |
The physical slices contain the first sector of the disk
Take the following steps.
b-1) Copy only the first cylinder of the physical slice first. Skip the first sector not to overwrite the first sector (VTOC area) of the mirror slice and copy by sector.
To skip the first sector, specify 1 to the iseek option and the oseek option of the dd(1M) command. Specify the sector size confirmed in step 4. to the bs option. Specify the cylinder size (512 byte blocks) calculated in step 4. subtracting 1 to the count option.
# dd if=/devices/pci@1f,4000/scsi@3/sd@0,0:a,raw \ of=/devices/pci@1e,4000/scsi@3/sd@0,0:a,raw bs=512 \ iseek=1 oseek=1 count=4711 |
b-2) Copy the rest of cylinders of the physical slice next.
To reduce copying time, specify the cylinder size calculated in step 4. to the bs option of the dd(1M) command. To skip the first cylinder copied in step b-1) of step 6, specify 1 to the iseek option and the oseek option.
# dd if=/devices/pci@1f,4000/scsi@3/sd@0,0:a,raw \ of=/devices/pci@1e,4000/scsi@3/sd@0,0:a,raw bs=4712b \ iseek=1 oseek=1 |
Restart the system.
# shutdown -g0 -i6 -y |