NAME¶
geom_fox
—
GEOM based basic disk multipathing
SYNOPSIS¶
To compile this driver into the kernel, place the following line in your kernel
configuration file:
options
GEOM_FOX
Alternatively, to load the driver as a module at boot time, place the following
line in
loader.conf(5):
DESCRIPTION¶
The intent of the
geom_fox
framework is to
provide basic multipathing support to access direct access devices. Basic in
the above sentence should be read as:
geom_fox
only provides path failover
functionality, not load balancing over the available paths etc. Using suitable
hardware like SCSI or FibreChannel disks it is possible to have multiple
(typically 2) host bus adapters access the same physical disk drive.
Without a multipathing driver the
FreeBSD kernel would
probe the disks multiple times, resulting in the creation of multiple
/dev entries for the same underlying
physical device. A unique label written in the GEOM label area allows
geom_fox
to detect multiple paths. Using
this information it creates a unique
da#.fox device.
The
geom_fox
device is subsequently used by
the
FreeBSD kernel to access the disks. Multiple
physical access paths ensure that even in case of a path failure the
FreeBSD kernel can continue to access the data.
The
geom_fox
driver will disallow write
operations to the underlying devices once the fox device has been opened for
writing.
EXAMPLES¶
geom_fox
needs a label on the disk as
follows in order to work properly:
"0123456789abcdef0123456789abcdef"
"GEOM::FOX <--unique--id-->"
For the unique ID 16 bytes are available. The
“GEOM::FOX
” is the magic to mark a
geom_fox
device.
The actual labelling is accomplished by
echo "GEOM::FOX someid" | dd of=/dev/da2 conv=sync
For FibreChannel devices it is suggested to use the Node World Wide Name
(Node WWN) as this is guaranteed by the FibreChannel standard to be
worldwide unique. The use of the Port WWN not recommended as each port of
a given device has a different WWN, thereby confusing things.
The Node WWN can be obtained from a verbose boot as in for example
isp1: Target 1 (Loop 0x1) Port ID 0xe8 (role Target) Arrived
Port WWN 0x21000004cfc8aca2
Node WWN 0x20000004cfc8aca2
This Node WWN would then be used like so:
echo "GEOM::FOX 20000004cfc8aca2" | dd of=/dev/da2 conv=sync
For non-FibreChannel devices you could for example use the serial number of
the device. Regardless of what you use, make sure the label is unique.
Once the labelling has been performed and assuming the
geom_fox
module is loaded the kernel
will inform you that it has found a new
geom_fox
device with a message similar
to
Creating new fox (da2)
fox da2.fox lock 0xfffffc0000fdba20
- To check which physical devices match a given
geom_fox
device:
# geom fox list
Geom name: da2.fox
Providers:
1. Name: da2.fox
Mediasize: 73407865344 (68G)
Sectorsize: 512
Mode: r0w0e0
Consumers:
1. Name: da2
Mediasize: 73407865856 (68G)
Sectorsize: 512
Mode: r0w0e0
2. Name: da6
Mediasize: 73407865856 (68G)
Sectorsize: 512
Mode: r0w0e0
- To check the status of the
geom_fox
components:
# geom fox status
Name Status Components
da2.fox N/A da2
da6
SEE ALSO¶
GEOM(4),
geom(8),
gmultipath(8)
AUTHORS¶
The
geom_fox
driver was written by
Poul-Henning Kamp
⟨phk@FreeBSD.org⟩. This manual page was written by
Wilko Bulte
⟨wilko@FreeBSD.org⟩.
CAVEATS¶
The
geom_fox
driver depends on the underlying
hardware drivers to do the right thing in case of a path failure. If for
example a hardware driver continues to retry forever,
geom_fox
is not able to re-initiate the I/O
to an alternative physical path.
You have to be very sure to provide a unique label for each of the
geom_fox
devices. Safety belts are not
provided. For FibreChannel devices it is suggested to use the Port WWN of the
device. The World Wide Name is guaranteed to be worldwide unique per the
FibreChannel standard.
BUGS¶
The
geom_fox
framework has only seen light
testing. There definitely might be dragons here.
The name
geom_fox
is completely obscure. Just
remember that any sly fox has multiple exits from its hole.
The examples provided are too FibreChannel-centric.