Nginx Cache Config with Multiple Disk Drives

Maxim Dounin mdounin at mdounin.ru
Sun Jul 21 00:21:39 UTC 2013


Hello!

On Sat, Jul 20, 2013 at 05:21:27PM +0000, Johns, Kevin wrote:

> 
> 
> On 7/20/13 2:58 AM, "Maxim Dounin" <mdounin at mdounin.ru> wrote:
> 
> >Hello!
> >
> >On Fri, Jul 19, 2013 at 04:33:56PM +0000, Johns, Kevin wrote:
> >
> >> Hi,
> >> 
> >> I am looking for guidance on how best to configure Nginx Proxy
> >> Cache in a multi-disk drive environment. Our typical server
> >> setup is such that each drive is its own partition, for example,
> >> if we have a 10 drive server we may setup drives 4-10 for
> >> storage such as:
> >> 
> >> /dev/sdd1 /nginx/cached
> >> /dev/sde1 /nginx/cachee
> >> /dev/sdf1 /nginx/cachef
> >> /dev/sdg1 /nginx/cacheg
> >> /dev/sdh1 /nginx/cacheh
> >> /dev/sdi1 /nginx/cachei
> >> /dev/sdj1 /nginx/cachej
> >> 
> >> I see that in the Nginx Proxy config, you can have multiple
> >> proxy_cache_path directives, each of which can point to the
> >> various disk drives. The proxy_cache directive is then used to
> >> determine which zone is used for a given configuration block
> >> (http, server, location). However, I am unable to determine how
> >> to spread the cache across the multiple drives as essentially a
> >> shared resource. Having to define which disk to use for each
> >> server or location block is undesirable as we don't want to
> >> leave some disks underutilized and others over utilized.
> >> 
> >> Any guidance as to how best configure Nginx for this situation
> >> would be greatly appreciated.
> >
> >There are two basic options:
> >
> >- create one filesystem over multiple disks, using software RAID
> >  or something like
> 
> Yes this is something we are looking at as well.
> >
> >- use symlinks to spread nginx's proxy cache path hierarchy over
> >  multiple filesystems, see levels= description at
> >  http://nginx.org/r/proxy_cache_path
> 
> I read over the configuration and am not sure I understand what you
> suggest. Can you elaborate?

Assuming levels=1 and two disks:

    proxy_cache_path /path/to/cache levels=1 ...

$ cd /path/to/cache
$ for i in 0 1 2 3 4 5 6 7; do mkdir /disk1/$i; ln -s /disk1/$i .; done;
$ for i in 8 9 a b c d e f; do mkdir /disk2/$i; ln -s /disk2/$i .; done;

-- 
Maxim Dounin
http://nginx.org/en/donation.html



More information about the nginx mailing list