Multiply your problems with SATA Port Multipliers and cheap SATA controllers

This resource was originally created by user: jgreco on the TrueNAS Community Forums Archive. Please DM this account or comment in this thread to claim it.

In the last year or two, we’ve had a resurgence of users asking about SATA Port Multipliers and cheap SATA controllers.

Please, do NOT use port multipliers, and use cheap SATA controllers only after extensive research.

SATA controllers and SATA Port Multipliers are some of the cheapest hardware, designed to make a number of hard drives accessible to Windows. A port multiplier takes a single port of a SATA controller and multiplexes it between several drives.

Windows typically only accesses one or two drives at a time, which means that the needs of Windows users are often relatively limited. However, ZFS often accesses data on all drives simultaneously, such as during scrubs and resilvers. This creates a lot of stress on I/O controllers, and tends to expose any problems.

Cheap SATA controllers are often built as PCIe x1 cards, to make them compatible with the largest number of mainboards. On PCIe 2.0, a single PCIe lane is capable of 500MBytes/sec, or at best, two HDD’s worth of transfer speed. Yet, many cheap SATA controllers (Syba SI-PEX40064 example) have four SATA ports on them. There is insufficient capacity to talk to all four drives simultaneously.

Worse, often, this is combined with SATA Port Multiplier to offer cards handling as many as 10 drives, so clearly there isn’t enough bandwidth there.

So far, all of this assumes that all the hardware works swimmingly well, and even so, it already sucks.

Unfortunately, many cheap SATA controllers are a bit dodgy, and do NOT work well. Because they are price-driven by the PC market to produce the cheapest product, many of these cards use dodgy controllers which may be knockoffs of already poorly-designed controllers by companies who have put out something that is just good enough to work acceptably under Windows. Often, these chipsets do not work particularly well under FreeBSD and Linux, especially when stressed by the massive I/O loads imposed by ZFS.

Worse, SATA Port Multipliers require both a SATA controller that works perfectly, AND a host driver that understands how to control the Port Multiplier correctly. The number of working, trustable combinations of these that exist are relatively few. The fine folks over at BackBlaze and 45Drives built their first generations of storage appliances with these after exhaustive testing that only found a few good combinations. They have posted significant discussion of their experiences over at Our Biggest Design Decision - Direct Wired or Backplane? - 45Drives Blog
which is worth reading before you choose to go down the Port Multiplier path.

Next, transistors generate heat, meaning that many critical components in a computer have a heatsink to help dissipate the heat. Many cheap SATA controllers lack the heatsink, and if the airflow and surface area available are insufficient to dissipate the heat, ZFS can and will keep your SATA silicon very busy especially during heavy activity, scrubs, or resilvers. Much busier than Windows, which typically focuses on a single drive for a small number of files for only seconds or minutes. ZFS scrubs, for example, can take days, and also usually involve multiple drives. This generates a lot more heat than some controllers were really designed for.

Further, when you get your cheap SATA controller, it may come with cheap SATA cables, with inexpensive SATA connectors, and the signal integrity may not be quite up to snuff. This may lead to occasional corruption of the data as it transfers between the drive and the controller. Most SAS cabling used with the recommended LSI HBA disk controllers are very carefully shielded and resistant to signal degradation, and SAS has other design elements helping to protect your data. The typical bargain bin SATA controller at your local Fry’s Electronics has multiple points where signal corruption may be a concern, and you have to remember that if you have an array of these, you need EACH SATA connector at EACH drive and EACH controller connection, along with the cable itself, to be performing perfectly.

Almost all of these “solutions” have been more expensive to buy new than it costs for a used LSI HBA on eBay, where the PERC H200’s and PERC H310’s are often available for $30, and provide eight fully supported lanes and can use SAS expanders for up to dozens (or even hundreds!) of additional drives beyond that.

6 Likes
Jmb585 M.2 to sata card doesnt see SSD
Instability with Proxmox SATA controller PCI passthrough to TrueNAS Scale 24 VM
No-name sata card
Asrock B550 Phantom Gaming-ITX/ax: best choice for Mini-ITX in 2024?
Pool unhealthy, all disks and cables working fine
How reliable are "to sata" adapters
Degraded pool on two brand new disk
Pool exported after restart, I/O error when importing
SATA PCI card extension
Realistic Pool/vdev Config for Casual/Hobby User
Gone for the weekend, returned to pool missing, possible drive failure, no idea what to do
ATA Error Counts increasing
Two pools of 20 & 24tb drives?
ASRock E3C236D2I - add one more drive & SCSI HBA
High IO WAITS SMB LAG
Pool degraded after update to 25.04.0
POOR SMB / Samba Performance
Fresh install of True Nas scale
Fresh install of True Nas scale
My drive died. Can I temporaily switch from RaidZ1 to Raid 1 until I find replacement?
Problem with Asm1166 10Port PCIE
Help SAS Board on SCALE
Problem with Asm1166 10Port PCIE
Zpool CHKSUM - Help needed
Some troubleshooting and advice are needed
5 of 6 Drives in zpool Dropped Into Degraded State
Using sata expansion cards
Setting up a new NAS (first time NAS build)
M.2 to SATA adapter for NAS
Help! Shut down system to replace failed disk, now storage pool is not mounted
Migrated TrueNAS from older host to UEFI host, and cannot upload saved config ; also, boot pool issues?
Checksum Errors (Pool is Not Healthy)
Complicated question I have. SSD,network,apps,boot-pool/speeds
Degraded ZFS Pool Magically Healthy Again
Missing Pool - state is OFFLINE
Marvell 88SE9215 and SATA SSD's not showing
Build advice
Best config for boot drive?
Resilvering Stuck after changing disk array connector
TrueNAS Scale on Arm (2024 Thread)
Advice on Server Build
Noob error: drive not fully inserted in new case
Getting Pool 'boot' has encountered an uncorrectable I/O failure - smartcrt check successful
Need some advice for first NAS config
SATA drives connected through a PCIe to SATA expansion card could not be recognized / read
CRITICAL Pool xxx state is OFFLINE: Help?
PC rotto aiuto ripristino
Vdev Offline - Disks with exported pools like david-g
Did i get a bad LSI sas 9207-8e Card?
In zfs3 all disks have changed status to DEGRADED
Pool degraded on every Hdd >4tb

Similar and worse problems exist amongst USB to SATA adapter cables or boxes. These are often used to do a quick copy of data to a loose HDD on a shelf. The results are very unreliable.

One-to-one adapters should be fine, and are a recommended way to boot without using a SATA or M.2 port.
One-cable-to-many-drives boxes can be expected to use a port multiplier.

1 Like

And USB/SATA bridges have gotten surprisingly good in recent years, probably by virtue of all external hard drives being SATA.

1 Like

I just bought two of these LSI SAS cards. They connect 8 SCSI drives to one PCIe x 8 slot.
I have two PCIe x 8 slots available (they share 16 lanes if both are populated).
The issue is that these older LSI cards are 6gb/s which is the same as SATA…

# 9207-8i PCIE3.0 6Gbps HBA LSI FW:P20 IT Mode ZFS FreeNAS unRAID 2* SFF-8087 SAS

How’s that an issue?
As an alternative to a second HBA, you may use a SAS expander: No PCIe lane required, just power (and cooling).

3 Likes

Recommended lsi card is generally for spinning rust drives. For a full sata ssd aray, it could in theory be a bottleneck & maybe a newer hba model could be considered… But for hdds? 6gb/s is overkill

1 Like

I have a 45 drive system, currently with 30 drives in it.

It has 3 PCIe 1.0 1x cards with Silicon Image chips designed for PCI-X. They are each connected to 3 multipliexers of unknown make.

This may offend you, and I can understand why. However, I run it for two very important reasons:

  1. It was free.
  2. It does what I need it to do

Having said that, I do get notified of ATA errors on ocassion and I think it’s probably at the limit of how many drives it can actually handle regardless of how many ports are on hand.