New Proxmox box w/ ZFS - R730xd w/ PERC H730 Mini in “HBA Mode” - BIG NO NO?

In updating the firmware on the H730, I found a setting in the Lifecycle Controller that allows for the cache of the H730 to be disabled. I believe the firmware updates are still going on, so I will wait to investigate this option in the BIOS, but should I get accurate SMART information (which I've heard multiple recent reports the H730 will give) then I see no reason why the H730 should have the reputation it does. It seems to simply require a bit more configuration to make it as robust for ZFS as an actual HBA, but given it's a higher-end RAID controller that shouldn't come as a surprise to anyone. Again, this is dependent on both accurate SMART information, and the cache actually being disabled, but I see no reason why either of these would fail or cause issue. I understand why the Proxmox and ZFS communities advocate so heavily against using RAID controllers, but it seems the majority of the information specific to the H730 is outdated or wrong. And as shown earlier in this thread, performance should not be an issue either. I see no reason why the H730 will not function perfectly fine with Proxmox and once I test my aforementioned assumptions, I will share my results. I expect that I will be sharing them with Proxmox installed and happily running on my server.
Sorry to activate this thread after 7 months ,but I'd like to know how's your experience so far with your setup. I am having the same hardware and about to set Proxmox up. Your and sb-jw's posts seem positive on this card and different from what I saw elsewhere.
 
I have acquired a Dell r830 with 4x E5-4650v4 2.20GHz processors with 56 total cores and 1TB ECC Registered ram for a sandbox to evaluate proxmox VE for a replacement to our existing ESXi environment.
I have set the controller to HBA with the cache disabled in the lifecycle controller. We are planning to using ZFS.
I will update with what happens as best I can.
Planning on installing Proxmox VE next week.
 
I have Dell R730, with H730P Mini, I'll be using it in HBA with cache disabled. I'll let you guys know if anything goes wrong.

My changes over default config for H730P in BIOS (F2) > Device Settings:
1. Set Select Boot Device to None in Controller Management
2. Switched to HBA mode in Advanced Controller Management
2. Disabled Disk Cache for Non-RAID in Advanced Controller Properties
 
Last edited:
  • Like
Reactions: tidnab
I have Dell R730, with H730P Mini, I'll be using it in HBA with cache disabled. I'll let you guys know if anything goes wrong.

My changes over default config for H730P in BIOS (F2) > Device Settings:
1. Set Select Boot Device to None in Controller Management
2. Switched to HBA mode in Advanced Controller Management
2. Disabled Disk Cache for Non-RAID in Advanced Controller Properties

this is exactly my hardware, but I did not disable the cache. The zpool completely disapears after each reboot. Is this the cache? Do I need to disable it?
 
The zpool completely disapears after each reboot.
That's surprising and not expected, of course.

How did you create that pool? What gives "zpool status" before reboot and "zpool import" after it?

Is this the cache? Do I need to disable it?
We are talking "write cache", right? It tells ZFS that data has been written to disk while it actually is not. Theoretically that's fine, as long as the Battery is okay. Personally I would recommend to disable it as ZFS has its very own caching system: the Adaptive Replacement Cache "ARC" and a five-second buffer in Ram for writing data = a Transaction Group ("TXG"), to be written to the ZFS-Intent-Log, "ZIL". For asynchronous writes this is highly optimized and works very well. For sync-writes the data has to be written to disk. And I do not like that the controller lies about this very fact.

You can just disable it to test the effect, right?
 
That's surprising and not expected, of course.

How did you create that pool? What gives "zpool status" before reboot and "zpool import" after it?

This is a pool with 8 600GB SAS 15k disks (which are leftover, I'd prefer higher capacity, it's just for backup)

pve-cg-02:/root # zpool status
pool: tank
state: ONLINE
config:

NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0

errors: No known data errors
pve-cg-02:/root # smartctl -a /dev/sda
smartctl 7.4 2024-10-15 r5620 [x86_64-linux-6.17.2-2-pve] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor: SEAGATE
Product: ST600MP0036
Revision: KT39
Compliance: SPC-4
User Capacity: 600,127,266,816 bytes [600 GB]
Logical block size: 512 bytes
Formatted with type 2 protection
8 bytes of protection information per logical block
LU is fully provisioned
Rotation Rate: 15000 rpm
Form Factor: 2.5 inches
Logical Unit id: 0x5000c500cec1365f
Serial number: WAF22VXG
Device type: disk
Transport protocol: SAS (SPL-4)
Local Time is: Sun Dec 7 12:56:58 2025 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Temperature Warning: Disabled or Not Supported

=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK

On the other node the pool ist just "not there" after reboot

pve-cg-01:/root # zpool status
no pools available

I tried a lot of force imports, pointed the zpool import to the disks. Disks are still sda to sdh. No changes.

Only thing is to recreate the pool, but it will be away again after reboot

zpool create -o ashift=12 -o autotrim=on -O compression=lz4 -O atime=off -O relatime=on -O xattr=sa tank raidz1 sda sdb sdc sdd sde sdf sdg sdh -f

pve-cg-01:/root # zpool status
pool: tank
state: ONLINE
config:

NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0

errors: No known data errors
pve-cg-01:/root #




We are talking "write cache", right? [..]

You can just disable it to test the effect, right?

sure I will do tomorrow, as the system is not usable like this at the moment. But I'm afraid, that it won't help, as the server had allready days of uptime. I can't imagine that the basic filesystem should not have been written allready

Christian
 
no pools available
You may read man zpool-import - there are some options to find a missing pool by searching for devices and also to import a "destroyed" pool (for example). Of course most of those commands are dangerous, but you don't have actual data on those drives yet, right?

The drives are visible via lsblk -f?
 
Hi,
You may read man zpool-import - there are some options to find a missing pool by searching for devices and also to import a "destroyed" pool (for example). Of course most of those commands are dangerous, but you don't have actual data on those drives yet, right?

The drives are visible via lsblk -f?

this zpool create above was a live command. So I recreated the pool.


pve-cg-01:/root # blkid| grep tank
/dev/sdf1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="16965323507885345190" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-ad2dc21769d5f873" PARTUUID="cba38a8d-73fa-5f4c-8017-2aa9e7432741"
/dev/sdd1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="9164177361727748272" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-60c6bcce3add2093" PARTUUID="85660c1f-e2dc-0441-ae6b-5e93b56020f6"
/dev/sdb1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="998877980424608258" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-b8e907e3f5e1a417" PARTUUID="d6dc2176-e6e5-354f-89f9-18e1aea98132"
/dev/sdg1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="16084983104017224529" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-bb0db3ce4a6066ed" PARTUUID="7db0bf94-f1bd-214d-90ee-876e20e36d6d"
/dev/sde1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="12343655275724425310" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-1293f52f8f162216" PARTUUID="33131770-8978-7840-8958-84e3ba707cb3"
/dev/sdc1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="14167843731415087663" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-d08c14b89dbb9a39" PARTUUID="3f7948f4-af30-8946-8a75-81c99ef274bb"
/dev/sda1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="18117515269011592014" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-32148034674e0247" PARTUUID="8e8c8448-db99-bc43-9bbc-1346ea420fec"
/dev/sdh1: LABEL="tank" UUID="15477334804078097605" UUID_SUB="15605202821228868619" BLOCK_SIZE="4096" TYPE="zfs_member" PARTLABEL="zfs-a7c93246d227b96d" PARTUUID="f93e5c73-28b4-4245-b385-874750957b17"
pve-cg-01:/root # sync
pve-cg-01:/root # reboot

after reboot:
pve-cg-01:/root # zpool status
no pools available
pve-cg-01:/root # zpool import tank
cannot import 'tank': no such pool available
pve-cg-01:/root # zpool import tank -f
cannot import 'tank': no such pool available
pve-cg-01:/root # zpool import tank -F
cannot import 'tank': no such pool available

pve-cg-01:/root # blkid| grep tank

pve-cg-01:/root # fdisk -l /dev/sda
Disk /dev/sda: 558.91 GiB, 600127266816 bytes, 1172123568 sectors
Disk model: ST600MP0036
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 51BF9D4C-76A4-A243-94E9-EE8F0269839B

Device Start End Sectors Size Type
/dev/sda1 2048 1172105215 1172103168 558.9G Solaris /usr & Apple ZFS
/dev/sda9 1172105216 1172121599 16384 8M Solaris reserved 1

pve-cg-01:/root # blkid | grep sda
/dev/sda: PTUUID="51bf9d4c-76a4-a243-94e9-ee8f0269839b" PTTYPE="gpt"
pve-cg-01:/root #

pve-cg-01:/root # zpool import -d /dev/sda -f -F -D
no pools available to import
pve-cg-01:/root # zpool import -d /dev/sdb -f -F -D
no pools available to import
pve-cg-01:/root # zpool import -d /dev/sdc -f -F -D
no pools available to import

this is totally weird. I'll check lifecycle controller tomorrow
 
  • Like
Reactions: UdoB