Search the Community
Showing results for tags 'VM'.
-
Disk Activity/Latency when running Emby in a VM on Hyper-V
RedBaron164 posted a topic in General/Windows
I've been running Emby in a VM on Hyper-V for a couple of years now. Recently I've been trying to resolve some disk activity/latency issues that have been causing delays while loading and moving around in Emby from various clients. I think I've finally found my solution and wanted to share what I learned on the off chance it might help someone else. Long story short, move the cache/metadata/transcode-temp directory to a separate virtual hard disk (vhd). I noticed that when an Emby client would take a long time to load or start to timeout, disk activity on the server would jump noticeably. I also found that running the disk cleanup task would cause the same kind of usage. While monitoring the disk performance in task manager and resource monitor I would see that disk activity would max out, the disk queue length would be around .90 - 1.5 and average response time for the disk would hit 500ms. All this even though the disk throughput was only being reported at about 500kbps. I had two vhdx's on the VM, a Fixed size Disk for C: and another Fixed size disk for D: which is where shows are recorded. The first thing I did to try and improve the situation was reconfigure my Hyper-V's host storage as a Raid 10 array instead of Raid 5. This helped a little but not significantly and the issues were still present. I kept monitoring disk usage and noticed that the cache directory was being accessed rather frequently so I decided to move the Emby cache to a different disk. I added a third 10gb Fixed size disk and changed the cache path. This helped a little but I would still see performance issues when the Library.db was being accessed heavily. After looking into if I could move the Library.db to a different directory (and finding out it would be rather difficult) I noticed that the Metadata directory would show up frequently so I decided to move that instead. I moved the metadata location to the same drive as the cache and after refreshing the metadata in my libraries I finally noticed a significant improvement in performance. I also decided to move the transcoding-temp directory to the third drive as well just to cover all my bases. I originally did not think that moving the cache/metadata directories to a different virtual disk would make a difference since all the VHD's were on the same physical volume. But doing just that appears to have resolved my issue and now I regret not doing it sooner, I've been running performance tests since making the changes and so far I have not been able to re-produce my original performance issues with a variety of different clients including FireTV/Web/Theater. My Emby clients are much more responsive and not having to sit around and wait while browsing my music library is refreshing. And if I never see that VolleyError timeout message again I'll be very happy. I'm going to keep a close eye on my disk utilization and performance for the next few days but wanted to share what I was experiencing and what I did in case anyone else runs into the same issue. Also, on a side note, I did try enabling Quality of Service Management on the Virtual Disks but it ended up making the situation worse. I'm also not sure if this solution applies to only Hyper-V or also VMware. I'm not running VMware ESXi at home so I can't say for certain. But if you are running Emby in VMware and are having a similar issue then maybe this will help you as well.- 21 replies
-
- 1
-
- Hyper-V
- Virtual Machine
-
(and 7 more)
Tagged with:
-
Hi everyone I'm using emby for 3 years now and i'm getting a most powerful server now. I'm using proxmox and i need to set up my new emby server. LXC support is present on proxmox and i really like to use it, but i'm asking myself if it is a good idea. Have you tried emby in LXC with gpu passtrough ? Let me know
-
Hi All, What does the following indicate? 2019-08-15 17:29:22.135 Error App: Error resolving path \\dondersteendc\Media_DSdcTiered\TV Series\TV Series - Ended\Avatar The Last Airbender\Season 02 *** Error Report *** Version: 4.2.1.0 Command line: C:\Shares\Emby190814\system\EmbyServer.dll -service Operating system: Microsoft Windows NT 6.2.9200.0 64-Bit OS: True 64-Bit Process: True User Interactive: True Runtime: file:///C:/Shares/Emby190814/system/System.Private.CoreLib.dll Processor count: 8 Program data path: C:\Shares\Emby190814\programdata Application directory: C:\Shares\Emby190814\system System.IO.IOException: System.IO.IOException: An unexpected network error occurred : '\\dondersteendc\Media_DSdcTiered\TV Series\TV Series - Ended\Avatar The Last Airbender\Season 02' at System.IO.Enumeration.FileSystemEnumerator`1.GetData() at System.IO.Enumeration.FileSystemEnumerator`1.FindNextEntry() at System.IO.Enumeration.FileSystemEnumerator`1.MoveNext() at System.Linq.Enumerable.SelectEnumerableIterator`2.ToArray() at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at MediaBrowser.Controller.Providers.DirectoryService.GetFileSystemEntries(String path) at MediaBrowser.Controller.IO.FileData.GetFilteredFileSystemEntries(IDirectoryService directoryService, String path, IFileSystem fileSystem, IServerApplicationHost appHost, ILogger logger, ItemResolveArgs args, Int32 flattenFolderDepth, Boolean resolveShortcuts) at Emby.Server.Implementations.Library.LibraryManager.ResolvePath(FileSystemMetadata fileInfo, IDirectoryService directoryService, IItemResolver[] resolvers, Folder parent, LibraryOptions libraryOptions) at Emby.Server.Implementations.Library.LibraryManager.ResolveFileList(List`1 fileList, IDirectoryService directoryService, Folder parent, IItemResolver[] resolvers, LibraryOptions libraryOptions) Source: System.IO.FileSystem TargetSite: Boolean GetData() I’m working on a VM with Emby and I'm currently in the testing phase. Most of it working well except that Emby seems to get stuck scanning a certain directory. As far as I can understand it must be folder permission related. Running the latest version What do you think? More info on request and thank for any help or suggestions, Peran embyserver.txt
-
Note that there's a lot of steps to this, but individually none are particularly difficult... I'm not a linux or bsd expert by any means, in fact I'd consider myself a complete amateur. I just pieced this all together from guides I read online, none of this is really my own, I'm just compiling it all in one place. I'm a newb myself so I wrote this as newb-friendly as possible... not to insult anyone's intelligence, just to reach the largest audience possible. That said, docker for freenas has been getting a lot of attention since corral, and while I never migrated to corral, everyone seemed to rave about docker so I really wanted to give it a shot. It's now possible on freenas 11.0, thanks to native VM support. So here i'll explain step-by-step how I got an emby docker container running on ubuntu server VM in freenas. At the end you'll have emby server running in a docker container on a Ubuntu Server VM, with everything set to auto-start on reboot. Set up Docker for Ubuntu Server Note: I installed this on an Ubuntu Server 16.04 VM directly from the Freenas 11 GUI. PreReqs: freenas 11.0-U2 (may work on other 11.0 versions but it's confirmed working on this version for me) Ubuntu Server 16.04 ISO x64 vnc viewer (optional but highly recommended) - dedicated ssh app - i like secureCRT First Step - Create the Ubuntu VM Inside the freenas GUI: Go to VM tab, and create a new VM. Create VM name, and give it a good amount of resources, since this will be your container manager. Based on the specs of my server (xeon 1220v3 w/ 32GB RAM), I gave my VM 4 CPUs and 12GB of RAM. Once VM is created, before you start it, go to devices tab, add CDROM, and point it to Ubuntu Server 16.04 iso image (it's free, just grab it from wherever) Also add a disk, must have zvol to tie to. If no zvol, create a zvol with sufficient size. Mine was 80GB. I won't show how to set up a zvol here, but just search for it, it's a simple process Now you can start the VM and connect initially via vnc viewer to the port specified on the VM details. It should boot to the ubuntu cdrom and start the installation process. Install Ubuntu with basic settings. No GUI, no extra features. Just keep it bare bones to keep it lightweight as possible. It will come up with an option to use UEFI boot. Choose that option as that will allow you to auto-start the VM via the freenas GUI. UEFI Boot Fix One annoying thing is that the freenas VM system will not boot to uefi automatically. There's an extra step you need to follow to fix this. https://forums.freenas.org/index.php?threads/how-to-how-to-boot-linux-vms-using-uefi.54039/ Summarizing steps from that guide, if you have shutdown your VM already and try to reboot it (which was my case), it will not automatically start the VM. Instead it will boot to shell. To eliminate this - Just type exit at the shell prompt, and in the EFI menu system navigate to "Boot Maintenance Manager" and then select "Boot from file" to locate and select your grubx64.efi file. Once the VM is started, log in as root. sudo -i As root, cd to the /boot/efi/EFI directory of your VM in order to create the new BOOT directory and copy the existing grubx64.efi to /EFI/BOOT/bootx64.efi. mkdir /boot/efi/EFI/BOOT cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/BOOT mv /boot/efi/EFI/BOOT/grubx64.efi /boot/efi/EFI/BOOT/bootx64.efi The end result should look like this, using Ubuntu as an example: root@ubuntu-vm:/boot/efi# tree -L 3 . . └── EFI ├── BOOT │ └── bootx64.efi └── ubuntu ├── fbx64.efi ├── grub.cfg ├── grubx64.efi ├── mmx64.efi └── shimx64.efi 3 directories, 6 files root@ubuntu-vm:/boot/efi# The file bootx64.efi is a copy of the grubx64.efi in your VM. NB: If grubx64.efi gets updated you will need to re-create bootx64.efi Restart the VM from the freenas GUI, and see if it boots directly to VM. Now your ubuntu VM should be up and running, and it will auto-start on reboots. As soon as I got Ubuntu up and running, I made sure to enable ssh access. Set Up SSH Access (Optional but Reccomended) sudo apt-get install openssh-server Now you can access the VM via ssh (I like secureCRT) instead of relying on vnc viewer. Also, make sure to mount NAS folder to give NAS access to your VM - Install cifs-utils apt-get install cifs-utils Create the directory and mount the device using the following commands (I named my mount point "freenas". Name it whatever you want). sudo mkdir /mnt/freenas Now mount the device using cifs mount -t cifs //192.168.0.155/nas -o username=anonymous,password=,rw,nounix,iocharset=utf8,file_mode=0644,dir_mode=0755 /mnt/freenas Change the ip address and folders to match the path to your particular NAS setup. My nas is setup for anonymous access internally. You might want to be more secure if you have multiple users, so change those settings as you see fit. sudo df -Th /mnt/freenas/ Test the directory and make sure your VM now has access to your freenas files. Once tested, you'll wan to make permanent so it persists on reboot. edit /etc/fstab and append - //192.168.0.155/nas /mnt/freenas cifs username=anonymous,password=,rw,nounix,iocharset=utf8,file_mode=0755,dir_mode=0755 Again, change the path and options as it matches your particular setup. Test that all this is working by stopping your VM, restarting it, and making sure that your NAS is still accessible via your mount point. Now you're ready to actually install docker. Installing Dockertaken from here https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04 The Docker installation package available in the official Ubuntu 16.04 repository may not be the latest version. To get the latest and greatest version, install Docker from the official Docker repository. This section shows you how to do just that. First, add the GPG key for the official Docker repository to the system: curl -fsSLhttps://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - Add the Docker repository to APT sources: sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu/ $(lsb_release -cs) stable" Next, update the package database with the Docker packages from the newly added repo: sudo apt-get update Make sure you are about to install from the Docker repo instead of the default Ubuntu 16.04 repo: apt-cache policy docker-ce You should see output similar to the follow: Output of apt-cache policy docker-ce docker-ce: Installed: (none) Candidate: 17.03.1~ce-0~ubuntu-xenial Version table: 17.03.1~ce-0~ubuntu-xenial 500 500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages 17.03.0~ce-0~ubuntu-xenial 500 500 https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages Notice that docker-ce is not installed, but the candidate for installation is from the Docker repository for Ubuntu 16.04. The docker-ce version number might be different. Finally, install Docker: sudo apt-get install -y docker-ce Docker should now be installed, the daemon started, and the process enabled to start on boot. Check that it's running: sudo systemctl status docker The output should be similar to the following, showing that the service is active and running: ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago Docs: https://docs.docker.com Main PID: 749 (docker) Installing Docker now gives you not just the Docker service (daemon) but also the docker command line utility, or the Docker client. All we need for now. Install and Set Up Portainer (Optional but recommended)taken from here https://www.ostechnix.com/portainer-an-easiest-way-to-manage-docker/ sudo docker pull portainer/portainer Let us check whether the Portainer image has been pulled or not. sudo docker images Sample output: portainer/portainer latest ec91653336d4 7 days ago 9.132 MB As you see in the above output, Portainer image size is less than 10 MB, which is very small so that I won’t consume more RAM and Hdd space. We have now Portainer in our local Ubuntu system. Let us start the container using command (this command allows portainer to be persistent on restart): docker run -d -p 9000:9000 --restart always --name portainer -v /opt/portainer-data:/data -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer Now, Portainer is running! Let us go ahead and access the Portainer UI. To do so, open your wbe browser and point it to – http://localhost:9000/ or http://IP_Address:9000/.You will be presented with a screen like below that asks to setup a password for the admin user. Enter the password twice and hit Validate button to create the admin user password. Finally - Add Emby Docker ImageTaken from here - https://hub.docker.com/r/emby/embyserver/builds/b7pzevchadukrbdutjzkjtz/ We recommend you install directly from the Docker Hub. Before starting the install procedure please verify the following prerequisites are fulfilled: ensure the user running installation command can run dockerStart the installation by issuing the following command from within a terminal (restart always & define port will make persistent on restart): docker run -it --rm -v /usr/local/bin:/target emby/embyserver instl Set Up Embyrun the emby-server command emby-server It will ask you to add volume locations. Use the mounted freenas directory to give access to NAS (or whatever folder you set up to mount with your NAS) /mnt/freenas That's it for the cli portion of emby set-up. Just ctrl+D to exit. Now, go into portainer, check images. You should see emby server. Click the link hyperlink. Look for the expose detail. Use one of the available tcp ports. For me, it was tcp port 8096. Now just enter the url of the docker VM with the correct port number: That should go directly to the emby set up screen. You're done! But one last thing before we finish... Enable Systemd Emby (Optional - allows emby-server to auto-start with docker VM)By deafult, containers don't auto-start on reboot. If you want this to happen, which is extremely convenient, you need to give it an appropriate run command. There's several ways to do this with docker, but in Ubuntu, systemd seems to be the recommended way to go. This is probably the most complex part of this tutorial, since the contents of your custom unit will vary depending on your personal setup. Use mine as a general guide and tweak as needed. On some emby docker tutorials, there are one-line commands that get emby-server to get included in systemd, but I couldn't get any of them to work for me for some reason, so I had to set up my own systemd service to make it work. I installed an app called systemd-docker for docker auto starts. Found it in a suggestion in the emby docker thread and it worked for me. apt-get install systemd-docker Then create the unit emby-docker.service file that goes into /etc/systemd/system/ things to note on the switches used in the "ExecStart" section - -v = volume -e = environment variable A good tip is to go into Portainer, look at the emby-server container you set up earlier, and look at the details of the container to get the settings of your ENV and volume sections. Then use the switches as shown in my example to configure your unit to match your personal setup. Some other tips - For my set-up, my volume referred to my mount point of my NAS. Change that to match what yours is. I run my emby container as root user. I have no problem with this. If you want to run it as some other user, you need to change the user as needed TZ = timezone. It's important to have that match your local timezone. Look up linux timezones and find one that matches yours. The rest I think you can keep the same and it shouldn't cause you many issues, but of course depends on your set-up. This took me a while to figure out and get right, and there may very well be easier ways to do this. Here's my sample emby-docker.service file. Make sure to give the file full rw permissions so it can be executed by systemd. [Unit] Description=Emby-Server Docker After=docker.service Requires=docker.service [Service] ExecStart=/usr/bin/systemd-docker run --rm --name %n --net=host -v /home/root/.emby-server:/config -v /mnt/freenas:/mnt/freenas -e APP_UID=0 -e APP_GID=0 -e APP_USER=root -e EDGE=0 -e UMASK=002 -e TZ='America/New_York' emby/embyserver Restart=always RestartSec=10s Type=notify NotifyAccess=all TimeoutStartSec=120 TimeoutStopSec=15 [Install] WantedBy=multi-user.target Enable it to make it persistent - sudo systemctl enable emby-docker Then start it sudo systemctl start emby-docker You should see the container running in portainer in your containers list, and you should be able to access your emby server on the default 8096 port. This time however, the container will always auto-start with your VM.
-
So I have emby running in an LXC container on proxmox. It has access to all 4 cores, which are single threaded (Quad core Intel Core i5-6600K). I'm not overclocked at all. I am begining to get enough simultaneous users that sometimes it has trouble. Rarely, and only w/ 4k content so far. But, I was wondering if it would be worth spinning up another VM for emby and see if that helps? I would think not, as it's the same physical CPU *UNLESS* splitting the cores, 2 per vm, would make it more efficient. But it's always good to ask around to see what people have tried/discovered.
-
Good Afternoon All, I was cruising around the forums a few days ago such is my typical routine and under one of the threads (http://emby.media/community/index.php?/topic/21328-cant-stop-my-addiction/) there was a comment as to using Proxmox to virtualize, naturally I instantly went to the web to investigate and its been taking my thoughts ever since. I have had some interest in virtualizing my home server to give me some additional options in terms of backups, isolation (security), OS specific software, and hardware mobility (migration). My current setup uses a box with just windows server 2012. Initially I was thinking it would be alright to use Hyper-V however it lacks a few features that I was looking for like PCI and USB passthrough. My initial searches for information on proxmox have been overall pretty positive and the price is right. However it also yielded some alternatives such as XenServer, ESXI (vmware) (and many more https://en.wikipedia.org/wiki/Comparison_of_platform_virtualization_software) and I decided I might as well grab a community opinion on what people prefer to use if they do virtualize (or even reasons not to?) Thanks
-
dunno if someone's already covered this but have a slight bug where it doesn't work if i've got multiple network connections enabled, i have VM installed and it's trying to use the VM connection instead of the Local LAN. disable the VM connection and it works :-) i.e. Server = 192.168.1.2 (all clients are on this LAN) VMNat = 192.168.200.121 (only server can see this scope) in the logs it's showing as sending the DLNA from http://192.168.200.121:port/etc but if i disabled VMNat it uses correct address?
-
Like a lot of others on here, I have some questions regarding setting Live TV. I currently have Windows Home Server 2011 running on a SUPERMICRO 1U 2x L5420 Xeon QC 2.5GHz with 8GB RAM and a 500GB HDD. I run MB3 Server and MCM on it server, and that's basically it. I also have a Synology NAS with 12 TB of storage in it. This is where all my media goes. Then I have 4 Zotac Z-Boxes connected to TVs that we watch all of our TV shows and Movies on via MB Classic. I want to set up Live TV but would like some advice about the best way to do it. Should I get another box, like a Zbox for example, to install Win 7, WMC, and ServerWMC on? Or should I create a Virtual Machine to run under WHS 2011? Before I discovered Media Browser a couple of years ago, I was using Beyond TV. I do actually have two older XP machines that have been decommissioned and are sitting in the basement that have Hauppage tuners in them. I don't know if those cards would be of any use at all. I forget which models they are, but I don't think either of them would fit in the server if I tried to go that way. So I guess I will need to go with either a USB tuner or a network tuner. I haven't done much research into which tuner to buy, so advice on that would be helpful as well. Thanks so much!
-
I have a Windows Home Server (it is v1 so is 2003) which contains all my media (it's an acer easyStore). The minimum requirements for MB Server are Windows Server 2008. I decided to install a VM on the Home Server with Windows 2008. I only have a max of 2GB of Memory to play with so I am running MS Server with 3/4 GB. I might up it to 1GB (not sure if I can hurt the file serving?). It is functional and has allowed me to try out Media Browser 3. In the beginning I found that images would be very slow to load within Theatre and I am still seeing the odd blank page when I navigate into a movie and also gaps in the DVD covers as I navigate through my list movies. Sometimes you can wait 30 seconds and it will populate sometimes it seems stuck. Sometimes things seem very snappy, sometimes not. My machines are all hard wired. I suppose what I am getting at is, do any of you guys do anything like this in your set up and have any general advice? WHS is serving files and backing up PCs, that is all. I feel that my meagre resources should be able to stretch to running MB Server. At the moment it is merely okay however the family may not understand that you have to wait sometimes. Having one server box on all the time is enough so is there anything I can do to squeeze these 2 servers to the max? Is there anything in Windows Server 2008 which can be uninstalled which will aid performance without breaking Media Browser Server? Is this set up futile? Is Media Browser Theatre caching images and metatdata on the local machine or is it always looking it up on the fly? I do have the option of upgrading WHS to 2011 but I'm not certain I want the pain nor I am sure I want to lose the raid. Sorry for the ramble.