
| Home | Company | Contacts | Products | Support | News | Index |
The new Sun filesystem ZFS represents a previously unseen breakthrough in filesystem performance and management. All HELIOS UB based products and tools have successfully passed performance and reliability testing using the new Sun ZFS filesystem. Important tasks like working with many small files and re-indexing the HELIOS Desktop database work many times faster compared to the standard UFS filesystem. In addition, ZFS offers disk/filesystem/reliability features that are missing in other standard server operating systems. Our engineers are delighted and we feel that the latest Sun options like supporting AMD-CPUs, offering OpenSolaris on multiple platforms and especially the new ZFS bring unmatched performance benefits for customers.
For the following test run, a directory tree is created, rebuilt and then removed. Click here to see performance test details.
| Task (tested with 3 million files) | ZFS [min.] | UFS [min.] | ZFS:UFS performance ratio |
| Create | 3,75 | 93,75 | 25 x faster |
| Rebuild HELIOS Desktop | 25,30 | 116,75 | 4,6 x faster |
| Remove | 16,75 | 217,30 | 13 x faster |
HELIOS file servers use the AFP 3 file service (EtherShare UB) for Mac files and SMB/CIFS (PCShare UB) for Windows files. A Mac file is comprised of a data fork and a resource fork and Windows files can contain metadata and file streams. That means that each file in the filesystem can have several forks. Since ZFS can handle many small files way faster than UFS, HELIOS file services benefit from this performance boost.
In our example we will use a complete disk "c0t3d0" and later add another disk "c0t4d0" for the ZFS pool "testpool". For this pool, a filesystem container "myprojects" will be created and a few properties set, which are inherited by the individual filesystems "project1" and "project2".
1. Create a ZFS pool via
Format: zpool create poolname *storage
zpool create testpool c0t3d0
* storage can be diskname (c0t3d0), partitionname(c0td0s5), or filepath(/data/bigfile)
2. Create two filesystems "project1" and "project2" on this pool
Format: zfs create poolname/filesystemname
First create a filesystem hierarchy, which acts as a container for the individual filesystems that will be created later, and set required properties:
# zfs create testpool/myprojects
# zfs set mountpoint=/export/myprojects testpool/myprojects
Then create your individual project filesystem(s):
# zfs create testpool/myprojects/project1
# zfs create testpool/myprojects/project2
Both filesystems "project1" and "project2" will automatically be mounted below "/export/myprojects".
Note: Where to define HELIOS volumes: at least one level below filesystem mount point!
Example: For the "/export/myprojects/project1" filesystem the HELIOS mount point could be at "/export/myprojects/project1/project1_volume" but must NOT reside on the "project1" directory itself. This is required due to the way ZFS stores its snapshot information from a ZFS file system.
2a) Additional storage can be added via
Format: zpool add poolname storage
Add a second disk "c0t4d0":
# zpool add testpool c0t4d0
3. Create a snapshot of the filesystem "project"
Format: zfs snapshot poolname/filesystemname@snapshotname
# zfs snapshot testpool/myprojects/project1@snap
4. Create a clone read-write filesystem of the snapshot
Format: zfs clone poolname/filesystemname@snapshotname poolname/filesystemname
# zfs clone testpool/myprojects/project1@snap testpool/myprojects/clone_p1
The clone of "project1" is available at: "/export/myprojects/clone_p1".
5. List all ZFS filesystems
zfs list
| NAME | USED | AVAIL | REFER | MOUNTPOINT |
| testpool/myprojects/project1 | 29,2M | 53,8G | 28,7M | /export/myprojects/project1 |
| testpool/myprojects/project2 | 329,2M | 53,8G | 328,8M | /export/myprojects/project2 |
| testpool/myprojects/project1@snap | 505K | - | 28,7M | - |
| testpool/myprojects/clone_p1 | 806K | 53,8G | 28,7M | /export/myprojects/clone_p1 |
6. Remove the clone, remove the snapshot
Format: zfs destroy poolname/filesystemname
OR zfs destroy poolname/filesystemname@snapshotname
# zfs destroy testpool/myprojects/clone_p1
# zfs destroy testpool/myprojects/project1@snap
7. Backup a ZFS filesystem snapshot into a disk file
Format: zfs send poolname/filesystemname@snapshotname > filepath
# zfs send testpool/myprojects/project1@snap > /backup/project1_snap.bkp
8. Remote HTTP based ZFS administration via:
"https://hostname:6789/zfs"
With "zpool iostat" you can list io statistics of your pools, with option "-v" also separated for the single disks.
# zpool iostat -v
| CAPACITY | OPERATION | BANDWITH | ||||
| POOL | USED | AVAIL | READ | WRITE | READ | WRITE |
| testpool | 21,6G | 46,4G | 11 | 25 | 875K | 516K |
| c0t3d0 | 21,6G | 46,4G | 11 | 25 | 875K | 516K |
With "fsstat filesystem" you can list I/O statistics per filesystem.
# fsstat /export/myprojects/project1
| NEW | NAME | NAME | ATTR | ATTR | LOOKUP | RDDIR | READ | READ | WRITE | WRITE |
| file | remov | chng | get | set | ops | ops | ops | bytes | ops | bytes |
| 19,2M | 12,3M | 43 | 123M | 14,0M | 436M | 2,63M | 28,0M | 12,1G | 16,8M | 15,6G |
| HELIOS UB products |
|
| EtherShare UB |
Highest-Performance Server for Mac Clients |
| PCShare UB |
Highest-Performance Server for Windows Clients |
| WebShare UB |
Highest-Performance Server for Real Time Remote File Access |
| ImageServer UB | Server-based Image Processing and ICC Color Transformation |
| PDF HandShake UB |
Create PDF Server - PDF Preflight - PDF Printing - PDF OPI |
| PrintPreview UB | Local and Remote Proofing on Monitor and Printer PostScript 3/PDF Compatible Preview Rendering |
| Tools |
|
| HELIOS File System Test |
Professional tool to test file server compatibility |
| HELIOS LanTest |
Professional tool to test and measure the performance of AppleShare services |
| HELIOS htar |
UNIX batch disk backup utility |
| HELIOS "dt" tools | Allow storing and working with client files on a UNIX server, while ensuring that Mac resource information, Windows file stream information, and meta data are left intact |
| HELIOS "mkisofs" |
|
| HELIOS "winfstest" |
|
| "dd" performance testing |
|
Tested configuration:
Create:
A perl script creates a directory tree with 111.000 folders, no folder contains more than 10 folders. Each bottom folder contains 30 files of 512 bytes.
Rebuild:
For this directory tree a desktop database is created with "rebuild -f".
Remove:
The directory tree is removed with "rm -r".
UFS:
UFS (UNIX File System) has been the default Solaris UNIX filesystem for many years. ZFS (Zetabyte File System) is the new Solaris filesystem.
ZFS does not have user/group quotas, instead file system quotas. As it is very simple to setup a file system per user/project/etc (with quota and other properties as required), this could be a simple mechanism to use.
HELIOS programs will display the "Used" and "Available" disk space on ZFS file systems correctly. On regular file systems, this would add up to the "Capacity" of the file system. Due to the nature of the pooled ZFS file systems, this is not true, and the "Capacity" value will be different, even for ZFS file systems in the same pool.
Copying directly from a snapshot into a HELIOS volume is not supported. First clone the snapshot, which does not require additional disk space, and after you have defined a HELIOS volume for the clone volume, you can mount it through AFP or SMB.
Tests were performed on ZFS filesystem with up to 10 million files.
Tests were performed with HELIOS SQL desktop database.
ZFS documentation
http://docs.sun.com/app/docs/doc/819-5461/6n7ht6qr2?a=view
What is ZFS?
http://www.opensolaris.org/os/community/zfs/whatis/
| Home | Company | Contacts | Products | Support | News | Index |