So I recently invested in a new storage server and set it up as a NFS server so I could set up HA to prevent downtime with my VM’s when I had maintenance to do on my Proxmox Hosts. The problem is that if I use iSCSI it sends the drive as a block device that a single VM can use and the problem with NFS for me is that it was extremely slow (need to do more research on this) but when the server was setup with samba, I was able to get 113MB/s both ways to the box from my desktop (8x 300GB SATA drives in raid 10). So why not just use samba with proxmox?
First off, if you decide to use samba with Proxmox you need to know you will be unable to run openvz containers from this storage. This is because samba does not understand the Linux file and group permission system. This type of storage can be used for all other features though.
So to get started, we need to have a samba share somewhere. Lets pretend ours has the following information:
- Server: //10.0.0.10/SambaShare
- Username: share
- Password: share$4
The first thing we do is we create the folder this will be mounted to. If there is no folder to mount to when the system starts up, it will fail to mount and you will be in a world of hurt.
Now you need to setup the mount in fstab so it will auto mount every boot, so open up /etc/fstab and add the following:
//10.0.0.10/SambaShare /mnt/SambaShare cifs username=share,password=share$4 0 0
This will make it so every start, the samba share will mount to the folder you created. Now because I need this share across a few servers, I just do the same thing to every server. This way the mount is in the same location per system.
To have the samba system mount to the server without restarting it, just run sudo mount and it will mount the share.
Now you just need to login to Proxmox, and add the storage to the nodes so it can be used for VM’s. go to Datacenter > Storage > add and fill in the information, then just press add.
After that verify the mount works, and then you are good to go!
Make sure that your Samba server DOES NOT GO OFFLINE while VM’s are running on it. If this happens, your VM’s will freeze, and the IO Wait on your server will skyrocket until the system locks up. So make sure your samba share is 100% configured, and ready to go BEFORE you deploy it. I personally am working on a boot time script that will pause the boot process if the share does not mount, and it will stay paused until it successfully mounts. This way I can prevent the system from writing to non-shared storage, and VM’s thinking there vhd images vanished off the face of the earth.