================================================================================ zfs set compression on pool/audit #LZJB zfs set compression gzip pool/audit #gzip ================================================================================ svcs disable volfs vi /etc/vold.conf #comment out: use rmdisk drive /dev/rdsk/c*s2 dev_rmdisk.so rmdisk%d svcs enable volfs format -e /dev/rdsk/c2t0d0s2 newfs /dev/rdsk/c2t0d0s2 ================================================================================ Stick to ZFS, or The laptop with a mirrored drive My everyday laptop is a Dell Latitude D600. It's old but it has served me well. It started its life with Windows 2000 on its hard disk. I switched back and forth between Solaris 10 and Windows 2000 (Windows XP was just too frustrating for me and at some point I've triple booted Mandriva, Suse or Ubuntu), until I decided to go Solaris Express (aka Nevada, aka what will become 11) which is the base anyway for OpenSolaris. Since Nevada B53, I've never looked back. I removed all other partitions and dedicated it to Solaris. Now, most laptop can only take one drive. This is the case with the Latitude. Stick to ZFS Assuming you have a slice available on your laptop hard disk and you have a memory stick, a lot of fun can be had with ZFS. This came about as I was pondering about making my laptop a little more safe for travelling. If I lost a hard drive, I could buy a new one and then just reinstall Solaris. The latest Solaris (B56) even has a Sun Studio and Netbeans when you select Solaris Express Developer at install time. Email, source and other stuff are remotely stored on a server etc. The only issue is all my documents that I'm saving in the local user/Documents folder (I am not always online). Yes, I do a backup to an external USB device, but I would like for this to be transparent. I tought, ZFS could do this, along with a USB stick. There are some sticks that are so small, you can leave them in the USB port when putting the laptop in its bag. The laptop with a mirrored drive. So here is the recipe. I insert my memory stick and check its logical node: bash-3.00# rmformat Looking for devices... 1. Logical Node: /dev/rdsk/c4t0d0p0 Physical Node: /pci@0,0/pci8086,4541@1d,1/storage@1/disk@0,0 Connected Device: KINGSTON USB DRIVE 1.12 Device Type: Removable Bus: USB Size: 246.0 MB Label: Access permissions: Above is my test memory stick. My internal disk is c0d0: bash-3.00# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c0d0 /pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0 ^C I already know that slice 7 is unassigned but allocated and free. If I didn't know, I'd select the drive in format, then enter the partition mode and print the partition table. If the boot disk partition needs to be edited, you'll need to do that by booting Solaris from CD/DVD. So, let us create a mirror: bash-3.00# zpool create -f stick mirror c0d0s7 c4t0d0p0 bash-3.00# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT stick 240M 89K 240M 0% ONLINE - usb 298G 182G 116G 60% ONLINE - bash-3.00# zfs create stick/Documents bash-3.00# zfs set compression=on stick/Documents bash-3.00# zfs set mountpoint=/export/home/fdion/Documents stick/Documents bash-3.00# cp /export/home/fdion/mp3/PeteNamlook\ and\ MixMaster\ Morris/*.mp3 . While the copy was going on (Pete Namlook and Mixmaster Morris' Dreamfish album), I pulled the usb stick. Copy completed without problem: bash-3.00# zfs list NAME USED AVAIL REFER MOUNTPOINT stick 97.9M 110M 24.5K /stick stick/Documents 97.7M 110M 97.7M /export/home/fdion/Documents bash-3.00# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT stick 240M 97.9M 142M 40% DEGRADED - usb 298G 182G 116G 60% ONLINE - The mirror is degraded tough. Let's check the full status: bash-3.00# zpool status pool: stick state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-D3 scrub: none requested config: NAME STATE READ WRITE CKSUM stick DEGRADED 0 0 0 mirror DEGRADED 0 0 0 c0d0s7 ONLINE 0 0 0 c4t0d0p0 UNAVAIL 0 306 0 cannot open errors: No known data errors Let's bring it online: bash-3.00# zpool online stick c4t0d0p0 Bringing device c4t0d0p0 online This took a little bit of time as the mirror finished fixing itself. Am I done? Let's check the status: bash-3.00# zpool status pool: stick state: ONLINE status: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected. action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or replace the device with 'zpool replace'. see: http://www.sun.com/msg/ZFS-8000-9P scrub: resilver completed with 0 errors on Fri Feb 9 14:22:09 2007 config: NAME STATE READ WRITE CKSUM stick ONLINE 0 0 0 mirror ONLINE 0 0 0 c0d0s7 ONLINE 0 0 0 c4t0d0p0 ONLINE 0 306 0 errors: No known data errors bash-3.00# zpool clear stick c4t0d0p0 bash-3.00# zpool status pool: stick state: ONLINE scrub: resilver completed with 0 errors on Fri Feb 9 14:22:09 2007 config: NAME STATE READ WRITE CKSUM stick ONLINE 0 0 0 mirror ONLINE 0 0 0 c0d0s7 ONLINE 0 0 0 c4t0d0p0 ONLINE 0 0 0 errors: No known data errors Alright, everything is ok now. Just a recap of what I've done up to now: bash-3.00# zpool history stick History for 'stick': 2007-02-09.14:08:34 zpool create -f stick mirror c0d0s7 c4t0d0p0 2007-02-09.14:10:54 zfs create stick/Documents 2007-02-09.14:11:06 zfs set compression=on stick/Documents 2007-02-09.14:11:59 zfs set mountpoint=/export/home/fdion/Documents stick/Documents 2007-02-09.14:20:14 zpool online stick c4t0d0p0 2007-02-09.14:25:26 zpool clear stick c4t0d0p0 Pretty slick. Let's export and load this in another computer. bash-3.00# zpool export stick bash-3.00# On another machine, I go and plug the memory stick in and: bash-3.00# zpool import stick cannot mount '/export/home/fdion/Documents': directory is not empty Ah, yes, that's an issue, but we are just testing. I probably should have mounted a different user. bash-3.00# zfs set mountpoint=/export/home/fdlaptop/Documents stick/Documents bash-3.00# zpool export stick bash-3.00# zpool import stick Data is there, everything is fine. But, how does it look from ZFS standpoint? bash-3.00# zpool status pool: stick state: DEGRADED status: One or more devices could not be opened. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Attach the missing device and online it using 'zpool online'. see: http://www.sun.com/msg/ZFS-8000-D3 scrub: resilver completed with 0 errors on Fri Feb 9 14:38:56 2007 config: NAME STATE READ WRITE CKSUM stick DEGRADED 0 0 0 mirror DEGRADED 0 0 0 c0d0s7 UNAVAIL 0 0 0 cannot open c4t0d0p0 ONLINE 0 0 0 errors: No known data errors This is as expected. Let's export again: bash-3.00# zpool export stick I put the stick back in the laptop, then bash-3.00# zpool import stick bash-3.00# zpool status pool: stick state: ONLINE scrub: resilver completed with 0 errors on Fri Feb 9 14:41:42 2007 config: NAME STATE READ WRITE CKSUM stick ONLINE 0 0 0 mirror ONLINE 0 0 0 c0d0s7 ONLINE 0 0 0 c4t0d0p0 ONLINE 0 0 0 errors: No known data errors Impressive, no? bash-3.00# zfs list NAME USED AVAIL REFER MOUNTPOINT stick 97.9M 110M 24.5K /stick stick/Documents 97.7M 110M 97.7M /export/home/fdlaptop/Documents BTW, I did have compression enabled, but since I copied MP3 files, I expect no compression whatsoever: bash-3.00# zfs get compressratio stick/Documents NAME PROPERTY VALUE SOURCE stick/Documents compressratio 1.00x - Sure enough. I then copied 20M of office documents and pdfs and removed the mp3 files: bash-3.00# zfs get compressratio stick/Documents NAME PROPERTY VALUE SOURCE stick/Documents compressratio 3.53x - At 3.5x and small USB sticks available in 8GB, that's potentially 28GB mirrored! Currently, the 8 GB are a bit too high, but 4GB is <$80 (I've seen as low as $40). In the newer Solaris builds, a mirror can be reverted back to a non mirrored zone: bash-3.00# zpool detach stick c4t0d0p0 I pulled the stick out. bash-3.00# zpool status pool: stick state: ONLINE scrub: resilver completed with 0 errors on Fri Feb 9 14:41:42 2007 config: NAME STATE READ WRITE CKSUM stick ONLINE 0 0 0 c0d0s7 ONLINE 0 0 0 errors: No known data errors I now am back to a non mirrored mode. To recreate: bash-3.00# zpool attach stick c0d0s7 c4t0d0p0 The only issue is if the two devices are not exactly the same size (or the memory stick is smaller than the hard disk slice), you will get: cannot attach c4t0d0p0 to c0d0s7: device is too small Just something to keep in mind. ================================================================================