Create server profile and install minimal RedHat 6 on UCS blade. Check with lspci command if you see the hardware:
# lspci | grep -i fusion 81:00.0 Mass storage controller: Fusion-io ioDrive2 (rev 04)
You have to register at FusionIO support site to download required RPMs. Following RPMs are required: fio-common, fio-firmware, fio-sysvinit, fio-util, libvsl, iomemory-vsl.src.rpm. There are some precompiled modules avaliable for download, but we will use SRC rpm and recompile module. Install RPMs required to this compilation:
# yum install rpm-build kernel-devel
Compile and load driver itself:
root@localhost:/tmp/FIO # rpmbuild --rebuild iomemory-vsl-3.2.10.1509-1.0.el6.src.rpm ..... Wrote: /root/rpmbuild/RPMS/x86_64/iomemory-vsl-2.6.32-504.12.2.el6.x86_64-3.2.10.1509-1.0.el6.x86_64.rpm Wrote: /root/rpmbuild/RPMS/x86_64/iomemory-vsl-config-2.6.32-504.12.2.el6.x86_64-3.2.10.1509-1.0.el6.x86_64.rpm Wrote: /root/rpmbuild/RPMS/x86_64/iomemory-vsl-source-3.2.10.1509-1.0.el6.x86_64.rpm ..... # rpm -ihv /root/rpmbuild/RPMS/x86_64/iomemory-vsl-2.6.32-504.12.2.el6.x86_64-3.2.10.1509-1.0.el6.x86_64.rpm Preparing... ########################################### [100%] 1:iomemory-vsl-2.6.32-504########################################### [100%]
Install other required RPMs:
# rpm -ihv fio-common-3.2.10.1509-1.0.el6.x86_64.rpm\ fio-firmware-fusion-3.2.10.20150212-1.noarch.rpm\ fio-sysvinit-3.2.10.1509-1.0.el6.x86_64.rpm\ fio-util-3.2.10.1509-1.0.el6.x86_64.rpm\ libvsl-3.2.10.1509-1.0.el6.x86_64.rpm
Load driver for first time and verify hardware state
# modprobe iomemory-vsl
# lspci | grep Fusion
81:00.0 Mass storage controller: Fusion-io ioDrive2 (rev 04)
# lspci -s 81:00.0 -v
81:00.0 Mass storage controller: Fusion-io ioDrive2 (rev 04)
Subsystem: Cisco Systems Inc Device 00bc
Physical Slot: 14
Flags: bus master, fast devsel, latency 0, IRQ 128
Memory at fbe20000 (32-bit, non-prefetchable) [size=8K]
Memory at fbe00000 (32-bit, non-prefetchable) [size=128K]
Expansion ROM at fbd00000 [disabled] [size=1M]
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [60] Express Endpoint, MSI 01
Capabilities: [9c] MSI-X: Enable- Count=1 Masked-
Kernel driver in use: iodrive
Kernel modules: iomemory-vsl
# fio-status
Found 1 ioMemory device in this system
Driver version: 3.2.10 build 1509
Adapter: Cisco Mezz
Cisco UCS 785GB MLC Fusion-io ioDrive2, Product Number:MFIO785M, SN:XXXXXXXXXXX
External Power: NOT connected
PCIe Power limit threshold: 24.75W
Connected ioMemory modules:
fct0: Product Number:MFIO785M, SN:XXXXXXXXX
fct0 Attached
Fontana, Product Number:MFIO785M, SN:XXXXXXXXX
PCI:81:00.0, Slot Number:1
Firmware v7.1.15, rev 110356 Public
785.00 GBytes device size
Internal temperature: 42.82 degC, max 43.31 degC
Reserve space status: Healthy; Reserves: 100.00%, warn at 10.00%
Contained VSUs:
fioa: ID:0, UUID:43d45254-7fa7-42b3-893d-8aa0dbc2224e
fioa State: Online, Type: block device
ID:0, UUID:43d45254-7fa7-42b3-893d-8aa0dbc2224e
785.00 GBytes device size
Low level formatting device with 4k page size will reduce memory usage of driver and improve performance. Scince Oracle use 8k as datablock size, 4k page size is quite suitable.
# fio-format -b 4k /dev/fct0 /dev/fct0: Error detected. The device is not detached. WARNING: Formatting will destroy any existing data on the device! Do you wish to continue [y/n]? n Aborted. # fio-detach /dev/fct0 Detaching: [====================] (100%) - fioa - detached. # fio-format -b 4k /dev/fct0 /dev/fct0: Creating block device. Block device of size 785.00GBytes (731.09GiBytes). Using block (sector) size of 4096 bytes. WARNING: Formatting will destroy any existing data on the device! Do you wish to continue [y/n]? y WARNING: Do not interrupt the formatting! If interrupted, the fio-sure-erase utility may help recover from format errors. Please see documentation or contact support. Formatting: [====================] (100%) / /dev/fct0 - format successful.
Now attach block device:
# fio-attach /dev/fct? Attaching: [====================] (100%) / fioa - attached.
If you plan to use it with LVM, then create PV aligned to 4k, create VG and create EXT3 using 4k as block size.
Scince I do not see option extending FIO device, I'll not use LVM over it
# mkfs.ext3 -j -m0 -b4096 /dev/fioa
It is looks like active cache resides in huge driver's memory allocation. Then it should be "flushed" to device during shutdown. This procedure includes umount, deactivating VG, deattaching fio devices. Deattaching do real final writing. This mean that these cards does not like power cut-off and data may become corrupted. Consider good backup policy (as usual).
An RPM fio-sysvinit contains initscripts that works well; you just have to configure it. First of all fix /etc/fstab with noauto attribute:
# grep fioa /etc/fstab /dev/fioa /oradbs/oratemp ext3 defaults,noauto 0 0
Then disable udev taking care about FusionIO cards by editing /etc/modprobe.d/iomemory-vsl.conf as follow:
# To keep ioDrive from auto loading at boot when using udev, uncomment below blacklist iomemory-vsl # disable auto attach # options iomemory-vsl auto_attach=0 # disable parallel attach for multiple cards # options iomemory-vsl parallel_attach=0 # To allow the ioDrive driver to load on SLES11, set "allow_unsupported_modules 1" in /etc/modprobe.d/unsupported-modules
Verify that iomemory-vsl started at boot time:
# chkconfig --list iomemory-vsl iomemory-vsl 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Configure init script to do what you need by editting /etc/sysconfig/iomemory-vsl, like:
# egrep -v "^#|^$" /etc/sysconfig/iomemory-vsl ENABLED=1 TIMEOUT=15 VERBOSE=1 KILL_PROCS_ON_UMOUNT=1 SWAP=0 IOMEMORY_MOD_OPTS="" MD_ARRAYS="" LVM_VGS="" LVM_DETECT=0 MOUNTS="/dev/fioa /oradbs/oratemp"
Edited strings are bolded here. Reboot server and verify boot messages, You SHOULD NOT SEE lines like that:
kernel: fioinf Cisco UCS 785GB MLC Fusion-io ioDrive2 0000:81:00.0: *************************************************** kernel: fioinf Cisco UCS 785GB MLC Fusion-io ioDrive2 0000:81:00.0: *** unclean shutdown detected, re-scanning log. *** kernel: fioinf Cisco UCS 785GB MLC Fusion-io ioDrive2 0000:81:00.0: *** this may take several minutes. *** kernel: fioinf Cisco UCS 785GB MLC Fusion-io ioDrive2 0000:81:00.0: ***************************************************
# hdparm -tT /dev/fioa /dev/fioa: Timing cached reads: 19754 MB in 2.00 seconds = 9892.81 MB/sec Timing buffered disk reads: 4366 MB in 3.00 seconds = 1455.32 MB/sec
bonnie++ -d /oradbs/oratemp -s 200g -m voleg
| Version 1.96 | Sequential Output | Sequential Input | Random Seeks | Sequential Create | Random Create | |||||||||||||||||||||
| Size | Per Char | Block | Rewrite | Per Char | Block | Num Files | Create | Read | Delete | Create | Read | Delete | ||||||||||||||
| K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | K/sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | /sec | % CPU | |||
| voleg | 200G | 789 | 100 | 691507 | 93 | 452196 | 52 | 3664 | 100 | 1098461 | 51 | +++++ | +++ | 16 | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ | +++++ | +++ |
| Latency | 10334us | 1202ms | 166ms | 2511us | 3158us | 2587us | Latency | 142us | 344us | 375us | 191us | 12us | 95us | |||||||||||||