# Building a server



## jrgp (Feb 13, 2012)

Hi all,

My current colocated server is an old 1U, running dual P3's at 700 MHz each with 1 GB of RAM, 8.2-RELEASE-p3.

I'm planning to swap it out with a machine I just built, which has a quad-core Athlon 3 GHz processor and 8 GB of triple channel RAM.

Should I opt for FreeBSD 8.2-RELEASE or try out FreeBSD-9.0-RELEASE? I'm not sure about the status/stability of FreeBSD 9. FreeBSD 8 has been absolutely perfect for the year or so I've had my current box colocated and I'm hoping FreeBSD 9 is as reliable.

Additionally, I'm interested in RAID 5-like functionality (hopefully as easy as mdadm) for /usr/home, spread across three 1 TB drives. Should I use Vinum or ZFS/Raid-Z? If I use ZFS, what tuning should I use?

Final generic FreeBSD question: does it support Linux-like UUID partition naming functionality? As in, each filesystem has its own UUID and it can be used instead of the /dev path in fstab so if the /dev device number changes, it is still mounted. Essentially, the following CLI snippet describes how it's used in my Linux desktop:


```
root@adore:~# uname -sr
Linux 3.2.0-1-amd64
root@adore:~# blkid | grep jfs
/dev/sdb4: UUID="3cb626f2-a3f0-472d-b02b-de5fcf3e6ce8" TYPE="jfs" 
root@adore:~# grep  UUID /etc/fstab | grep jfs 
UUID=3cb626f2-a3f0-472d-b02b-de5fcf3e6ce8 / jfs rw,noatime,errors=remount-ro 0       1
root@adore:~#
```


----------



## gkontos (Feb 13, 2012)

jrgp said:
			
		

> Should I opt for FreeBSD 8.2-RELEASE or try out FreeBSD-9.0-RELEASE? I'm not sure about the status/stability of FreeBSD 9. FreeBSD 8 has been absolutely perfect for the year or so I've had my current box colocated and I'm hoping FreeBSD 9 is as reliable.



It depends on what you are planing to use on the server. For example if you want to use ZFS I would highly recommend to avoid 8.2-RELEASE and either wait for 8.3 or install 9.0



			
				jrgp said:
			
		

> Additionally, I'm interested in RAID 5-like functionality (hopefully as easy as mdadm) for /usr/home, spread across three 1 TB drives. Should I use Vinum or ZFS/Raid-Z? If I use ZFS, what tuning should I use?



You are comparing different technology here! 

Go for a ZFS Raidz1, the advantages are enormous. It is not just another software raid functionality. Read the documentation also. 

As far a tuning is concerned the only thing that I recommend is to just disable prefetch. If you see that your system is getting very memory hungry you can also limit your arc to 3/4 or 1/2 of your memory.  



			
				jrgp said:
			
		

> Final generic FreeBSD question: does it support Linux-like UUID partition naming functionality? As in, each filesystem has its own UUID and it can be used instead of the /dev path in fstab so if the /dev device number changes, it is still mounted. Essentially, the following CLI snippet describes how it's used in my Linux desktop:



FreeBSD can use labels, see gpart(8)() which IMHO is a much better way for referencing partitions instead of the Linux UUID. Labels are human readable but if you want you can use GPTID which is similar to the UUID.


----------



## jrgp (Feb 13, 2012)

gkontos said:
			
		

> You are comparing different technology here!
> 
> Go for a ZFS Raidz1, the advantages are enormous. It is not just another software raid functionality. Read the documentation also.



Thanks a lot for your advice and clarification; much appreciated, sir.

As for the ZFS RID functionality, is Raidz1 the equivalent of usual RAID5, or at least the closest thing that's comparable? Would it be best to just dish out cash for a hardware RAID card and stick with UFS (FFS2?) for /usr/home instead of using the ZFS soft RAID? I'm sorry if I seem thick; I'm coming from a Linux background and trying to wrap my head around FreeBSD equivalents.


----------



## kpa (Feb 13, 2012)

Use a (small) separate disk or a mirror of two disks in gmirror(8) setup for the base operating system and use UFS filesystem for that. You can then use the ZFS pool for /home and for whatever data you will be storing there.


----------



## gkontos (Feb 13, 2012)

jrgp said:
			
		

> Thanks a lot for your advice and clarification; much appreciated, sir.
> 
> As for the ZFS raid functionality, is Raidz1 the equivalent of usual RAID5, or at least the closest thing that's comparable? Would it be best to just dish out cash for a hardware RAID card and stick with UFS (FFS2?) for /usr/home instead of using the ZFS soft RAID? I'm sorry if I seem thick; I'm coming from a Linux background and trying to wrap my head around FreeBSD equivalents.



Correct, raidz1 is the equivalent to RAID5. IMO it is much better to invest the money of the rRAIDaid card in memory and use ZFS instead.

If you choose to install FreeBSD 9.0-RELEASE you could use UFS2+J (journalized UFS2) for the OS and ZFS for your data like /usr/home. 

If you wish to mirror the OS data then again you can create a ZFS on root installation. 

I would avoid the use of gmirror(8)() until it becomes officially supported in GPT partition schemes.


----------



## wblock@ (Feb 13, 2012)

gkontos said:
			
		

> ...
> I would avoid the use of gmirror(8)() until it becomes officially supported in GPT partition schemes.



gmirror(8) is supported in GPT.  That is, GPT partitions can be mirrored.

It's the other way around, trying to put GPT inside a gmirror, that doesn't work.  And that's not a bug, or rather it's kind of a bug in the specifications[1].  GPT puts partition tables at the beginning and end of a *drive*.  That's the physical device, not a logical one.  gmirror(8) puts its one tiny pathetic block of metadata at the end of the logical device.  If that device is a whole drive... well, that block is already used by the GPT backup partition table, so one or the other will not be happy.

So the way to do GPT and gmirror(8) is to create identical GPT partitions on the two drives.  Just one partition filling the whole drive is fine, but make sure the partition size is identical on the two drives.  If you use labels (and you should), use different labels on the two partitions.  Then create the mirror with those partitions.  The gmirror metadata goes on the last block of the partition.  The mirror is the size of the partition less that one block.

In crude ASCII form:

```
GPT primary table
partition
...
end of partition
gmirror metadata (one block)
GPT backup table
```

[1] Maybe not even a bug, because a GPT loader can't understand all the possible logical disk layouts.  The only absolute locations that are known are the beginning and end of the disk.


----------



## gkontos (Feb 13, 2012)

@wblock,

My only objection comes with the fact that there is no official documentation regarding setting up gmirror(8)() in FreeBSD 9.0-RELEASE using a GPT scheme.

I am aware of the various ways that can be used in order to set it up properly but still I wouldn't recommend it for a production server. Especially if someone would install the upcoming FreeBSD 8.3-RELEASE using sysinstall.

Regards,
George


----------

