Intel 320 Series 600GB SSD RAID-0 performance

Inter 320 series 600GB RAID0 performance
Inter 320 series 600GB RAID0 performance

I’ve been using this array for almost a month now and it has been pretty stable. I moved a lot of data though – definitely more than the size of the disks. Windows has been reinstalled a couple of times with full backups of my apps and multimedia being restored (for reasons unrelated to the array). Lets take a look at the performance….

As you can see the performance did drop but not significately. Now bad at all, considering the fact that TRIM is out of the picture completely.

Home PC Is Unresponsive Error when doing Configure Backup on Windows Home Server

At some point of time I started getting an error message “Home PC is unresponsive” when trying to configure backup of one of my machines with Windows Home Server. Backups started failing at that point too. I did a lot of research and found several solutions that I will summarize here. None of them worked for me so I had to do more research and find an extension to existing solution.

After examining system logs with event viewer I found following entries:

Backup of volume (System Reserved) to HPSERVER failed: Microsoft.HomeServer.Backup.NTFS.NtfsReaderException: FileRecord 12 has an invalid magic number
at Microsoft.HomeServer.Backup.NTFS.FileRecord..ctor(Byte* pData, Volume volume, Int64 index, Boolean inUse)
at Microsoft.HomeServer.Backup.NTFS.FileRecord..ctor(Byte* pData, Volume volume, Int64 index)
at Microsoft.HomeServer.Backup.NTFS.FileRecordReader.Next()
at Microsoft.HomeServer.Backup.BackupOp.BackupOperation.DoFileRecordPass()
at Microsoft.HomeServer.Backup.BackupOp.BackupOperation.RunWithoutCatch()
at Microsoft.HomeServer.Backup.BackupOp.BackupOperation.Run()

that lead me to believe that there is a file system error on system reserved partitions. See solution one below:

Solution 1: fix file system errors on your disks

You can either run chkdsk /f <disk letter> for all of your disks or right click on a disk, select “Properties”, then select “Tools” and press “Check Now” under the “error-checking” section. Leave the first checkbox on (automatically fix file system errors) and leave the second one off (scan for and attempt recovery of bad sectors). Click “Start” and the errors will get fixed. If you are doing this on a system disk that Windows boots from then you will need to reboot for system to check it.

This method almost worked for me. The problem was that I had several disks with Windows 7. These have “System Reserved” 100MB partitions at the start of the disk that doesn’t have a drive letter assigned. To check these, you need to temporarily assign them drive letters and then check for errors. You can then delete drive letters.

Solution 2: re-install .NET

Download .NET cleanup tool and remove all .NET frameworks from your computer. Reboot. After than download only the latest .NET framework (at this time it is 4.0) and manually install it. Tool can be downloaded here:

Solution 3: Registry fix suggested by HP

  1. Start regedit.exe
  2. Navigate to  “LOCAL_MACHINE\System\CurrentControlSet\Control\Class\4D36E967-E325-11CE-BFC1-08002BE10318”
  3. Set “UpperFilters” value to “PartMgr”
  4. Reboot
  5. Configure Backup in WHS

Please note that it seems that few computers have this registry key. If you don’t – this solution is not for you.

Hope this helps. If you run into similar problem and find other solutions please drop me a comment.

OCZ Colossus vs Intel 320 Series SSD comparison

I guess that you can call me and SSD geek. More than a dozen drives have been though my system so I decided it is time to publish some stats that I’ve accumulated over time:

2 Intel Series 320 600GB SSD in RAID0 performance
2 Intel Series 320 600GB SSD in RAID0 performance

Here’s my latest build: 2 x Intel 320 Series 600GB drives in RAID0 (Intel P55 motherboard controller). Although this is a new build – I’ve used HDClone to copy my mechanical drive that I used after getting rid of OCZ Colossus to the RAID0. First time the process failed at over 50% complete and I had to restart it. So in theory every flash block must have been written to because of write leveling. The array is overprovisioned by about 100GB to offset the fact that RAID0 makes TRIM impossible. Will it work? I certainly hope so. These Intel drives are getting very good reviews after a firmware update in August 2011. And in my eyes Intel is a more reputable company than OCZ.

OCZ Colossus 1TB SSD performance
OCZ Colossus 1TB SSD performance

This is it’s predecessor: OCZ Colossus 1TB SSD. It was as buggy as  other 2 OCZ Colossus drives that I’ve owned and eventually failed. I don’t recomment this drive. Back then it was the only non-RAID 1TB SSD storage available on the market so I went for it (given my bad experience with SSD RAID setups in the past). The machine was plagued by BSODs, I/O errors. From time to time disk wouldn’t be detected by BIOS at all. There are no diagnostic or secure erase utilities. The drive is literally a black box.

2 OCZ Colossus 500GB SSD in RAID0
2 OCZ Colossus 500GB SSD in RAID0

And the build before it: 2 OCZ Colossus 500GB SSD drives in RAID0. They were fast… while they worked… Then they became buggy. Then they failed. Don’t recommend. The idea was to get 1TB SSD storage (which was impossible to get otherwise, except for 1TB OCZ Colossus). Since RAID makes TRIM impossible I chose OCZ drives since they were the first to boast background garbage collection.

Intel 320 Series 120GB SSD Perf
Intel 320 Series 120GB SSD Perf

For comparison here is also benchmark table from single Intel 320 series 120GB SSD drive. As you can see Intel SSD RAID0 performance scales very well (linearly in most cases) in all tests except random 4K read with queue depth of more than 32. Even single Intel drive is nothing to frown at. Since it is not RAID array member TRIM will keep it performing at the top without the need to over-provision.

Western Digital 1TB 7200RPM perf
Western Digital 1TB 7200RPM perf

And finally to provide some contrast, here are benchmarks from WD 7200RPM 1TB mechanical spin-drive. The only area where it more or less holds its ground against SSD are sequential writes. Performance significantly drops on 512 kilobyte I/O operations and plummets into oblivion on 4K reads and writes. Unfortunately for mechanical drive this is the most common I/O type when booting Windows and launching apps. This is the reason I’m hooked on SSDs and keep using them despite poor reliability that I’ve experienced so far.

Atahualpa WordPress Theme Problems

It seems like there are quite a few problems with Atahualpa 3.6.7 and WordPress 3.x.x. Some of the problems include, whitespace characters being eaten, Adsense blocks not being displayed, etc. These can be fixed by tweaking a few options:

In WordPress admin panel, open “Atahualpa Theme Options” in the “Appearance” section. At the very bottom there will be “Configure CSS & JS” option page. There set “CSS: External file or inline?” and “Javascript: External file or inline” to “External and “CSS: Compress?” and “Allow debugging?” to “No”.

Press “Save changes” and your problems should be solved now.

Celestron Power Tank Battery Replacement and Mod

I recently got into astrophotography and among other accessories for my Celestron C8-SGT (XLT) telescope I purchased Celestron Power Tank. The idea is neat – Celestron combined a 7Ah 12V SLA battery in the same package with dim red light that wouldn’t destroy your night vision, 800,000 candle halogen spotlight and step down DC-DC converters that provide up to 1A of 3V, 6V and 9V to be used by other accessories like auto-guider.

The bad news were that after the initial charge my Celestron PowerTank was still dead. I’m not sure whether the battery was bad initially or it was damaged because I charged it for 24 hours rather than 16 as prescribed in the user manual. Either way I had to replace the battery.

While it is not as easy as swapping out AA Duracells in your flashlight, it is doable. You will need a Phillips screwdriver which is long and thin so that you can reach screws in their deep sockets. The only screwdriver that I had of the kind was from a precision set so it lacked a proper handle. Screws on the other hand were quite stiff. I had to use pliers to turn the screwdriver while pressing it in.

Here’s how Celestron Power Tank looks disassembled.

Celestron Power Tank Disassembled (Battery Replacement)
Celestron Power Tank Disassembled (Battery Replacement)

Everything looks good here except for 2 things:

  • DC-DC conveters aren’t of the switched-mode efficient type so your other accessories will drain battery more than they should.
  • Wires that run from battery to the terminals are way too think for PowerTank to be used as jump starter.
Celestron Powertank Battery Switch Mod
Celestron Powertank Battery Switch Mod

While 7Ah should be enough for all-night sessions unless you run anti-dew straps, it never hurts to have more power and the ability to use it without having to power down your equipment to switch to another battery. Since I already had my Power Tank disassembled I decided to install a simple mod that would allow me to do just that.

Normally the battery is directly connected to the terminals on the side of the PowerTank. From there the power is distributed to the rest of the unit, including 12V automotive sockets. I put a small rocker switch inside the side compartment where additional charging cable is normally stored. This switch can disconnect the battery from the side terminal and the rest of the Power Tank.

When the battery will start to run low, I can connect another battery/car/power supply to the side terminals to supply power to the equatorial mount and then use the switch to disconnect the Power Tank battery from the circuit. This way external battery will not waste power to charge the drained battery in the PT and there is no interruption of power supply to the mount and other accessories. If the external battery were to be drained as well, I can temporarily connect the PowerTank battery again, while I swap it out.

PS: An important note about charger that comes with the Power Tank – it is junk! It is just a power supply that will keep pumping 15V into your battery even if it is already charged. You can overcharge and destroy your battery this way. Do yourself a favor and buy a smart Sealed Lead Battery charger if you don’t have one already. A good charger will detect battery charge state and will not overcharge it even if you leave it connected for months. A good charger can also combat battery sulfation to some degree – extending the life of your battery. Since the battery is directly connected to the side terminals on the unit, you can set the Charge-Off-On switch to Off position and connect your charger to these terminals.

Clear skies and happy stargazing!

squid random outgoing ip/interface selection

If you want to configure squid 2.7 or newer load balance several in random or round-robin fashion outgoing connections or IP addresses in a random manner – here is how you can do it:

It can be done but unfortunately it is not as easy as setting “balance_on_multiple_ip on” in squid.conf. This option would load balance multiple IP addresses of remote servers – not your outgoing addresses. If you type “nslookup”, you will see that Google uses multiple IP addresses for this domain: With “balance_on_multiple_ip on” squid will balance the load between these addresses.

Setting up squid for round robin outgoing network interface usage is based on the following fact: although squid can’t round-robin outgoing interfaces, it can round-robin parent proxy servers. So the solution is to configure squid as both child and parent and round-robin among its own parent instances while each parent instance is set-up to use specific outgoing interface.

In this sample configuration we’ll set up squid to accept client connections on address and randomly use outgoing interfaces, and I use 10.0.0.x for demonstration reasons. In a real config these will most likely be replaced with public Internet IPs.

1) Configure squid to listen on all of these interfaces (config directive http_port). will be used by users, while 10.0.0.x will be fake parent proxy servers that squid will connect to itself:


2) Now lets force it to use the same outgoing interface the request came in from by using some ACLs and tcp_outgoing_address directive:

acl src_01 src
acl src_02 src
acl src_03 src
tcp_outgoing_address src_01
tcp_outgoing_address src_02
tcp_outgoing_address src_03

You can use myip instead of src here. At this point you can also start your squid server and make sure that the configuration indeed works. Set one of the outgoing interface addresses as your browser proxy and navigate to You should always see the address of the interface that you use.

3) Now lets set up cache peers that will point squid to itself:

acl first_req src
acl second_req src
cache_peer parent 3128 0 round-robin no-query
cache_peer parent 3128 0 round-robin no-query
cache_peer parent 3128 0 round-robin no-query
cache_peer_access allow first_req
cache_peer_access allow first_req
cache_peer_access allow first_reqcache_peer_access deny second_req
cache_peer_access deny second_req
cache_peer_access deny second_req
never_direct allow first_req
never_direct deny second_req

ACLs and cache_peer_access directives ensure that squid will not forward the request to itself infinitely by denying access to “parent” caches to requests that came from public interfaces. “never_direct” parameters are used to make sure that POST requests are distributed too.

At this point you can set as proxy server in you browser and make sure that each time that you connect random outoing interface is selected and that this outgoing interface periodically changes.

4) Additional things you can do:

  • Set up ACLs to prevent external users from accessing squid on public outgoing interfaces (you you can just use firewall to achieve the same effect)
  • You can use port number rather than interface to identify fake parent caches and thus avoid listening on outgoing interfaces altogether.
  • If you are setting up squid just for load balancing and request forwarding you can disable disk cache by using configuration directive: “cache_dir null /null” and therefore improve proxy performance.
  • Make anonymous proxy by using “header_access” and “forwarded_for off” directives

You can achieve similar effects by using “random” ACL that was introduced in squid 3.2. However if you are like me (running on Windows and too lazy to compile your own stuff), you only have access to Squid 3.0 binaries that don’t have this feature yet.

SSD RAID-0 review – my personal experience

I’ve been playing around with SSD drives in raid configuration for almost 2 years now and would like to share my experience that will hopefully save somebody some time and money.

All RAID configurations described here were based on Intel RAID controller built-in to P55-based motherboards.

I’ve built my first SSD RAID-0 rig when Windows 7 came out. I wanted 1TB in storage so I’ve put 4 Corsair P256 SSD drives in RAID-0 configuration. Before you would run off and do just that without reading this article to the end, let me give you one word of warning: “Using RAID-0 without proper regular backups is a loud statement that data on the array is not important to you at all”. I’ve had automated nightly backups done by Windows Home Server so I was covered.

Back then Corsair SSDs didn’t have TRIM support but I didn’t care much. Even after the drives filled up, RAID-0 provided around 100 MB/s sustained linear writes which was good enough for me (this is what a single mechanical HDD would put out). The strength of SSDs lies not in their linear access speed (which normally is on par or better than mechanical drives) but in their ability to process thousands of IO operations compared to around 100 of HDDs. This dramatically improves overall PC performance.

I was getting 250MB/s sustained linear reads and 100MB/s sustained linear writes and around 2K IOPs on 4KB random access. Total computing bliss!

My RAID of SSDs was performing happily until it started stuttering. The system would freeze for several seconds due to the fact that no IO could happen at all. Later Intel Matrix storage manager started reporting failures of one of the drives. By that time Corsair came up with firmware update that supported TRIM (VBM19C1Q) and Intel announced TRIM support in RAID-0 configuration via driver update. I reflashed all 4 drives with new firmware, restored the system from backup (since updating the drives causes a complete data-loss) and updated the Intel driver.

For some time everything was tip-top (I guess due to the fact that drives were restored to “like-new condition” via secure erase). But after a while everything slowed down. It very much seemed like TRIM did not work. I never found out which part of the system didn’t do it’s job because soon stuttering came back and then array linear write performance decreased to 3MB/s. The situation was unbearable so I pulled the array apart and replaced it with RAID-0 array of 2 512MB OCZ colossus LT drives.

Back then it seemed like a good idea since OCZ claimed it didn’t need TRIM because drives relied on automatic internal “garbage collection” to keep themselves in shape. I then tested and re-tested each individual Corsair P256 and each drive performed flawlessly by itself. TRIM worked, there was no stuttering. My new OCZ Colossus array (on the same controller) was also performing great so I assumed it was a compatibility issue between Intel RAID chipset and Corsair SSDs. After making sure that drives were flawless, I sold 3 on eBay to recoup some of the money I spent on Colossuses. The 4th one still works fine in my wife’s notebook.

New Colossus array seemed to work fine and preformed great. Linear access was sustained 500+MB/s even after the drives filled up. I was getting 4K IOPS so everything seemed tip top. There was one slight oddity. CrytalDiskMark reported linear write speed of 500MB/s but linear reads were at 240MB/s. Copying large files to nul device showed speeds in excess of 500MB/s so clearly the array read data as it was supposed to, but for some reason CrysalDiskMark was doing it slowly. This didn’t bother me much so life went on.

After several months trouble started again. This time the machine would BSOD because of IO fatal error. After rebooting Intel RAID manager would report one of the SSD drives as failed. Sometimes BIOS wouldn’t detect the drive as well. Powering the machine down, rebooting and resetting drive to normal temporarily solved the problem until it happened again. Needless to say, Blue Screen of Death is bad for overall health of the PC. Files get corrupted, data is lost etc. Eventually one of the system files was damaged badly enough by the BSOD so the system would no longer boot.

By that time I’ve had enough so I replaced two 512GB Colossus drives with a single 1TB drive. Although I’ve lost half of the bandwidth, hopefully it will gain me some peace of mind as the system will become more reliable.

Bottom line: Intel Matrix Storage and SSDs don’t mix. The system may work for a while but eventually it will fail and you may lose all of your data. While it works it completely rocks though.

Update 11/3/2011:

After a few month of happy usage of OCZ Colossus 1TB drive (now discontinued – no surprise here) it is SSDD – BSOD, stuttering, drive not being detected by BIOS, file system errors – you name it. Good thing my Windows Home Server does nightly backups… After yet another “crash, then drive not detected” episode I decided to call it quits on SSDs. Thing is – I have several 32..256 GB ones working flawlessly in laptops but it seems that once the size gets over 256GB reliability goes out the window. I used HDClone to move my system partition to a mechanical spinning hard drive and contacted OCZ for RMA.

Bottom line 2: OCZ SSDs suck – end of story.

Update 11/6/2011:

After using mechanical drive for some time I once again started to miss SSD performance. Unfortunately for me, I do need 1TB of storage. Largest solid state drive from a reputable manufacturer that gets good reviews is Intel 320 series 600GB – not large enough. Since my past experience with OCZ drives demonstrated that the problem was with OCZ drives rather than with RAID setup, I decided to give RAID another try. Obviously with RAID it is impossible to use TRIM so with usage drive write performance is bound to decrease. This is somewhat offset by the fact that RAID0 provides 2x performance boost.

I also plan to over-provision the array. 600 billion byte translates to 558.9 Gigabytes (1024 * 1024 * 1024), twice that is 1,117.8 GB. This is 186.3 GB larger than current 931.5 GB spin-drive that I use now. By keeping partition size the same when doing the transfer I will ensure that each Intel SSD drive will have 93.2 GB of logical blocks that are never used. So in theory these flash blocks should always stay clean and ready to be written at maximum performance. Once LBA is overwritten, it can immediately be reclaimed by the background garbage collector.

This is theory – how it will work out in real life – we will see once I install the system next week and in the months to follow.

Update 11/8/2011:

The array is up and running. Here’s CrystalDiskMark screenshot of it’s performance measurements. It knocks the socks off OCZ Colossus LT drives (single or RAID) when it comes to random 4K reads. It is only slightly slower than 2 OCZ drives in RAID0. Will this setup work? I hope so. Time will tell…

2 Intel Series 320 600GB SSD in RAID0 performance
2 Intel Series 320 600GB SSD in RAID0 performance

You can find more detailed performance comparisons here.