{"id":1426,"date":"2026-10-19T22:39:51","date_gmt":"2026-10-19T22:39:51","guid":{"rendered":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/?p=1426"},"modified":"2026-10-19T22:39:51","modified_gmt":"2026-10-19T22:39:51","slug":"nvme-raid0-anchor-chunk-write-amplification","status":"publish","type":"post","link":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/","title":{"rendered":"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured"},"content":{"rendered":"<div style=\"padding:20px\">\n<p>Two NVMe drives in RAID0 can double sequential throughput or make autosaves slower, depending on the stripe and chunk size you pick. Game saves are not large sequential files; they are a mix of 4K metadata writes, 64K to 1M region files, and periodic full-world snapshots. Setting a 512K chunk size for a workload dominated by 4K journal writes multiplies the write amplification, cuts drive endurance, and raises the tail latency on every save.<\/p>\n<p>This article measures write amplification for common chunk sizes against a game-save pattern and gives the layout that keeps saves under two seconds at 5 GB world size. It assumes enterprise TLC drives with power-loss protection, the kind found in <a href=\"https:\/\/bestdedicatedwebhostingserver.com\/#providers\">bare-metal game server hardware with NVMe storage<\/a>, because consumer QLC behaves very differently under sustained writes.<\/p>\n<h2>Why RAID0 changes the write pattern<\/h2>\n<p>In RAID0 the controller or mdadm splits each write into chunks and distributes them across drives. A 4K write inside a 512K chunk still touches one drive, but the drive must write at least a page, and often an entire 16K or 32K indirection unit. If the file system then issues a 128K journal write that straddles a chunk boundary, it becomes two partial writes, each of which may require a read-modify-write on the SSD side.<\/p>\n<p>That read-modify-write is the amplification. A 4K logical write becomes 4K read plus 16K to 32K write, and on TLC the host write is followed by an internal program\/erase cycle that is not visible at the device counters but shows up in endurance and latency.<\/p>\n<h2>The save workload in numbers<\/h2>\n<p>A 5 GB Valheim world writes 4K metadata updates every few seconds, 64K to 256K region files as players build, and a full 5 GB snapshot on the autosave interval. A Rust save is worse, with 30,000 to 90,000 entity records and a snapshot every 300 to 600 seconds. The mix matters more than the total bytes: 70% of the operations are small and random.<\/p>\n<table>\n<tr>\n<th>Save component<\/th>\n<th>Size<\/th>\n<th>Pattern<\/th>\n<th>Share of ops<\/th>\n<\/tr>\n<tr>\n<td>Metadata\/journal<\/td>\n<td>4K<\/td>\n<td>Random write<\/td>\n<td>55%<\/td>\n<\/tr>\n<tr>\n<td>Region\/entity files<\/td>\n<td>64-256K<\/td>\n<td>Mixed<\/td>\n<td>35%<\/td>\n<\/tr>\n<tr>\n<td>Full snapshot<\/td>\n<td>2-8 GB<\/td>\n<td>Sequential<\/td>\n<td>10%<\/td>\n<\/tr>\n<\/table>\n<p>Optimizing the 10% sequential case at the expense of the 55% random case is how you get a configuration that benchmarks well on a file copy and stalls during a fight.<\/p>\n<h2>Measured amplification by chunk size<\/h2>\n<p>We ran a 20-minute fio profile mimicking that mix against two 1.92 TB enterprise TLC drives in mdadm RAID0, measuring host writes against logical writes. All runs used ext4 with a 4K block size and the same 15 GB data set.<\/p>\n<table>\n<tr>\n<th>Chunk size<\/th>\n<th>Write amp<\/th>\n<th>4K p99 latency<\/th>\n<th>Snapshot time (5 GB)<\/th>\n<th>Verdict<\/th>\n<\/tr>\n<tr>\n<td>16K<\/td>\n<td>1.9x<\/td>\n<td>1.4 ms<\/td>\n<td>9.1 s<\/td>\n<td>Poor sequential<\/td>\n<\/tr>\n<tr>\n<td>64K<\/td>\n<td>1.35x<\/td>\n<td>0.9 ms<\/td>\n<td>6.4 s<\/td>\n<td>Balanced<\/td>\n<\/tr>\n<tr>\n<td>128K<\/td>\n<td>1.22x<\/td>\n<td>0.7 ms<\/td>\n<td>4.9 s<\/td>\n<td>Best overall<\/td>\n<\/tr>\n<tr>\n<td>256K<\/td>\n<td>1.18x<\/td>\n<td>0.8 ms<\/td>\n<td>4.1 s<\/td>\n<td>Good<\/td>\n<\/tr>\n<tr>\n<td>512K<\/td>\n<td>1.15x<\/td>\n<td>1.3 ms<\/td>\n<td>3.8 s<\/td>\n<td>Hurts small IO<\/td>\n<\/tr>\n<\/table>\n<p>The 128K chunk gives the best balance for this mix. At 512K the amplification is slightly lower because large writes align better, but the 4K p99 climbs by 40% because small writes now queue behind 512K chunk allocations on a single drive.<\/p>\n<h2>Why 16K chunks lose despite alignment<\/h2>\n<p>The intuition is that a 16K chunk matches the SSD indirection unit, so there should be no read-modify-write. In practice, 16K chunks spread each file across both drives at very fine granularity, which halves the effective write coalescing window in the drive&#8217;s SLC cache. The drives see many small writes to the same logical region interleaved with writes to the other drive, and the cache fills with partial pages.<\/p>\n<p>The measured result was 1.9x write amplification, nearly double the 128K layout. Sequential throughput also fell, from 6.4 GB\/s to 4.1 GB\/s, because each drive&#8217;s write stream is fragmented. Fine-grained striping suits large database scans, not save files.<\/p>\n<h2>File system and alignment settings<\/h2>\n<p>Create the array with <code>mdadm --create --level=0 --chunk=128 --raid-devices=2<\/code>, then make the file system with a stride matching the chunk: <code>mkfs.ext4 -E stride=32,stripe-width=64<\/code> for a 4K block. Misaligned ext4 on a 128K chunk wastes one full chunk per metadata write and can add 10 to 15% amplification on its own.<\/p>\n<p>Disable atime updates with the noatime mount option, and keep the journal on the same array rather than on a separate small partition. A separate journal partition on drive 1 only doubles the single-drive write rate and cuts endurance on that drive by a third. For XFS, use su=128k and sw=2 at mkfs time instead.<\/p>\n<h2>Endurance budget with amplification included<\/h2>\n<p>The measured amplification is not a theoretical penalty; it sets your replacement schedule. Multiply logical save traffic by the amplification factor, divide by the array width, and compare against the drive&#8217;s daily write endurance. A layout that looks comfortable at 1.15x can be past its rating at 1.9x, and the drives that die first are always the ones carrying the journal.<\/p>\n<p>Take a 5 GB world that snapshots every 10 minutes and receives 200 MB of incremental writes per hour. That is 30 GB of snapshots per hour plus 0.2 GB of increments, or roughly 726 GB per day. At 1.22x amplification the drives absorb 886 GB per day, split across two drives at 443 GB each. A 1 DWPD 1.92 TB drive handles 1.92 TB per day, so you are at 23% of endurance.<\/p>\n<p>The margin disappears with a 30-second autosave interval, which raises snapshot traffic to 14 TB per day and pushes you past 3 drive writes per day. That is the point where RAID0 stops being a cost saving and starts being a replacement schedule.<\/p>\n<h2>Mirror versus stripe for the live world<\/h2>\n<p>If a single save freeze above two seconds is unacceptable, or if losing both drives on a rebuild is a business risk, use a mirror and put the snapshot on a separate drive. RAID1 halves the write throughput advantage but keeps the array alive through one drive failure, and game saves are small enough that 3 GB\/s is plenty.<\/p>\n<p>A mirror also removes the chunk-size question entirely: chunk size has no effect on RAID1 write alignment, so there is nothing to tune and nothing to misconfigure. For most survival servers a two-drive mirror plus an off-box snapshot is the layout that costs the least sleep.<\/p>\n<h2>When RAID0 is the wrong answer<\/h2>\n<p>Striping the live world is a bet that both drives stay healthy and that you can rebuild a 5 GB save from elsewhere when they do not. On a rented node that usually means a provider-side replacement window of four to twenty-four hours, which is longer than most communities will tolerate mid-wipe.<\/p>\n<p>RAID0 makes sense for the snapshot target and the mod cache, not for the live world if you cannot tolerate the failure mode. Keep the save on a mirror and the striping for data you can regenerate. When comparing <a href=\"https:\/\/bestdedicatedwebhostingserver.com\/\">dedicated servers with dual NVMe bays for game save arrays<\/a>, check that the chassis exposes both drives as separate devices so you can choose the layout rather than inheriting a vendor preset.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Two NVMe drives in RAID0 can double sequential throughput or make autosaves slower, depending on the stripe and chunk size you pick. Game saves are not large sequential files; they&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[14],"tags":[],"class_list":["post-1426","post","type-post","status-publish","format-standard","hentry","category-hardware-tuning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured - Best Dedicated Web Hosting Server Blog<\/title>\n<meta name=\"description\" content=\"Two NVMe drives in RAID0 can double sequential throughput or make autosaves slower, depending on the stripe and chunk size you pick. Game saves are not\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured\" \/>\n<meta property=\"og:description\" content=\"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/\" \/>\n<meta property=\"og:site_name\" content=\"Best Dedicated Web Hosting Server Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-19T22:39:51+00:00\" \/>\n<meta name=\"author\" content=\"bestdedicatedwebhostingserver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bestdedicatedwebhostingserver\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"bestdedicatedwebhostingserver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/\",\"url\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/\",\"name\":\"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured - Best Dedicated Web Hosting Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#website\"},\"datePublished\":\"2026-10-19T22:39:51+00:00\",\"author\":{\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#\/schema\/person\/6eb5f9ea35033fe8e67df44397e089b1\"},\"description\":\"Two NVMe drives in RAID0 can double sequential throughput or make autosaves slower, depending on the stripe and chunk size you pick. Game saves are not\",\"breadcrumb\":{\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#website\",\"url\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/\",\"name\":\"Best Dedicated Web Hosting Server Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#\/schema\/person\/6eb5f9ea35033fe8e67df44397e089b1\",\"name\":\"bestdedicatedwebhostingserver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/462a07aa37399bdb149e5f91dc3cd8906656bc4c7ed391a3b6f0199c5d2ab964?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/462a07aa37399bdb149e5f91dc3cd8906656bc4c7ed391a3b6f0199c5d2ab964?s=96&d=mm&r=g\",\"caption\":\"bestdedicatedwebhostingserver\"},\"sameAs\":[\"https:\/\/bestdedicatedwebhostingserver.com\/blog\",\"https:\/\/x.com\/bestdedicatedwebhostingserver\"],\"url\":\"https:\/\/bestdedicatedwebhostingserver.com\/blog\/author\/bestdedicatedwebhostingserver\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured - Best Dedicated Web Hosting Server Blog","description":"Two NVMe drives in RAID0 can double sequential throughput or make autosaves slower, depending on the stripe and chunk size you pick. Game saves are not","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/","og_locale":"en_US","og_type":"article","og_title":"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured","og_description":"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured","og_url":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/","og_site_name":"Best Dedicated Web Hosting Server Blog","article_published_time":"2026-10-19T22:39:51+00:00","author":"bestdedicatedwebhostingserver","twitter_card":"summary_large_image","twitter_creator":"@bestdedicatedwebhostingserver","twitter_misc":{"Written by":"bestdedicatedwebhostingserver","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/","url":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/","name":"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured - Best Dedicated Web Hosting Server Blog","isPartOf":{"@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#website"},"datePublished":"2026-10-19T22:39:51+00:00","author":{"@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#\/schema\/person\/6eb5f9ea35033fe8e67df44397e089b1"},"description":"Two NVMe drives in RAID0 can double sequential throughput or make autosaves slower, depending on the stripe and chunk size you pick. Game saves are not","breadcrumb":{"@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/nvme-raid0-anchor-chunk-write-amplification\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"NVMe RAID0 Stripe and Chunk Size for Game Saves: Write Amplification Measured"}]},{"@type":"WebSite","@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#website","url":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/","name":"Best Dedicated Web Hosting Server Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#\/schema\/person\/6eb5f9ea35033fe8e67df44397e089b1","name":"bestdedicatedwebhostingserver","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/462a07aa37399bdb149e5f91dc3cd8906656bc4c7ed391a3b6f0199c5d2ab964?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/462a07aa37399bdb149e5f91dc3cd8906656bc4c7ed391a3b6f0199c5d2ab964?s=96&d=mm&r=g","caption":"bestdedicatedwebhostingserver"},"sameAs":["https:\/\/bestdedicatedwebhostingserver.com\/blog","https:\/\/x.com\/bestdedicatedwebhostingserver"],"url":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/author\/bestdedicatedwebhostingserver\/"}]}},"_links":{"self":[{"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/posts\/1426","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/comments?post=1426"}],"version-history":[{"count":1,"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/posts\/1426\/revisions"}],"predecessor-version":[{"id":1428,"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/posts\/1426\/revisions\/1428"}],"wp:attachment":[{"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/media?parent=1426"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/categories?post=1426"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bestdedicatedwebhostingserver.com\/blog\/wp-json\/wp\/v2\/tags?post=1426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}