<?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 ilham.dev</title><link>https://ilham.dev/tags/storage/</link><description>Recent content in Storage on ilham.dev</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 28 Oct 2026 00:00:00 +0700</lastBuildDate><atom:link href="https://ilham.dev/tags/storage/index.xml" rel="self" type="application/rss+xml"/><item><title>When /home Is Full: Why LVM Makes Storage Expansion Easier</title><link>https://ilham.dev/posts/when-df-h-is-full-why-i-usually-extend-storage-with-lvm/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/when-df-h-is-full-why-i-usually-extend-storage-with-lvm/</guid><description>Most storage expansion problems I run into start with something simple:
df -h Imagine I see this:
Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu--vg-root--lv 50G 20G 30G 40% / /dev/sda2 2G 250M 1.</description></item><item><title>rsync Command Builder Guide</title><link>https://ilham.dev/guides/rsync-command-builder/</link><pubDate>Thu, 15 Oct 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/guides/rsync-command-builder/</guid><description>The most consequential part of an rsync command is often the source path, not the flags. The rsync Command Builder makes directory-versus-contents behavior explicit and keeps a separate dry-run available before a real transfer.</description></item><item><title>tar Command Builder Guide</title><link>https://ilham.dev/guides/tar-command-builder/</link><pubDate>Thu, 15 Oct 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/guides/tar-command-builder/</guid><description>A tar command has two different path contexts: where the archive file lives and where its members come from. The tar Command Builder keeps those inputs separate and explains the generated options before you run anything.</description></item></channel></rss>