> From: zfs-discuss-bounces at opensolaris.org [mailto:zfs-discuss-
> bounces at opensolaris.org] On Behalf Of Jim Klimov
>
> A while back I''ve seen proposals on Linux kernel mailing lists to
create
> RAID firmwares based on mdadm, and apparently some hardware
> vendors took to that. An added benefit for users was that RAID disks
> could be migrated between software and hardware RAID running same
> code, allowing for easier repairs, migrations and up/down-grades.
>
> Now, it is just a thought. But I wonder if it''s possible... Or
useful? :)
> Or if anyone has already done that?
Take for example, the new AES instruction set shipping in certain modern
CPU''s. What they''ve done is adapted the hardware to perform
the core tasks
of AES encryption/decryption more efficiently, that were formerly being done
in software, and hence gained significant performance improvements. Take
also, for example, the TCP Offload Engine, TOE. They moved some of the core
network processing (the TCP stack) onto the NIC processor in order to get it
away from the CPU, and gain performance in high-performance networks. I
would venture a guess there''s probably some ZFS core operations that
could
be offloaded onto an HBA processor. The question is what, and why? I
personally never see any ZFS performance bottleneck other than disk speeds
and bus speeds. (Neglecting dedup - dedup performance is still bad right
now.) Even if I have checksum=sha256, and compression enabled, I never see
anything that I would call significant processor utilization. Surely
it''s
possible in a really high end system, to eventually saturate the CPU cores
with checksum or compression operations or something...
There is one use I can imagine, which would be awesome. If you were able to
offload COW, and isolate it entirely standalone inside the HBA, then you
might be able to present the OS with basically just a zvol. So then you
could run linux, vmware, windows, or whatever... With snapshots and data
integrity and "zfs send" under the hood at the hardware level that the
OS
doesn''t need to know or care about. This is very similar to running
solaris
(or whatever) as a hypervisor, and then running windows or linux or whatever
as a guest OS. It is also very similar to running iscsi targets on ZFS,
while letting some other servers use iscsi to connect to the ZFS server.
It''s a cool way to inject a ZFS layer beneath the OS that
doesn''t support
ZFS. The purpose would not be performance gain, but functionality gain.
(Might be able to gain some performance, but I think it would be roughly
balanced with traditional hardware HBA''s.)
I can''t think of much other reason to do it...
Bear in mind, if doing something like this... Anyone other than oracle would
need to assess the possible legal risk of distributing ZFS. (Potential
netapp lawsuit.) You wouldn''t necessarily need to do something like
this
using ZFS. It is possible that btrfs or some other option might actually be
more attractive for such an embedded application. Also, finding engineers
to develop embedded linux is probably easier than finding engineers to
develop embedded ... whatever kernel you want to run ZFS on.