This is a very common question and below we have some some general guidelines about hardware. For more specific information, check out our Hardware & Networking section.
SwiftStack is designed to run on commodity Intel/AMD hardware. The following examples are intended as a rough guideline. For production environments, the hardware requirements are dependent on the specific use-case and workloads for which the clusters will be used.
Generally, having one CPU core per 2-3 SATA drives should work well in most use-cases. If you are planning on having dedicated proxy nodes, which depend on CPU power, you typically want more CPUs in your server. (See Proxy Servers)
For most situations, regular, off-the-shelf desktop hard disks will work well. The number of drives you need is determined by how much data you need to store and the storage size of the drives. Remember that Swift stores three copies of every file, so if you need to store 100TB of data, it will take up 300TB on disk. Because of how hard disk sizes are reported and sold, when planning a Swift cluster, a general rule-of-thumb would be to use a ratio of 4-to-1 to plan for growth and formatting and filesystem overhead. Taking the previous example, if you need to store 100TB of data (including three copies of all files), you should plan to buy 400TB worth of raw storage capacity.
If you plan on installing many drives in your servers, you might need a RAID/JBOD disk controller. However, using RAID is not recommended because Swift actively checks all data stored in the cluster, and using RAID 5 or 6 will actually degrade performance of a Swift cluster.
Using 1GB of RAM per hard drive should work well in most installations. But, as usual, the more RAM the better.
Proxy servers don’t need storage drives and will use more CPU power and usually at least 16-24GB of RAM.