Archive for February, 2013
While this was primarily written for FreeNAS, it should still be applicable to any ZFS environment.
Note: You must be running FreeNAS 8.3.0 or later (specifically ZFS version 19 or later) for safe ZIL addition/removal, or you will lose the contents of your pool. See here for more information.
First, identify the drives in your zpool
In my case, zpool name is tank, so
zpool status tank
pool: tank state: ONLINE scan: scrub repaired 0 in 2h26m with 0 errors on Sun Feb 24 18:20:41 2013 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 gptid/7d6aebb4-7d35-11e2-a509-a0b3cce4f06c ONLINE 0 0 0 gptid/7e07dbb7-7d35-11e2-a509-a0b3cce4f06c ONLINE 0 0 0 gptid/7eaf492d-7d35-11e2-a509-a0b3cce4f06c ONLINE 0 0 0 logs gptid/7f31716a-7d35-11e2-a509-a0b3cce4f06c ONLINE 0 0 0 errors: No known data errors
So now we have the gptid of the ZIL log:
Now, remove the ZIL
zpool remove tank gptid/7f31716a-7d35-11e2-a509-a0b3cce4f06c
The log has been removed. Verify with
zpool status tank
Adding the ZIL back:
You can add the ZIL back using:
zpool add log <disk_ID>
So, if you wanted to add the previous disk back:
zpool add tank log gptid/7f31716a-7d35-11e2-a509-a0b3cce4f06c
But if you wanted to add a different disk as a log, you need the gptid
gptids are listed under /dev/gptid
ls -l /dev/gptid/
crw-r—– 1 root operator 0, 96 Feb 28 07:20 7d6aebb4-7d35-11e2-a509-a0b3cce4f06c
crw-r—– 1 root operator 0, 107 Feb 28 07:20 7e07dbb7-7d35-11e2-a509-a0b3cce4f06c
crw-r—– 1 root operator 0, 109 Feb 28 07:20 7eaf492d-7d35-11e2-a509-a0b3cce4f06c
crw-r—– 1 root operator 0, 110 Feb 28 07:20 7f31716a-7d35-11e2-a509-a0b3cce4f06c
Compare those gptid’s to what’s already in your pool to determine the correct disk to add.
Questions or comments about the above? Please leave them in the comments section below. Thank you!
If FreeNAS 8 encounters an error (which is usually related to out-of-memory conditions) it will enter debugging mode, which is indicated by the following debugger prompt:
To disable this, and enable automatic reboot on panic, add the following tunable in System > Tunables > Add Tunable:
Make sure enabled is checked and hit Ok.
Questions and comments are welcome in the comments section below. Thank you!
FreeNAS 8 does not, by default, allow anyone to use the su command. One practice is to allow members of the wheel group access to su any command. This can be accomplished easily by editing the /usr/local/etc/sudoers file and adding the following line:
%wheel ALL=(ALL) ALL
However, this will be lost on reboot. You can write an sh script to update this file with the following two lines:
echo >> /usr/local/etc/sudoers echo "%wheel ALL=(ALL) ALL" >> /usr/local/etc/sudoers
You can run this sh script from the web shell and it will update the sudoers file.
It can be cumbersome (and problematic) to lose this on every reboot. So here’s how you can edit the base sudoers file so it’s ready when the system reboots:
First, remount the root filesystem read-write:
mount -wu /
Note that if you’re running FreeNAS from a USB stick, filesystem commits can take several moments to commit while the system is mounted read-write. That’s normal, though annoying.
Next, edit the /conf/base/etc/local/sudoers file (you can use the two statements above) to add:
%wheel ALL=(ALL) ALL
lastly, remount the root filesystem read-only again:
mount -ru /
That’s it. However, if you upgrade FreeNAS in the future, this change will be lost. Re-edit the file again.
If you have questions or suggestion, please feel free to leave them in the comments below. Thank you!
If you want to mount a FAT32-formatted (or presumably FAT as well) USB drive in your FreeNAS server, here’s how you do it in FreeNAS 8.
First, view your console either using the servers display, or the web interface (Settings > Advanced > Show Console Message in the footer).
Plugging in your device should display messages similar to the following:
Feb 27 20:56:34 freenas kernel: ugen1.2: <JMicron> at usbus1 Feb 27 20:56:34 freenas kernel: umass1: <MSC Bulk-Only Transfer> on usbus1 Feb 27 20:56:34 freenas kernel: da1 at umass-sim1 bus 1 scbus7 target 0 lun 0 Feb 27 20:56:34 freenas kernel: da1: <Hitachi HTS547550A9E384 A50A> Fixed Direct Access SCSI-2 device Feb 27 20:56:34 freenas kernel: da1: 40.000MB/s transfers Feb 27 20:56:34 freenas kernel: da1: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
From this, we know the device is /dev/da1.
Next, either open the web console or SSH, so we can see what the partitions are and mount it
Now, we’ll see what the partition listings are
ls -l /dev/da1*
crw-r—– 1 root operator 0, 133 Feb 27 20:56 /dev/da1
crw-r—– 1 root operator 0, 134 Feb 27 20:56 /dev/da1s1
Now you know the disk is
/dev/da1, and the partition is
Now, lets mount it.
You only need sudo if you’re not already root (you may need to edit the /etc/sudoers file)
cd /mnt sudo su mkdir usb mount_msdosfs /dev/da1s1 usb1
If you receive this message:
mount_msdosfs: /dev/da1s1: Disk too big, try '-o large' mount option: Invalid argument
Then listen, and do instead:
mount_msdosfs -o large /dev/da1s1 usb1
Now, verify that it has mounted correctly:
You should see a line in the output which lists /dev/da1s1:
/dev/da1s1 on /mnt/usb1 (msdosfs, local)
And you’re all set. Don’t forget to umount when you’re done!
I recently bought an HP ProLiant MicroServer for my new home NAS. My previous NAS was a Synology DS211j, and it performed very well, up until recently. My two biggest reasons for replacing it were:
1) It would randomly drop off the network. The LAN led would flash rapidly, but there was no activity on the switch port. It was also unpingable. This means the NIC was probably failing, and the unit would need to be replaced.
2) Synology had the idea to force MyDS registration in DSM 4.2 BETA. This meant I wasn’t getting another Synology if I could help it.
Now, as my luck would have it, the first time I removed the motherboard from the chassis, I knocked a jumper cap off the board, which resulted in the unit not POSTing. A little intuition helped me find the right spot to replace it to. Here’s photos of the jumper locations in case anyone else shares my bad luck:
I installed a 4GB USB stick in the motherboard’s USB header with FreeNAS installed on it, and am using 2TB drives in slots 1-3 in RAID-Z1, and a 250GB 7200RPM drive in slot 4 for ZIL. In case you want to argue why I should be using an SSD instead of a conventional hard drive, you’re welcome to buy me one, but you might want to read this post first.
So that’s that. I’m sure you’ll be seeing more posts on FreeNAS and my NAS setup in general in the future.
Have any questions or comments about the above? Please share them in the comments section below. Thank you!
To share a Hotmail calendar using iCal, log in to your Hotmail calendar and locate the calendar that you wish to share in your list of calendars. Here, I’m going to share my ‘Work’ calendar. Start by clicking it’s name:
On the next screen, locate and click the ‘Edit Sharing’ link that appears:
On the next screen, check the ‘Send people a view-only link to your calendar’ box and then you can copy and paste the iCal link that you wish to share, based on the details you wish to provide.
There are also links to reset the private URLs if you wish to revoke access to your calendar at any point in the future.
To subscribe to an iCal published calendar in Hotmail, first log in to your Hotmail calendar and find the ‘Subscribe’ link near the top:
Clicking that takes you to the next screen, which asks for the iCal URL and a name to give your calendar:
Simply paste your iCal URL into the Calendar URL box, and give it a name. Select the color or charm to your liking, and hit ‘Subscribe to calendar’. Your calendar will appear.
If you want to subscribe to an iCal calendar using Google calendar, here’s how you do it.
First, go to your calendars so that you see ‘Other Calendars’ appear at the bottom of the screen. Click the down arrow next to it:
From the menu that appears, click ‘Add by URL’
The following dialog box will open, asking for the URL of your iCal feed.
Note that Google does not handle URLs that begin with
webcals:// at all. If you have an iCal URL that begins with one of these, change it as follows:
Paste your iCal URL inot the box and hit ‘Add Calendar’. The calendar will then appear in your calendar screen.
Sharing Google calendars between Google users is easy, but what if you want to create and share a Google calendar with someone who doesn’t use Google?
It’s actually not very difficult at all, and I’ll explain how to do it using your calendar’s private link. This will enable your viewer to see all event details, but due to the technical limitation of using iCal, they won’t be able to make any edits. This may be a good thing or a bad thing, depending on your specific situation.
So here’s how it works.
First, go to your Google calendar and locate the calendar you wish to share on the left side. In this case, I want to share my ‘work’ calendar. Hover over the calendar name and click the down arrow that appears next to it:
On the menu that appears, click ‘Calendar Settings’:
Scroll down to the bottom to where it says ‘Private Address’
In this case we want the iCal address link. You can either right-click the green iCal button and say ‘Copy Link Location’ (depending on your browser), or click it for a pop-up that gives you the link you can copy and paste, like so:
Now, if you want to ever revoke access to that calendar’s private link at a later date, just use the ‘Reset private URLs’ link which appears next to the private links.