# OCZ RevoDrive PCI-Exp



## volodymyr (Jul 20, 2010)

There is a need to install the device type http://www.ocztechnology.com/produc...revodrive/ocz-revodrive-pci-express-ssd-.html
Question. See if his system? And will work with him.
The server now is 7.2. You can go for 8.


----------



## mav@ (Jul 20, 2010)

According to this review: http://www.anandtech.com/show/3788/oczs-revodrive-pcie-ssd-preview-an-affordable-pcie-ssd , this device combines two SSD drives, SiI3124 controller and PCI-x-to-PCIe bridge on the same board. I don't know anybody who have tested this device under FreeBSD, but set of components I see here look quite promising. I expect that system should detect it as usual SATA controller with two attached SATA disks. Declared RAID0 there is probably software.

If you will be able to test it - report me please how it goes. I would definitely recommend you to update FreeBSD to 8.1 and use new siis(4) driver for this controller to reach maximum performance.


----------



## sub_mesa (Sep 25, 2010)

@mav: does the siis pass BIO_DELETE into TRIM command to the Sandforce controller; or won't the Silicon Image RAID/HBA chip pass these commands to the SandForce controllers? If it does, it would be a unique feature on FreeBSD as virtually all other OS have no TRIM support on RAID arrays; while in FreeBSD that should work on all GEOM-providers; but ultimately i guess the device driver has to convert BIO_DELETE into TRIM; right?


----------



## mav@ (Sep 26, 2010)

ada(4) device driver converts BIO_DELETE into TRIM. siis(4) should be able to pass it to device. The main question is to find file system using BIO_DELETE. UFS doesn't at the moment.


----------



## sub_mesa (Sep 27, 2010)

And ZFS won't support it anytime soon. But consider SSDs used as cache devices; a simple newfs -E would essentially be a secure erase as it TRIMs all surface area. So you could use the SSD as cache device for a few months, do a newfs -E and add it as cache device again, to reset the performance level.

But I'm a little confused whether the above procedure would work on this device. Does it use both ada driver and siis? Or is it recognised as "da" instead? If I understand correctly, you would not have TRIM capability with "da" named disks; only "ada" as you told me. Is that correct?


----------



## mav@ (Sep 27, 2010)

"da" is a SCSI-protocol disc devices. If you are speaking about siis(4) controller, devices should be reported as "ada", unless it is some ATAPI device. SCSI also have alternative for TRIM, but I haven't seen such devices yet to implement it.


----------



## sub_mesa (Sep 30, 2010)

So you are telling me that this OCZ Revodrive would be TRIM-capable under FreeBSD 8+ with ahci driver activated, right?

It would detect one 'drive' (ada device) per Sandforce controller on the Revodrive; thus 2 SSDs of 60GB if you buy the 120GB model; right? You could then RAID0 those with geom_stripe and perform newfs -E /dev/stripe/str0 to TRIM the entire surface of both SSDs on the PCB each powered by a Sandforce controller. Is this correct?

Would this make it a great L2ARC/SLOG device for ZFS? I assume it doesn't write safely, so SLOG might be dangerous; but random IOps should be very good making it ideal L2ARC i think; Sandforce is one of the best NAND controllers.


----------



## mav@ (Sep 30, 2010)

If that OCZ Revodrive based on SiI3124 chip, then instead "with ahci driver activated" there should be "with siis driver activated". The rest seems fine.


----------



## danbi (Oct 2, 2010)

You will not get better performance by stripping both SSDs for L2ARC. Instead, just add both as separate devices.

Is there support for TRIM in anything other than newfs?


----------



## sub_mesa (Oct 2, 2010)

I believe there are UFS-patches for -CURRENT; didn't hear about any development on that area.

Could you explain "You will not get better performance by stripping both SSDs for L2ARC"? RAID0 should scale both multiqueue random read/write and sequential read/write - and for SSDs particularly the performance increase should be almost linearly. Only single threaded random reads (single queue) would not benefit anything from striping. The same counts for SSDs with multiple channels (Intel has 10; Micron/Sandforce i believe 8 and Indilinx only 4) - only one channel can be used for single queue random read (20MB/s).

This can be particularly apparent with popular Windows benchmarks like AS SSD and CrystalDiskMark. On FreeBSD i believe raidtest is a nice raw random I/O benchmark utility. It can't work on ZFS filesystems, but it can work on GEOM providers.


----------



## User23 (Oct 4, 2010)

I use 2 SSDs as L2ARC devices in a zpool. The main workload is random read/write. I can see that the io ops and the throughput on both SSDs are nearly the same. 

Isnt ZFS already using a raid0 mode if more than one drive is connected as a L2ARC device?


----------



## danbi (Oct 4, 2010)

Yes, ZFS uses sort of RAID0 on two or more cache devices. I believe it is better to let ZFS manage the striping across these devices, because 

- if one device fails, ZFS can stop using it for cache; if one device of lower-level striped geom provider fails, ZFS will ignore the entire geom provider;
- ZFS uses some wear leveling algorithm to spread writes to both devices. I believe this means it will issue relatively big writes to the device, where flash based devices are better. If you stripe across several devices, each of the devices will get only part of that write operation, thus wasting rewrite cycles and severely impacting cache fill rate.

I may be wrong in these assumptions, of course


----------



## astounding (May 2, 2011)

How about the RevoDrive X2? Anyone using it?


----------



## Tribal_STi (Jul 10, 2011)

Hi

I am build my first own server, with FreeBSD 8.2 :

Intel Xeon E3-1275 3.4GHz
ASUS P8B WS Motherboard
16GB (4x4GB) Corsair Vengeance Memory
OCZ RevoDrive X2 PCI-E 240GB
WD RE04 1TB Drive

The RevoDrive is, divided to 4 drives (ada4, ada6, ada8, ada10).

I think, i can this not use, a singel drive, for install the FreeBSD.
On the OCZ home page, found i no driver...

Or is it possible, a Sil 3124 driver to use, for a RevoDrive?

plea help my, that i use enjoy from RevoDrive 

thanks
fabian


----------



## mav@ (Jul 10, 2011)

siis(4) driver should support this card effectively. The only question is a RAID between these disks, compatible with BIOS -- I have no idea what metadete format used there. You may try to use geom_raid module, added to 8-STABLE recently. It supports SiliconImage RAID metadata format.


----------



## Tribal_STi (Jul 12, 2011)

"The only question is a RAID between these disks"
yes, this is a great question.

I go to standard installation, and 4 singel drive get view.
A install from a 1 drive is a litle bit bad...
I can't unveil that is this the idee from OCZ.

And a point, where can new driver too add, have i not found.

I think, suport vom siis(4) driver is ok, so i can see the 4 drives.

There a "how to", that i can look, to install with geom_raid modul?

My experience with FreeBSD is zero.


----------



## mav@ (Jul 12, 2011)

geom_raid present in 8-STABLE for about a month, not present in 8.2-RELEASE. You should load the geom_raid module by adding to /boot/loader.conf

```
geom_raid_load="YES"
```

If metadata will be properly handled, you will still have /dev/adaX devices, but you will also get /dev/raid/rX device(s).


----------



## MasterCATZ (Apr 28, 2012)

I just *o*rdered an OCZ RevoDrive X2 PCI-Express SSD 220GB.

From what I am reading here does this mean FreeBSD will pick it up as multiple *d*rives that need to be raided together? I would be assuming this 220GB is *g*oing to be 4x *d*rives showing. 

Does this *m*ean I would still have to Root On ZFS Raidz them together?


----------



## tingo (Apr 28, 2012)

It doesn't look like any of the earlier posters in this thread provided any examples. When you get your drive, please provide output about how FreeBSD sees the drive / drives (dmesg output, output from `# pciconf -lv` and other relevant output) so that we may learn more.


----------



## MasterCATZ (May 18, 2012)

RevoDrive arrived. I have just finished installing it into my Asus P5NT-WS. OCZ Bios lists RAID modes 0, 1, 10, 5. Currently trying it in RAID10 mode to see what FreeBSD 9 install will see it as (windows needed driver to be installed). Mainboard BIOS sees it just fine as a bootable device

*edit* 

Sadly FreeBSD 9 install indeed does pick it up as 4 separate HDDs and I do not have a quick way to do a ZFS on root install, but at least it sees it just fine without drivers  

Used my ZFS Guru install disk. Seems to be having problems finding the drives to continue booting from. Trying concatenation mode provides a very slow boot.

I have finally managed to get the OCZ RevoDrive to boot from ZFS on Root.
I am unsure why it is now booting as I tried so many idea's on the last attempt.
used OCZ BIOS in Raid 0 mode. 
used 4k boundary alignment.
used TRIM erase when formatting. 
used ZFS Guru FreeBSD9 (after wiping all drives with zero's from ZFS guru FreeBSD8 attempts ).


----------



## mav@ (May 18, 2012)

You should try to load geom_raid kernel module. It should support SiliconImage RAID format, that is probably used by controller on that board. geom_mirror doesn't really support RAID5, but 0, 1 and 10 should work perfectly.


----------



## MasterCATZ (May 18, 2012)

tingo said:
			
		

> It doesn't look like any of the earlier posters in this thread provided any examples. When you get your drive, please provide output about how FreeBSD sees the drive / drives (dmesg output, output from `# pciconf -lv` and other relevant output) so that we may learn more.



`# pciconf -lv`

```
hostb0@pci0:0:0:0:      class=0x060000 card=0x00000000 chip=0x03a310de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Host Bridge'
    class      = bridge
    subclass   = HOST-PCI
none0@pci0:0:0:1:       class=0x050000 card=0x00000000 chip=0x03ac10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none1@pci0:0:0:2:       class=0x050000 card=0x00000000 chip=0x03aa10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none2@pci0:0:0:3:       class=0x050000 card=0x00000000 chip=0x03a910de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none3@pci0:0:0:4:       class=0x050000 card=0x00000000 chip=0x03ab10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none4@pci0:0:0:5:       class=0x050000 card=0x00000000 chip=0x03a810de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none5@pci0:0:0:6:       class=0x050000 card=0x00000000 chip=0x03b510de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none6@pci0:0:0:7:       class=0x050000 card=0x00000000 chip=0x03b410de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none7@pci0:0:1:0:       class=0x050000 card=0x00000000 chip=0x03ad10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none8@pci0:0:1:1:       class=0x050000 card=0x00000000 chip=0x03ae10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none9@pci0:0:1:2:       class=0x050000 card=0x00000000 chip=0x03af10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none10@pci0:0:1:3:      class=0x050000 card=0x00000000 chip=0x03b010de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none11@pci0:0:1:4:      class=0x050000 card=0x00000000 chip=0x03b110de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none12@pci0:0:1:5:      class=0x050000 card=0x00000000 chip=0x03b210de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none13@pci0:0:1:6:      class=0x050000 card=0x00000000 chip=0x03b310de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none14@pci0:0:2:0:      class=0x050000 card=0x00000000 chip=0x03b610de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none15@pci0:0:2:1:      class=0x050000 card=0x00000000 chip=0x03bc10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
none16@pci0:0:2:2:      class=0x050000 card=0x00000000 chip=0x03ba10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'C55 Memory Controller'
    class      = memory
    subclass   = RAM
pcib1@pci0:0:5:0:       class=0x060400 card=0x0c5510de chip=0x03b810de rev=0xa1 hdr=0x01
    vendor     = 'nVidia Corporation'
    device     = 'C55 PCI Express bridge'
    class      = bridge
    subclass   = PCI-PCI
none17@pci0:0:9:0:      class=0x050000 card=0x81fb1043 chip=0x036910de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 Memory Controller'
    class      = memory
    subclass   = RAM
isab0@pci0:0:10:0:      class=0x060100 card=0x81fb1043 chip=0x036010de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 LPC Bridge'
    class      = bridge
    subclass   = PCI-ISA
none18@pci0:0:10:1:     class=0x0c0500 card=0x81fb1043 chip=0x036810de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 SMBus'
    class      = serial bus
    subclass   = SMBus
ohci0@pci0:0:11:0:      class=0x0c0310 card=0x81fb1043 chip=0x036c10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 USB Controller'
    class      = serial bus
    subclass   = USB
ehci0@pci0:0:11:1:      class=0x0c0320 card=0x81fb1043 chip=0x036d10de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 USB Controller'
    class      = serial bus
    subclass   = USB
atapci0@pci0:0:13:0:    class=0x01018a card=0x81fb1043 chip=0x036e10de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 IDE'
    class      = mass storage
    subclass   = ATA
atapci1@pci0:0:14:0:    class=0x010485 card=0x81fb1043 chip=0x037f10de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 SATA Controller'
    class      = mass storage
    subclass   = RAID
atapci2@pci0:0:14:1:    class=0x010185 card=0x81fb1043 chip=0x037f10de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 SATA Controller'
    class      = mass storage
    subclass   = ATA
atapci3@pci0:0:14:2:    class=0x010185 card=0x81fb1043 chip=0x037f10de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 SATA Controller'
    class      = mass storage
    subclass   = ATA
pcib3@pci0:0:15:0:      class=0x060401 card=0xcb8410de chip=0x037010de rev=0xa2 hdr=0x01
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 PCI bridge'
    class      = bridge
    subclass   = PCI-PCI
hdac0@pci0:0:15:1:      class=0x040300 card=0x82601043 chip=0x037110de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 High Definition Audio'
    class      = multimedia
    subclass   = HDA
nfe0@pci0:0:17:0:       class=0x068000 card=0x81fb1043 chip=0x037310de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 Ethernet'
    class      = bridge
nfe1@pci0:0:18:0:       class=0x068000 card=0x81fb1043 chip=0x037310de rev=0xa2 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 Ethernet'
    class      = bridge
pcib4@pci0:0:19:0:      class=0x060400 card=0x000010de chip=0x037610de rev=0xa2 hdr=0x01
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 PCI Express bridge'
    class      = bridge
    subclass   = PCI-PCI
pcib7@pci0:0:23:0:      class=0x060400 card=0x000010de chip=0x037510de rev=0xa2 hdr=0x01
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 PCI Express bridge'
    class      = bridge
    subclass   = PCI-PCI
pcib8@pci0:0:24:0:      class=0x060400 card=0x000010de chip=0x037710de rev=0xa2 hdr=0x01
    vendor     = 'nVidia Corporation'
    device     = 'MCP55 PCI Express bridge'
    class      = bridge
    subclass   = PCI-PCI
pcib2@pci0:1:0:0:       class=0x060400 card=0x00000000 chip=0xe13012d8 rev=0x04 hdr=0x01
    vendor     = 'Pericom Semiconductor'
    device     = 'PCI Express to PCI-XPI7C9X130 PCI-X Bridge'
    class      = bridge
    subclass   = PCI-PCI
siis0@pci0:2:0:0:       class=0x010400 card=0x71241095 chip=0x31241095 rev=0x02 hdr=0x00
    vendor     = 'Silicon Image, Inc.'
    device     = 'SiI 3124 PCI-X Serial ATA Controller'
    class      = mass storage
    subclass   = RAID
vgapci0@pci0:3:6:0:     class=0x030000 card=0x00000000 chip=0x022110de rev=0xa1 hdr=0x00
    vendor     = 'nVidia Corporation'
    device     = 'NV44A [GeForce 6200]'
    class      = display
    subclass   = VGA
fwohci0@pci0:3:7:0:     class=0x0c0010 card=0x81fe1043 chip=0x30441106 rev=0xc0 hdr=0x00
    vendor     = 'VIA Technologies, Inc.'
    device     = 'VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller'
    class      = serial bus
    subclass   = FireWire
pcib5@pci0:4:0:0:       class=0x060400 card=0x00000000 chip=0x01251033 rev=0x06 hdr=0x01
    vendor     = 'NEC Corporation'
    device     = 'uPD720400 PCI Express - PCI/PCI-X Bridge'
    class      = bridge
    subclass   = PCI-PCI
pcib6@pci0:4:0:1:       class=0x060400 card=0x00000000 chip=0x01251033 rev=0x06 hdr=0x01
    vendor     = 'NEC Corporation'
    device     = 'uPD720400 PCI Express - PCI/PCI-X Bridge'
    class      = bridge
    subclass   = PCI-PCI
siis1@pci0:7:0:0:       class=0x018000 card=0x14981043 chip=0x35311095 rev=0x01 hdr=0x00
    vendor     = 'Silicon Image, Inc.'
    device     = 'SiI 3531 [SATALink/SATARaid] Serial ATA Controller'
    class      = mass storage
aac0@pci0:8:0:0:        class=0x010400 card=0x02b69005 chip=0x02859005 rev=0x09 hdr=0x00
    vendor     = 'Adaptec'
    device     = 'AAC-RAID'
    class      = mass storage
    subclass   = RAID
```


----------



## MasterCATZ (May 18, 2012)

`# camcontrol devlist`

```
<OCZ-REVODRIVE X2 1.35>            at scbus0 target 0 lun 0 (ada0,pass0)
<OCZ-REVODRIVE X2 1.35>            at scbus1 target 0 lun 0 (ada1,pass1)
<OCZ-REVODRIVE X2 1.35>            at scbus2 target 0 lun 0 (ada2,pass2)
<OCZ-REVODRIVE X2 1.35>            at scbus3 target 0 lun 0 (ada3,pass3)
<PIONEER DVD-RW  DVR-111D 1.23>    at scbus4 target 0 lun 0 (cd0,pass4)
<GIGABYTE i-RAM v1.00>             at scbus11 target 0 lun 0 (ada4,pass5)
```


----------



## MasterCATZ (Sep 28, 2012)

The OCZ Revodrive  died (1x of the drives failed) 

Even with ZFS RAIDZ it would not boot. 

I am assuming this was due to the RAID0 mode the Firmware had and maybe the data was still being striped across all the drives instead of FreeBSD having access to the separate drives. 

How ever the replacement revodrive will not even let me partition the drives due to write protection if used in any of the firmware raid modes. 

If I have all drives as spare I can install but then I am unable to boot from the revodrive because the BIOS does not know about the drives.


----------

