gvinum: raid5 rebuild hangs on md disk

Jan-Oliver Neumann neumannj at arcor.de
Wed Nov 24 13:16:09 GMT 2004


Hi,

to test gvinum raid5 functionality, I created three file-backed mds and 
used the following config:

drive disk3 device /dev/md2
drive disk2 device /dev/md1
drive disk1 device /dev/md0
volume raid5
plex name raid5.p0 org raid5 546s vol raid5
sd name raid5.p0.s2 drive disk3 len 130494s driveoffset 265s plex 
raid5.p0 plexoffset 1092s
sd name raid5.p0.s1 drive disk2 len 130494s driveoffset 265s plex 
raid5.p0 plexoffset 546s
sd name raid5.p0.s0 drive disk1 len 130494s driveoffset 265s plex 
raid5.p0 plexoffset 0s

The raid5 plex is running fine with this setup and after killing one of 
the mds using "mdconfig -d -u 0",
the raid5 plex is running correctly in degraded mode. When I reattach 
the md, the "lost" subdisk shows
up again as "stale", but when restarting the plex, the rebuild process 
stalls at 0%, the plex continues to
operate in "degraded" mode. Rest of the system is not affected, I am 
running 5-STABLE as of Nov 24th.

ps -axw shows following kernel thread:
621  ??  DL     0:00.02 [gv_rebuild raid5.p0]

As a side note, I updated the gvinum help message to reflect the current 
state of implementation, patch is attached.

Regards,

Jan-Oliver

*** gvinum.c~    Wed Aug  4 02:23:00 2004
--- gvinum.c    Wed Nov 24 13:53:15 2004
***************
*** 357,389 ****
  gvinum_help(void)
  {
      printf("COMMANDS\n"
!         "attach plex volume [rename]\n"
!         "attach subdisk plex [offset] [rename]\n"
!         "        Attach a plex to a volume, or a subdisk to a plex.\n"
!         "checkparity plex [-f] [-v]\n"
!         "        Check the parity blocks of a RAID-4 or RAID-5 plex.\n"
!         "concat [-f] [-n name] [-v] drives\n"
!         "        Create a concatenated volume from the specified 
drives.\n"
          "create [-f] description-file\n"
          "        Create a volume as described in description-file.\n"
!         "detach [-f] [plex | subdisk]\n"
!         "        Detach a plex or subdisk from the volume or plex to"
!         "which it is\n"
!         "        attached.\n"
!         "dumpconfig [drive ...]\n"
!         "        List the configuration information stored on the"
!         " specified\n"
!         "        drives, or all drives in the system if no drive names"
!         " are speci-\n"
!         "        fied.\n"
!         "info [-v] [-V]\n"
!         "        List information about volume manager state.\n"
          "init [-S size] [-w] plex | subdisk\n"
          "        Initialize the contents of a subdisk or all the subdisks"
          " of a\n"
          "        plex to all zeros.\n"
-         "label volume\n"
-         "        Create a volume label.\n"
          "l | list [-r] [-s] [-v] [-V] [volume | plex | subdisk]\n"
          "        List information about specified objects.\n"
          "ld [-r] [-s] [-v] [-V] [volume]\n"
--- 357,372 ----
  gvinum_help(void)
  {
      printf("COMMANDS\n"
!         "cancelinit\n"
!         "        Cancel pending initialization processes.\n"
          "create [-f] description-file\n"
          "        Create a volume as described in description-file.\n"
!         "help\n"
!         "        Print this help message.\n"
          "init [-S size] [-w] plex | subdisk\n"
          "        Initialize the contents of a subdisk or all the subdisks"
          " of a\n"
          "        plex to all zeros.\n"
          "l | list [-r] [-s] [-v] [-V] [volume | plex | subdisk]\n"
          "        List information about specified objects.\n"
          "ld [-r] [-s] [-v] [-V] [volume]\n"
***************
*** 394,431 ****
          "        List information about plexes.\n"
          "lv [-r] [-s] [-v] [-V] [volume]\n"
          "        List information about volumes.\n"
-         "mirror [-f] [-n name] [-s] [-v] drives\n"
-         "        Create a mirrored volume from the specified drives.\n"
-         "move | mv -f drive object ...\n"
-         "        Move the object(s) to the specified drive.\n"
          "printconfig [file]\n"
          "        Write a copy of the current configuration to file.\n"
          "quit    Exit the vinum program when running in interactive mode."
          "  Nor-\n"
          "        mally this would be done by entering the EOF 
character.\n"
-         "rename [-r] [drive | subdisk | plex | volume] newname\n"
-         "        Change the name of the specified object.\n"
-         "rebuildparity plex [-f] [-v] [-V]\n"
-         "        Rebuild the parity blocks of a RAID-4 or RAID-5 plex.\n"
-         "resetconfig\n"
-         "        Reset the complete vinum configuration.\n"
          "rm [-f] [-r] volume | plex | subdisk\n"
          "        Remove an object.\n"
          "saveconfig\n"
          "        Save vinum configuration to disk after configuration"
          " failures.\n"
-         "setstate state [volume | plex | subdisk | drive]\n"
-         "        Set state without influencing other objects, for"
-         " diagnostic pur-\n"
-         "        poses only.\n"
          "start [-i interval] [-S size] [-w] volume | plex | subdisk\n"
          "        Allow the system to access the objects.\n"
          "stop [-f] [volume | plex | subdisk]\n"
          "        Terminate access to the objects, or stop vinum if no"
          " parameters\n"
          "        are specified.\n"
-         "stripe [-f] [-n name] [-v] drives\n"
-         "        Create a striped volume from the specified drives.\n"
      );
 
      return;
--- 377,398 ----

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3170 bytes
Desc: S/MIME Cryptographic Signature
Url : http://lists.freebsd.org/pipermail/freebsd-geom/attachments/20041124/6adcb556/smime.bin


More information about the freebsd-geom mailing list