Skip to content
Distributed System Deployment

Storage Infrastructure

This page describes the storage infrastructure that should be deployed with VoipNow.

Roles on Storage Layer

Storage is always necessary in a distributed infrastructure. For non-database roles, this usually implies using a shared storage of some kind (using a network file system) or the cloud (for example Amazon S3). For database level roles, there are other requirements that must be met.

SQL

As already discussed, the SQL role demands exceptional I/O performance. The storage space depends on the size of the database, which is directly proportional with the number of users. The performance should also be chosen based on the number of users.

The current industry trend to implement fast I/O is to use SSD (disks or, for extreme performance, PCI based cards). Cloud offerings also include such instances (for example, all Amazon High I/O Instances are backed by SSD disks).

Because the SQL role (at least on the master node) must be highly available, you have two choices:

  • Either use a fast and redundant shared storage box
  • Or take advantage of the cloud and rent a computing instance designed for this purpose

Distributed Database

The distributed database does not have high I/O demands. Therefore, you can use regular local storage, but make sure it is reliable enough. The distributed database features Availability Groups, but if one of the nodes loses the entire database, it will have to replicate it again from a working node. This is not a walk in the park when it comes to large databases with many gigabytes, so make sure it does not happen often.

Elasticsearch

"Deprecated"

Elasticsearch is no longer available starting with VoipNow 5.7.0. This section is kept for reference for older installations only.

The Elasticsearch role creates a faster engine for storing call history and various other data, for which SQL storage was not really optimal. This role executes reports faster and enables speed improvements in the web interface.

Unstructured Storage

While by default VoipNow uses the POSIX file system, in order to assist service providers in building a cost-effective shared storage layer, VoipNow can store the storage space consuming resources (incoming faxes, recorded calls and voicemail messages) in Amazon S3. Keep in mind that information is written to Amazon S3 asynchronously. Please read the Storage Configuration guide for more information on how to set up the storage.

You don't necessarily have to use the Amazon S3 service. Instead, you can use any service or software that exposes a compatible S3 interface.

However, you still need to use a shared storage locally, but of very limited size.

Roles on Other Layers

The following roles require access to a shared storage layer:

  • PBX
  • Infrastructure Controller
  • Web Management Interface
  • Worker

Capacity

While VoipNow does not have many storage space consuming resources, some of them might consume a lot of storage space, depending on usage. These are:

  • Incoming faxes
  • Voicemail messages
  • Recorded calls

These are not the only resources in VoipNow, but others (such as sounds) do not take much storage space, no matter how VoipNow is used.

I/o Performance

Because resources are not intensively accessed, there is no need for high IOPS performance or high bandwidth. This means that it is not necessary to implement the shared storage using fast disk drives such as SAS or SSD.

Reliability

We recommend that you focus on capacity and keep in mind that the reliability of the disks is important. Storage appliances from recognized storage vendors use only enterprise-level disks.

If you decide to build your own shared storage on a regular server, keep in mind that RAID levels might not offer enough failure protection when a large number of disks is involved. The industry has solutions, such as the ZFS file system that is available on Open Source or commercial appliances.

Storage Type

Local Storage

All nodes require local storage. All database roles will write data on local storage, which must be high-performance.

Shared Storage

Some roles might require access to a network shared storage. When Amazon S3 cloud storage is used, shared storage requirements are relaxed, as the capacity and IOPS requirements are not high. Otherwise the shared storage might be expensive to deploy.

The following paths must be made available to roles that request the shared storage. They must be mapped and mounted on the shared storage.

PathTypical Size RequirementsDescription
/var/lib/voipnow/mohLow (< 10 GB)Storage path for music on hold.
/var/lib/voipnow/soundsLow (< 10 GB)Storage path for sounds.
/var/lib/voipnow/provVery Low (< 1 GB)Path where provisioning files for equipment is saved.
/var/lib/voipnow/quotaVery Low (< 1 GB)Quota management files.
/var/spool/voipnow/faxVery Low (< 1 GB)Temporary storage path for outgoing fax messages.
/var/spool/voipnow/faxqueueVery Low (< 1 GB)Storage path for fax files to be sent out, that have not been sent.
/var/spool/voipnow/recordVery Low (< 1GB)Temporary storage for recording sounds over the phone.
/var/spool/voipnow/importVery Low (< 1GB)Temporary storage for file import.
/var/spool/voipnow/cloud/cacheMedium (< 100 GB)Cache storage for cloud storage, used only if Amazon S3 is used.
/var/spool/voipnow/cloud/errorMedium (< 100 GB)Cache storage errors for cloud storage, used only if Amazon S3 is used.
/var/lib/voipnow/faxHigh when Amazon S3 is not usedStorage path for fax files.
/var/lib/voipnow/recordingsHigh when Amazon S3 is not usedStorage path for recordings.
/var/lib/voipnow/voicemailHigh when Amazon S3 is not usedStorage path for voicemail.
/var/lib/voipnow/mediaHigh when Amazon S3 is not usedStorage path for pictures, documents, etc.

Requirements Table

To resume the information above, here are the types of storage needed for each role:

RoleStorageCapacity
SQLLocal storage only. Very fast, implemented with fast disks, preferably SSD.Depends on deployment size, below 512GB even for large deployments.
Distributed DatabaseLocal storage only. No special storage performance requirements.Depends on deployment size, below 100 GB per node even for very large deployments.
PBXShared storage only.Without Amazon S3 cloud storage, capacity requirements might be high (many Terabytes) *
Web Management InterfaceShared storage only.Without Amazon S3 cloud storage, capacity requirements might be high (many Terabytes) *
Infrastructure ControllerShared storage only.Without Amazon S3 cloud storage, capacity requirements might be high (many Terabytes) *
ElasticsearchLocal storage only. Very fast, implemented with fast disks, preferably SSD. Note: No longer available starting with VoipNow 5.7.0.Depends on deployment size, below 512GB even for very large deployments.
WorkerShared storage only.Without Amazon S3 cloud storage, capacity requirements might be high (many Terabytes) *

""

* Depends on the quota limits assigned by the service provider for their users.

Last updated: Dec 4, 2025