| .. Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| ============= |
| volume.config |
| ============= |
| |
| .. configfile:: volume.config |
| |
| The :file:`volume.config` file enables you to manage your cache space more |
| efficiently and restrict disk usage by creating cache volumes of |
| different sizes. By distributing the cache across multiple volumes, |
| you can help decrease single-lock pressure when there are not many hard drives |
| present. You can further configure these volumes to store data from certain |
| origin servers and/or domains in the :file:`hosting.config` file. |
| |
| Format |
| ====== |
| |
| For each volume you want to create, enter a line with the following |
| format: :: |
| |
| volume=volume_number scheme=protocol_type size=volume_size |
| |
| where ``volume_number`` is a number between 1 and 255 (the maximum |
| number of volumes is 255) and ``protocol_type`` is ``http``. Traffic |
| Server supports ``http`` for HTTP volume types; ``volume_size`` is the |
| amount of cache space allocated to the volume. This value can be either |
| a percentage of the total cache space or an absolute value. The absolute |
| value must be a multiple of 128 MB, where 128 MB is the smallest value. |
| If you specify a percentage, then the size is rounded down to the |
| closest multiple of 128 MB. |
| |
| Each volume is striped across several disks to achieve parallel I/O. For |
| example: if there are four disks, then a 1-GB volume will have 256 MB on |
| each disk (assuming each disk has enough free space available). If you |
| do not allocate all the disk space in the cache, then the extra disk |
| space is not used. You can use the extra space later to create new |
| volumes without deleting and clearing the existing volumes. |
| |
| .. important:: |
| |
| Changing this file to add, remove or modify volumes effectively invalidates |
| the cache. |
| |
| |
| Optional ramcache setting |
| ------------------------- |
| |
| You can also add an option ``ramcache=true/false`` to the volume configuration |
| line. True is the default setting and so not needed unless you want to explicitly |
| set it. Setting ``ramcache=false`` will disable the ramcache that normally |
| sits in front of a volume. This may be desirable if you are using something like |
| ramdisks, to avoid wasting RAM and cpu time on double caching objects. |
| |
| |
| Exclusive spans and volume sizes |
| ================================ |
| |
| In the following sample configuration 2 spans `/dev/disk1` and `/dev/disk2` are defined |
| in :file:`storage.config`, where span `/dev/disk2` is assigned to `volume 3` exclusively |
| (`volume 3` is forced to an "exclusive" span `/dev/disk2`). |
| In :file:`volume.config` there are 3 volumes defined, where `volume 1` and `volume 2` |
| occupy span `/dev/disk1` taking each 50% of its space and `volume 3` takes 100% of span |
| `/dev/disk2` exclusively. |
| |
| storage.config:: |
| |
| /dev/disk1 |
| /dev/disk2 volume=3 # <- exclusive span |
| |
| volume.config:: |
| |
| volume=1 scheme=http size=50% |
| volume=2 scheme=http size=50% |
| volume=3 scheme=http size=512 # <- volume forced to a specific exclusive span |
| |
| It is important to note that when percentages are used to specify volume sizes |
| and "exclusive" spans are assigned (forced) to a particular volume (in this case `volume 3`), |
| the "exclusive" spans (in this case `/dev/disk2`) are excluded from the total cache |
| space when the "non-forced" volumes sizes are calculated (in this case `volume 1` and `volume 2`). |
| |
| |
| Examples |
| ======== |
| |
| The following example partitions the cache across 5 volumes to decreasing |
| single-lock pressure for a machine with few drives. The last volume being |
| an example of one that might be composed of purely ramdisks so that the |
| ramcache has been disabled.:: |
| |
| volume=1 scheme=http size=20% |
| volume=2 scheme=http size=20% |
| volume=3 scheme=http size=20% |
| volume=4 scheme=http size=20% |
| volume=5 scheme=http size=20% ramcache=false |