Create a gpart in a multipath container?

John jwd at freebsd.org
Fri Sep 30 14:51:57 UTC 2011


Hi Folks,

   I'm trying to create a set of partitions inside of a multipath
container. For this discussion, a drive in a shelf hanging off a
pair of controllers:

# camcontrol inquiry da0
pass2: <HP EH0146FAWJB HPDD> Fixed Direct Access SCSI-5 device 
pass2: Serial Number 3TB1BKGX00009036W9EN
pass2: 600.000MB/s transfers, Command Queueing Enabled
# camcontrol inquiry da25
pass27: <HP EH0146FAWJB HPDD> Fixed Direct Access SCSI-5 device 
pass27: Serial Number 3TB1BKGX00009036W9EN
pass27: 600.000MB/s transfers, Command Queueing Enabled

   The multipath container:

# gmultipath label  Z0 da0 da25
# gmultipath list
Geom name: Z0
Providers:
1. Name: multipath/Z0
   Mediasize: 146815737344 (136G)
   Sectorsize: 512
   Mode: r0w0e0
Consumers:
1. Name: da0
   Mediasize: 146815737856 (136G)
   Sectorsize: 512
   Mode: r0w0e0
2. Name: da25
   Mediasize: 146815737856 (136G)
   Sectorsize: 512
   Mode: r0w0e0

Note, at this point I can create multipath containers from the rest of
the drives and create zfs volume with no problems.

However, I'd now like to create a set of partitions inside
of the multipath container.

# gpart create -s gpt multipath/Z0
multipath/Z0 created
# gpart add -s 1m -t freebsd-ufs -l Z0test multipath/Z0
multipath/Z0p1 added
# gpart add -t freebsd-zfs -l Z0 multipath/Z0

The created partition looks correct, but two additional
geoms have been created that are corrupt:

Geom name: multipath/Z0
modified: false
state: OK
fwheads: 255
fwsectors: 63
last: 286749453
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: multipath/Z0p1
   Mediasize: 1048576 (1.0M)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: f6a44058-eb72-11e0-8eb1-001e4f258317
   rawtype: 516e7cb6-6ecf-11d6-8ff8-00022d09712b
   label: Z0test
   length: 1048576
   offset: 17408
   type: freebsd-ufs
   index: 1
   end: 2081
   start: 34
2. Name: multipath/Z0p2
   Mediasize: 146814654464 (136G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 1065984
   Mode: r0w0e0
   rawuuid: 0a064a37-eb73-11e0-8eb1-001e4f258317
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: Z0
   length: 146814654464
   offset: 1065984
   type: freebsd-zfs
   index: 2
   end: 286749453
   start: 2082
Consumers:
1. Name: multipath/Z0
   Mediasize: 146815737344 (136G)
   Sectorsize: 512
   Mode: r0w0e0


These show up and are corrupt:

Geom name: da0
modified: false
state: CORRUPT
fwheads: 255
fwsectors: 63
last: 286749453
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da0p1
   Mediasize: 1048576 (1.0M)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: f6a44058-eb72-11e0-8eb1-001e4f258317
   rawtype: 516e7cb6-6ecf-11d6-8ff8-00022d09712b
   label: Z0test
   length: 1048576
   offset: 17408
   type: freebsd-ufs
   index: 1
   end: 2081
   start: 34
2. Name: da0p2
   Mediasize: 146814654464 (136G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 1065984
   Mode: r0w0e0
   rawuuid: 0a064a37-eb73-11e0-8eb1-001e4f258317
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: Z0
   length: 146814654464
   offset: 1065984
   type: freebsd-zfs
   index: 2
   end: 286749453
   start: 2082
Consumers:
1. Name: da0
   Mediasize: 146815737856 (136G)
   Sectorsize: 512
   Mode: r0w0e0

And the same for da25.

 
Finally, these messages show up:

GEOM_MULTIPATH: adding da0 to Z0/ac33be7a-eb68-11e0-97dd-001e4f258317
GEOM_MULTIPATH: da0 now active path in Z0
GEOM: da0: the secondary GPT header is not in the last LBA.
GEOM_MULTIPATH: adding da25 to Z0/ac33be7a-eb68-11e0-97dd-001e4f258317
GEOM: da25: the secondary GPT header is not in the last LBA.
GEOM: da0: the secondary GPT header is not in the last LBA.
GEOM: da25: the secondary GPT header is not in the last LBA.
GEOM: da0: the secondary GPT header is not in the last LBA.

And after a reboot, the multipath container is gone, and this is
found for da0/da25. It can be recovered, but it seems to have
taken over the multipath container.

Geom name: da0
modified: false
state: CORRUPT
fwheads: 255
fwsectors: 63
last: 286749453
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da0p1
   Mediasize: 1048576 (1.0M)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: 227634d0-eb6a-11e0-97dd-001e4f258317
   rawtype: 516e7cb6-6ecf-11d6-8ff8-00022d09712b
   label: Z0test
   length: 1048576
   offset: 17408
   type: freebsd-ufs
   index: 1
   end: 2081
   start: 34
2. Name: da0p2
   Mediasize: 146814654464 (136G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 1065984
   Mode: r0w0e0
   rawuuid: 6b285348-eb6a-11e0-97dd-001e4f258317
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: Z0
   length: 146814654464
   offset: 1065984
   type: freebsd-zfs
   index: 2
   end: 286749453
   start: 2082
Consumers:
1. Name: da0
   Mediasize: 146815737856 (136G)
   Sectorsize: 512
   Mode: r0w0e0

Apologies for the long-winded explanation. I hope it made sense.

Is there a way to make this work? Is there a better way to configure
this? I'd like the partitions to be protected by multipathing which
lead me to try this.  Am I missing something totally obvious?

I've been looking at the code and I'm thinking there is an issue between
a real physical disk container vs a partition and sizing.

Any comments are appreciated.

Thanks,
John





More information about the freebsd-fs mailing list