{"id":264,"date":"2025-10-10T09:27:58","date_gmt":"2025-10-10T09:27:58","guid":{"rendered":"https:\/\/raidzfscalculator.com\/?page_id=264"},"modified":"2025-11-30T19:11:56","modified_gmt":"2025-11-30T19:11:56","slug":"storage-sizing-calculator","status":"publish","type":"page","link":"https:\/\/raidzfscalculator.com\/en\/storage-sizing-calculator\/","title":{"rendered":"Storage sizing calculator"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_blurb url=&#8221;https:\/\/raidzfscalculator.com\/&#8221; image=&#8221;https:\/\/www.raidzfscalculator.com\/en\/wp-content\/uploads\/2025\/11\/icons8-la-france-48.png&#8221; alt=&#8221;RAID ZFS CALCULATOR FIO  RESULT VIEWER&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<p style=\"text-align: center;\"><strong>Site en Fran\u00e7ais<\/strong><\/p>[\/et_pb_blurb][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_blurb url=&#8221;https:\/\/www.raidzfscalculator.com\/en\/&#8221; image=&#8221;https:\/\/www.raidzfscalculator.com\/en\/wp-content\/uploads\/2025\/11\/icons8-grande-bretagne-48.png&#8221; alt=&#8221;RAID ZFS CALCULATOR FIO RESULT VIEWER&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<p style=\"text-align: center;\"><strong>Website in english<\/strong><\/p>[\/et_pb_blurb][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; parallax__hover=&#8221;off&#8221; parallax_method__hover=&#8221;on&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_divider color=&#8221;#1ca5ff&#8221; divider_weight=&#8221;16px&#8221; _builder_version=&#8221;4.16&#8243; max_width=&#8221;48px&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_text _builder_version=&#8221;4.16&#8243; text_font=&#8221;||||||||&#8221; text_line_height=&#8221;2em&#8221; header_font=&#8221;Poppins|600|||||||&#8221; header_font_size=&#8221;50px&#8221; header_line_height=&#8221;1.3em&#8221; header_font_size_tablet=&#8221;30px&#8221; header_font_size_phone=&#8221;24px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<h1>Storage sizing calculator<\/h1>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<h2>Plan Your Perfect Storage<\/h2>\n<p>&nbsp;<\/p>\n<p>Welcome to the <strong>Storage Sizing Calculator<\/strong>, the essential tool for every system administrator or DevOps engineer.<\/p>\n<p>Stop guessing! Don&#8217;t base your hardware purchases on luck. Our calculator lets you transform your specific business needs (annual growth, lifespan) into a Net Capacity requirement and instantly provides you with the exact hardware recommendations.<\/p>\n<p>&nbsp;<\/p>\n<h3>How does the storage sizing calculator work?<\/h3>\n<p>&nbsp;<\/p>\n<p>Capacity planning is more than just a sum of sums. It requires taking into account:<\/p>\n<ol start=\"1\">\n<li><strong>Future Growth:<\/strong> How much data will you generate over the next 3, 5, or 7 years?<\/li>\n<li><strong>RAID Tolerance:<\/strong> The RAID level (such as RAID 6 or RAIDZ2) that you choose imposes a capacity penalty (Parity).<\/li>\n<li><strong>Safety Margin:<\/strong> The free space required for the proper functioning of file systems (such as ZFS) and future upgrades.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h3>Key Recommendations<\/h3>\n<p>&nbsp;<\/p>\n<p>After you enter your objectives, this tool analyzes the efficiency of each popular RAID level and recommends the most cost-effective configuration, showing you:<\/p>\n<ul>\n<li>The minimum number of disks required.<\/li>\n<li>The usable capacity you will obtain.<\/li>\n<li>The efficiency of the chosen solution (percentage of wasted capacity in parity).<\/li>\n<\/ul>\n<p>Whether you are planning a storage array for virtual machines, a cold data archive or an IOPS-intensive production environment, our tool ensures accurate sizing, saving you time and avoiding costly overpurchasing of unnecessary terabytes (TB).<\/p>\n<p>Plan the future of your storage infrastructure with precision!<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]        <style>\n        .raid-calc { max-width: 1200px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }\n        .calc-container { background: #fff; border-radius: 12px; box-shadow: 0 4px 20px rgba(0,0,0,.1); padding: 30px; margin: 20px 0; }\n        .calc-title { font-size: 2.5rem; font-weight: 700; color: #1a202c; margin-bottom: 20px; text-align: center; }\n        .warning { background: linear-gradient(135deg, #fff7ed 0%, #fed7aa 100%); border-left: 5px solid #f97316; border-radius: 8px; padding: 20px; margin-bottom: 30px; display: flex; align-items: flex-start; gap: 15px; }\n        .warning-text { font-size: 14px; line-height: 1.6; color: #9a3412; }\n        .section { margin-bottom: 40px; }\n        .section h3 { font-size: 1.5rem; font-weight: 600; color: #1e293b; margin-bottom: 20px; border-bottom: 2px solid #e2e8f0; padding-bottom: 10px; }\n        .config-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 25px; margin-bottom: 30px; }\n        .input-group { display: flex; flex-direction: column; gap: 8px; }\n        .input-group label { font-weight: 600; color: #374151; font-size: 14px; }\n        .input-group input, .input-group select { padding: 12px 16px; border: 2px solid #d1d5db; border-radius: 8px; font-size: 15px; transition: all .3s ease; }\n        .input-group input:focus, .input-group select:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 3px rgba(59,130,246,.1); }\n        .raid-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 30px; }\n        .raid-btn { padding: 12px 20px; border: 2px solid #d1d5db; border-radius: 8px; background: #fff; color: #374151; font-weight: 600; cursor: pointer; transition: all .3s ease; font-size: 14px; }\n        .raid-btn:hover { border-color: #3b82f6; background: #eff6ff; transform: translateY(-1px); }\n        .raid-btn.active { background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); border-color: #1d4ed8; color: #fff; box-shadow: 0 4px 12px rgba(59,130,246,.4); }\n        .raid-btn.zfs { border-color: #16a34a; background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%); color: #166534; }\n        .raid-btn.zfs.active { background: linear-gradient(135deg, #16a34a 0%, #15803d 100%); border-color: #15803d; color: #fff; }\n        .results { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-radius: 12px; padding: 30px; border: 2px solid #e2e8f0; min-height: 200px; }\n        .results-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 20px; margin-bottom: 20px; }\n        .result-item { text-align: center; background: #fff; padding: 20px; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,.1); }\n        .result-value { font-size: 1.8rem; font-weight: 700; margin-bottom: 8px; }\n        .result-label { font-size: 13px; color: #64748b; font-weight: 500; }\n        .highlight { color: #10b981; }\n        .action-btn { background: linear-gradient(135deg, #10b981 0%, #059669 100%); color: #fff; border: none; padding: 12px 24px; border-radius: 8px; font-weight: 600; cursor: pointer; transition: all .3s ease; font-size: 15px; margin-top: 8px; }\n        .action-btn:hover { background: linear-gradient(135deg, #059669 0%, #047857 100%); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(16,185,129,.4); }\n        @media (max-width:768px){.config-grid{grid-template-columns:1fr}.results-grid{grid-template-columns:1fr}}\n        <\/style>\n\n        <div class=\"raid-calc\">\n            <div class=\"calc-container\">\n                <h1 class=\"calc-title\">Calculateur de Sizing de Stockage<\/h1>\n                \n                <div class=\"warning\">\n                    <div style=\"font-size:24px;flex-shrink:0\"><\/div>\n                    <div class=\"warning-text\">\n                        Determine the RAID configuration and the number of disks required to meet your future capacity goals.\n                    <\/div>\n                <\/div>\n\n                <div class=\"section\">\n                    <h3>Capacity Requirements<\/h3>\n                    <div class=\"config-grid\">\n                        <div class=\"input-group\">\n                            <label>Capacity net Required (TB)<\/label>\n                            <input type=\"number\" id=\"requiredCapacity\" placeholder=\"Ex: 50\" value=\"50\" min=\"1\">\n                            <small>Required usable final capacity (after RAID).<\/small>\n                        <\/div>\n                        <div class=\"input-group\">\n                            <label>Individual disk size (TB)<\/label>\n                            <input type=\"number\" id=\"diskSize\" placeholder=\"Ex: 16\" value=\"16\" min=\"1\">\n                        <\/div>\n                        <div class=\"input-group\">\n                            <label>Annual growth (%)<\/label>\n                            <input type=\"number\" id=\"annualGrowth\" placeholder=\"Ex: 15\" value=\"15\" min=\"0\">\n                        <\/div>\n                        <div class=\"input-group\">\n                            <label>System lifespan (years)<\/label>\n                            <input type=\"number\" id=\"systemLife\" placeholder=\"Ex: 5\" value=\"5\" min=\"1\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"section\">\n                    <h3>RAID Protection Level<\/h3>\n                    <div class=\"raid-btns\" id=\"raidButtons\"><\/div>\n                    <small style=\"color:#64748b;font-size:12px\">Select the desired protection. The results will display the minimum configuration for this level.<\/small>\n                <\/div>\n\n                <div class=\"section\">\n                    <button class=\"action-btn\" onclick=\"Calculator.calculateRequired()\">\ud83d\udd0d Calculate Future Net Capacity<\/button>\n                <\/div>\n                \n                <div class=\"results\" id=\"sizingResults\">\n                    <div id=\"initialMessage\" style=\"text-align:center; padding: 20px; color:#64748b\">\n                        Enter your requirements and click \"Calculate\" to see the recommendation.\n                    <\/div>\n                    \n                    <div id=\"calculatedResults\" style=\"display:none\">\n                        <h3>Planning Results<\/h3>\n                        <div class=\"results-grid\">\n                            <div class=\"result-item\">\n                                <div class=\"result-value highlight\" id=\"netCapacityNeeded\">0 TB<\/div>\n                                <div class=\"result-label\">Required Net Capacity (future)<\/div>\n                            <\/div>\n                            <div class=\"result-item\">\n                                <div class=\"result-value\" id=\"raidEfficiency\">0%<\/div>\n                                <div class=\"result-label\">RAID Efficiency (selected)<\/div>\n                            <\/div>\n                             <div class=\"result-item\">\n                                <div class=\"result-value\" id=\"minDisksRequired\">0<\/div>\n                                <div class=\"result-label\">Disks (min. required)<\/div>\n                            <\/div>\n                            <div class=\"result-item\">\n                                <div class=\"result-value\" id=\"totalRawCapacity\">0 TB<\/div>\n                                <div class=\"result-label\">Raw capaity (required)<\/div>\n                            <\/div>\n                        <\/div>\n                        \n                        <div style=\"background:#f0f9ff; border: 2px solid #0284c7; border-radius: 8px; padding: 15px; margin-top: 20px;\">\n                            <p style=\"font-weight: 600; color: #0c4a6e; margin: 0;\">Recommandation :<\/p>\n                            <p id=\"recommendationText\" style=\"color: #374151; font-size: 1.1rem; margin: 5px 0 0 0;\"><\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n            <\/div>\n        <\/div>\n\n        <script>\n        const UI = {\n            currentRaid: 'RAID 6',\n            raids: ['RAID 5', 'RAID 6', 'RAID 10', 'RAIDZ1', 'RAIDZ2', 'RAIDZ3'],\n            \n            init: function() {\n                this.generateRaidButtons();\n                this.bindEvents();\n            },\n\n            generateRaidButtons: function() {\n                let html = '';\n                this.raids.forEach(r => {\n                    html += `<button type=\"button\" class=\"raid-btn ${r.includes('RAIDZ') ? 'zfs' : ''} ${r === this.currentRaid ? 'active' : ''}\" onclick=\"Calculator.setRaid('${r}', event)\">${r}<\/button>`;\n                });\n                document.getElementById('raidButtons').innerHTML = html;\n            },\n            \n            bindEvents: function() {\n                ['requiredCapacity', 'diskSize', 'annualGrowth', 'systemLife'].forEach(id => {\n                    const el = document.getElementById(id);\n                    if (el) {\n                        el.addEventListener('input', () => Calculator.calculateRequired());\n                    }\n                });\n            }\n        };\n\n        const Calculator = {\n            FS_OVERHEAD_STANDARD: 0.90,\n            FS_OVERHEAD_ZFS: 0.88,\n\n            setRaid: function(r, evt) {\n                UI.currentRaid = r;\n                document.querySelectorAll('.raid-btn').forEach(b => b.classList.remove('active'));\n                if (evt && evt.target) {\n                    evt.target.classList.add('active');\n                }\n                this.calculateRequired();\n            },\n\n            getRaidSpec: function(raid) {\n                switch(raid) {\n                    case 'RAID 5':   return { minDisks: 3, step: 1, parity: 1, isZfs: false };\n                    case 'RAID 6':   return { minDisks: 4, step: 2, parity: 2, isZfs: false };\n                    case 'RAID 10':  return { minDisks: 4, step: 2, parity: null, isRaid10: true, isZfs: false };\n                    case 'RAIDZ1':  return { minDisks: 3, step: 1, parity: 1, isZfs: true };\n                    case 'RAIDZ2':  return { minDisks: 4, step: 2, parity: 2, isZfs: true };\n                    case 'RAIDZ3':  return { minDisks: 5, step: 1, parity: 3, isZfs: true };\n                    default:         return { minDisks: 0, step: 1, parity: 0, isZfs: false };\n                }\n            },\n\n            calculateUsableCapacityTB: function(raid, numDisks, diskSizeTB) {\n                const spec = this.getRaidSpec(raid);\n                if (numDisks < spec.minDisks) return 0;\n\n                const fsFactor = spec.isZfs ? this.FS_OVERHEAD_ZFS : this.FS_OVERHEAD_STANDARD;\n                let usableTB = 0;\n\n                if (spec.isRaid10) {\n                    usableTB = (numDisks \/ 2) * diskSizeTB;\n                } else {\n                    usableTB = (numDisks - spec.parity) * diskSizeTB;\n                }\n\n                return usableTB * fsFactor;\n            },\n\n            calculateRequired: function() {\n                const requiredCapacityTB = parseFloat(document.getElementById('requiredCapacity').value);\n                const diskSizeTB = parseFloat(document.getElementById('diskSize').value);\n                const annualGrowth = parseFloat(document.getElementById('annualGrowth').value) || 0;\n                const systemLife = parseInt(document.getElementById('systemLife').value);\n                const currentRaid = UI.currentRaid;\n\n                if (!requiredCapacityTB || !diskSizeTB || !systemLife) {\n                    document.getElementById('initialMessage').style.display = 'block';\n                    document.getElementById('calculatedResults').style.display = 'none';\n                    return;\n                }\n\n                const futureGrowthFactor = Math.pow(1 + (annualGrowth \/ 100), systemLife);\n                const futureNetCapacityTB = requiredCapacityTB * futureGrowthFactor;\n\n                const spec = this.getRaidSpec(currentRaid);\n                let calculatedDisks = spec.minDisks;\n                let usableCapacityTB = 0;\n\n                while (true) {\n                    usableCapacityTB = this.calculateUsableCapacityTB(currentRaid, calculatedDisks, diskSizeTB);\n                    if (usableCapacityTB >= futureNetCapacityTB) {\n                        break;\n                    }\n                    calculatedDisks += spec.step;\n                    if (calculatedDisks > 200) break;\n                }\n\n                const totalRawCapacityTB = calculatedDisks * diskSizeTB;\n                const netEfficiency = (usableCapacityTB \/ totalRawCapacityTB) * 100;\n\n                document.getElementById('netCapacityNeeded').textContent = futureNetCapacityTB.toFixed(2) + ' TB';\n                document.getElementById('raidEfficiency').textContent = netEfficiency.toFixed(1) + '%';\n                document.getElementById('minDisksRequired').textContent = calculatedDisks;\n                document.getElementById('totalRawCapacity').textContent = totalRawCapacityTB.toFixed(2) + ' TB';\n\n                document.getElementById('recommendationText').innerHTML = \n                    `To guarantee <strong>${futureNetCapacityTB.toFixed(2)} TB<\/strong> of actual usable capacity on ${systemLife} year ` +\n                    `avec une protection <strong>${currentRaid}<\/strong> and discs of <strong>${diskSizeTB} TB<\/strong>, vous avez besoin de : ` +\n                    `<br><strong>${calculatedDisks} disks<\/strong> in total (Raw Capacity : ${totalRawCapacityTB.toFixed(2)} TB, Net usable : ${usableCapacityTB.toFixed(2)} TB).`;\n\n                document.getElementById('initialMessage').style.display = 'none';\n                document.getElementById('calculatedResults').style.display = 'block';\n            }\n        };\n\n        document.addEventListener('DOMContentLoaded', () => UI.init());\n        <\/script>\n        [\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>Site en Fran\u00e7aisWebsite in englishStorage sizing calculatorPlan Your Perfect Storage &nbsp; Welcome to the Storage Sizing Calculator, the essential tool for every system administrator or DevOps engineer. Stop guessing! Don&#8217;t base your hardware purchases on luck. Our calculator lets you transform your specific business needs (annual growth, lifespan) into a Net Capacity requirement and instantly [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":196,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-264","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/pages\/264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/comments?post=264"}],"version-history":[{"count":3,"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/pages\/264\/revisions"}],"predecessor-version":[{"id":563,"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/pages\/264\/revisions\/563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/media\/196"}],"wp:attachment":[{"href":"https:\/\/raidzfscalculator.com\/en\/wp-json\/wp\/v2\/media?parent=264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}