<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Storage on Commentary of Takao</title><link>https://takao.blog/en/tags/storage/</link><description>Recent content in Storage on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Commentary of Takao</copyright><lastBuildDate>Sat, 13 Jun 2026 23:11:50 +0900</lastBuildDate><atom:link href="https://takao.blog/en/tags/storage/index.xml" rel="self" type="application/rss+xml"/><item><title>Replacing LocalStorage: Dynamic IndexedDB wrapper localForage</title><link>https://takao.blog/en/web/js-indexeddb-localforage-localstorage/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/en/web/js-indexeddb-localforage-localstorage/</guid><description>&lt;img src="https://takao.blog/img/thumnail.webp" alt="Featured image of post Replacing LocalStorage: Dynamic IndexedDB wrapper localForage" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Client-side storage is a fundamental requirement for modern web applications — offline caches, user preferences, draft data, and session state all need to persist in the browser. For years, &lt;strong&gt;localStorage&lt;/strong&gt; has been the simplest go-to solution, but its limitations become painful as applications grow. This article compares localStorage, raw IndexedDB, and the &lt;strong&gt;localForage&lt;/strong&gt; wrapper library, providing practical guidance for choosing the right storage engine.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-limits-of-localstorage"&gt;The Limits of localStorage
&lt;/h2&gt;&lt;p&gt;localStorage offers a straightforward synchronous key-value API — &lt;code&gt;setItem(key, value)&lt;/code&gt; and &lt;code&gt;getItem(key)&lt;/code&gt; — but it comes with hard constraints:&lt;/p&gt;</description></item><item><title>Proxmox VE ZFS Storage: Pool Setup, Snapshots, and Optimization</title><link>https://takao.blog/en/web/proxmox-zfs-storage/</link><pubDate>Wed, 14 Aug 2024 00:00:00 +0000</pubDate><guid>https://takao.blog/en/web/proxmox-zfs-storage/</guid><description>&lt;img src="https://takao.blog/img/thumnail.webp" alt="Featured image of post Proxmox VE ZFS Storage: Pool Setup, Snapshots, and Optimization" /&gt;&lt;h2 id="why-zfs-on-proxmox"&gt;Why ZFS on Proxmox
&lt;/h2&gt;&lt;p&gt;ZFS brings enterprise-grade features to Proxmox VE: data integrity via checksumming (detects and repairs silent corruption), transparent compression, instant snapshots and clones, and flexible RAID-like pooling. It replaces traditional volume management and filesystem layers with a single, unified stack.&lt;/p&gt;
&lt;h2 id="creating-a-pool"&gt;Creating a Pool
&lt;/h2&gt;&lt;p&gt;A pool is built from virtual devices (vdevs). Common vdev types:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Vdev type&lt;/th&gt;
					&lt;th&gt;Minimum disks&lt;/th&gt;
					&lt;th&gt;Usable capacity&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Mirror&lt;/td&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;50%&lt;/td&gt;
					&lt;td&gt;Data mirrored across two disks&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RAIDZ1&lt;/td&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;67%&lt;/td&gt;
					&lt;td&gt;Single parity (max 1 disk failure)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RAIDZ2&lt;/td&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;50%&lt;/td&gt;
					&lt;td&gt;Double parity (max 2 failures)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;RAIDZ3&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;40%&lt;/td&gt;
					&lt;td&gt;Triple parity (max 3 failures)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Stripe&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;100%&lt;/td&gt;
					&lt;td&gt;No redundancy (not recommended)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Create a mirrored pool:&lt;/p&gt;</description></item></channel></rss>