1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Adaptec 2020ZCR Supermicro FreeBSD 9

Discussion in 'System Hardware' started by jamengual, Apr 20, 2012.

  1. jamengual

    jamengual New Member

    Messages:
    12
    Thanks Received:
    0
    Hi guys.

    First of all this is my setup:

    FreeBSD 9.0
    Supermicro Server
    Motherboard: Supermicro X7DB8
    6 x Cheetah® 15K.5 Ultra320 SCSI 146-GB Hard Drive
    Adaptec 2020ZCR [7373 bios] (Supermicro branded)

    I installed freebsd FreeBSD in a RAID1 setup created using the controller utility and I had no problems. But when I went to create my ZFS RAID I was not able to see the drives attached with the right driver I just saw this:

    Code:
    pass1 at aacp0 bus 0 scbus0 target 1 lun 0
    pass1: <SEAGATE ST336754LC 0005> Fixed Uninstalled SCSI-3 device 
    pass1: 0KB/s transfers
    pass2 at aacp0 bus 0 scbus0 target 2 lun 0
    pass2: <SEAGATE ST336754LC 0005> Fixed Uninstalled SCSI-3 device 
    pass2: 0KB/s transfers
    pass3 at aacp0 bus 0 scbus0 target 3 lun 0
    pass3: <SEAGATE ST336754LC 0005> Fixed Uninstalled SCSI-3 device 
    pass3: 0KB/s transfers
    pass5 at aacp1 bus 0 scbus1 target 0 lun 0
    pass5: <SEAGATE ST3146855LC 0003> Fixed Uninstalled SCSI-3 device 
    pass5: 0KB/s transfers
    pass6 at aacp1 bus 0 scbus1 target 1 lun 0
    pass6: <SEAGATE ST3146855LC 0003> Fixed Uninstalled SCSI-3 device 
    pass6: 0KB/s transfers
    pass7 at aacp1 bus 0 scbus1 target 2 lun 0
    pass7: <SEAGATE ST3146855LC 0003> Fixed Uninstalled SCSI-3 device 
    pass7: 0KB/s transfers
    pass8 at aacp1 bus 0 scbus1 target 3 lun 0
    pass8: <SEAGATE ST3146855LC 0003> Fixed Uninstalled SCSI-3 device


    And when I try to use the pass devices of course I got an error, so then I looked to cam control.

    Code:
    newdevserver# camcontrol devlist
    <SEAGATE ST336754LC 0005>          at scbus0 target 0 lun 0 (pass0)
    <SEAGATE ST336754LC 0005>          at scbus0 target 1 lun 0 (pass1)
    <SEAGATE ST336754LC 0005>          at scbus0 target 2 lun 0 (pass2)
    <SEAGATE ST336754LC 0005>          at scbus0 target 3 lun 0 (pass3)
    <SUPER GEM318 0>                   at scbus0 target 6 lun 0 (ses0,pass4)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 0 lun 0 (pass5)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 1 lun 0 (pass6)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 2 lun 0 (pass7)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 3 lun 0 (pass8)
    <SUPER GEM318 0>                   at scbus1 target 6 lun 0 (ses1,pass9)
    <MATSHITA DVD-ROM SR-8178 PZ16>    at scbus2 target 1 lun 0 (cd0,pass10)
    <PepperC Virtual Disc 1 0.01>      at scbus3 target 0 lun 0 (cd1,pass11)


    So it looks like the drivers are recognized but for some reason they don't have the right driver attached to them? It could be possible that I'm missing some other configuration that I'm not aware of but based on my other server that I have working:

    Code:
    <ADAPTEC Virtual SGPIO  0 0001>    at scbus2 target 0 lun 0 (ses0,pass3)
    <WDC WD1002FAEX-00Z3A0 0956>       at scbus5 target 0 lun 0 (ada0,pass4)
    <WDC WD1002FAEX-00Z3A0 05.01D05>   at scbus5 target 1 lun 0 (ada1,pass5)


    I can see the passthrough device per hard drive and the correct ada designation to each so I guess that is something to do with the driver but I'm not sure. The driver is the 2020ZCR, not configured in RAID/volume or anything like it. Anyone had the same problem?

    Can someone give me some ideas so that I can use the individual drivers for ZFS?

    pciconf -vl output of the RAID card:

    Code:
    aac0@pci0:4:1:0:        class=0x010400 card=0x028a9005 chip=0x02859005 rev=0x02 hdr=0x00
        vendor     = 'Adaptec'
        device     = 'AAC-RAID'
        class      = mass storage
        subclass   = RAID
    

    Thanks.
     
  2. jamengual

    jamengual New Member

    Messages:
    12
    Thanks Received:
    0
    Any idea guys? I just tried with Freebsd FreeBSD 8.2 and same thing, only passX devices.

    Thanks.
     
  3. phoenix

    phoenix Moderator Staff Member Moderator

    Messages:
    3,422
    Thanks Received:
    751
    Does that controller allow you to create "single disk" RAID arrays? Or an option to use some disks as JBOD?

    If not, then you may need to create multiple RAID0 arrays, using 1 drive per array. Which will then make the drives (arrays) available to the OS as da devices.
     
  4. jamengual

    jamengual New Member

    Messages:
    12
    Thanks Received:
    0
    I will check if I can do RAID0 with one drive, that is a good tip and thank you.

    But it sounds like a hack to me, isn't it?

    I have other servers with some LSI and sis3124 and I don't have this problem, in fact my storage system uses an Addonics sis3124 adapter with 10 disks connected to a port multiplier and works perfectly. But now I have 12 servers with the same controller and same problem and I really want to use ZFS so I can do snapshots and use zfs send to do backups to a remote server and all that.

    I just want to get to the bottom of this.

    Maybe a driver developer from the freebsd FreeBSD project can chime in if they have time?

    Thanks.
     
  5. phoenix

    phoenix Moderator Staff Member Moderator

    Messages:
    3,422
    Thanks Received:
    751
    All your other servers have plain SATA controllers. This server has a hardware RAID controller. They operate very differently.

    Plain SATA controllers just present all the disks to the OS, and the OS manages them.

    RAID controllers don't present disks to the OS, they present arrays as disk devices. You have to create a RAID array in the RAID controller BIOS before the devices will appear in the OS. Some RAID controllers (like LSI/3Ware) allow you to create "Single Disk" arrays. Other RAID controllers (LSI, Intel, Areca, etc) don't support "Single Disk" arrays, so you have to create 1-disk RAID0 arrays in order to present individual disks to the OS.

    Some RAID controllers also support JBOD (just a bunch of disks) mode, where all the RAID features of the card are disabled, and the controller works like a normal SATA controller, and all the disks are presented to the OS.

    However, since you have created a hardware RAID1 array, you won't be able to use JBOD, as most controllers are either/or.
     
  6. jamengual

    jamengual New Member

    Messages:
    12
    Thanks Received:
    0
    Phoenix then again thank you for answers.

    I understand what you said and this is why my storage server can see the drives directly connected to the RAID controller because the controller does not have any RAID config on it.

    When I installed this new server I didn't have any RAID config on it and I still couldn't see the drive but as you said it could be that is not an option with this controller and I will have to create RAID0 with one drive.

    For some reason I thought that all the controller will present the drives to the OS if there was not RAID configuration present on the controller.

    Thanks.
     
  7. jamengual

    jamengual New Member

    Messages:
    12
    Thanks Received:
    0
    So I followed your suggestion and this is what dmesg showed:

    Code:
    aacd0: <RAID 1 (Mirror)> on aac0
    aacd0: 34970MB (71619584 sectors)
    aacd1: <Volume> on aac0
    aacd1: 34970MB (71619584 sectors)
    aacd2: <Volume> on aac0
    aacd2: 34970MB (71619584 sectors)
    aacd3: <Volume> on aac0
    aacd3: 139981MB (286681728 sectors)
    aacd4: <Volume> on aac0
    aacd4: 139981MB (286681728 sectors)
    aacd5: <Volume> on aac0
    aacd5: 139981MB (286681728 sectors)
    aacd6: <Volume> on aac0
    aacd6: 139981MB (286681728 sectors)


    And I was able to use aacd devicess for the ZFS pools. But the weird thing is the output of camcontrol:

    Code:
    [root@devserver ~]# camcontrol devlist
    <SEAGATE ST336754LC 0005>          at scbus0 target 0 lun 0 (pass0)
    <SEAGATE ST336754LC 0005>          at scbus0 target 1 lun 0 (pass1)
    <SEAGATE ST336754LC 0005>          at scbus0 target 2 lun 0 (pass2)
    <SEAGATE ST336754LC 0005>          at scbus0 target 3 lun 0 (pass3)
    <SUPER GEM318 0>                   at scbus0 target 6 lun 0 (ses0,pass4)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 0 lun 0 (pass5)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 1 lun 0 (pass6)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 2 lun 0 (pass7)
    <SEAGATE ST3146855LC 0003>         at scbus1 target 3 lun 0 (pass8)
    <SUPER GEM318 0>                   at scbus1 target 6 lun 0 (ses1,pass9)
    <MATSHITA DVD-ROM SR-8178 PZ16>    at scbus2 target 1 lun 0 (cd0,pass10)
    <PepperC Virtual Disc 1 0.01>      at scbus3 target 0 lun 0 (cd1,pass11)


    Still doesn't recognize the volumes but I don't know if this is because it doesn't really know which disk is attach to which volume. Is this how it's supposed to be?

    Thanks.
     
  8. mav@

    mav@ Member Developer

    Messages:
    618
    Thanks Received:
    165
    Yes, AFAIK it is. aac driver works in two ways: it provides access to the data via aacdX disk device and pass-through for the raw disks health monitoring separately through the CAM.