<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LVM Operations Guides on Netdata</title><link>https://www.netdata.cloud/guides/lvm/</link><description>Recent content in LVM Operations Guides on Netdata</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://www.netdata.cloud/guides/lvm/index.xml" rel="self" type="application/rss+xml"/><item><title>How LVM actually works in production: a mental model for operators</title><link>https://www.netdata.cloud/guides/lvm/lvm-how-it-works-in-production/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-how-it-works-in-production/</guid><description>&lt;p>Most LVM incidents are caused by operators holding the wrong mental model: thinking of LVM as &amp;ldquo;partitioning with extra steps&amp;rdquo; rather than what it actually is, a userspace management layer that programs the kernel&amp;rsquo;s device-mapper subsystem. Once you internalize that, the confusing behaviors stop being confusing. A full thin pool freezing every process in D-state, a snapshot silently invalidating, an &lt;code>lvs&lt;/code> command hanging during the exact incident you need it for: all of these follow directly from the architecture.&lt;/p></description></item><item><title>LVM boot activation failure: emergency shell and missing mount points</title><link>https://www.netdata.cloud/guides/lvm/lvm-boot-activation-failure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-boot-activation-failure/</guid><description>&lt;p>You boot a server and land in a dracut emergency shell or initramfs rescue prompt. Or the system boots but &lt;code>/mnt/data&lt;/code>, &lt;code>/var/lib/postgresql&lt;/code>, or other non-root filesystems are not mounted. The common thread: LVM volumes that should have activated during early boot did not.&lt;/p>
&lt;p>The initramfs activates LVM volumes before mounting root and before systemd mounts the rest of fstab. If the initramfs lacks the right LVM tools or configuration, or if a required PV is slow to appear (iSCSI not connected, multipath not configured, SAN LUN not presented), activation fails before you have a running system to diagnose from.&lt;/p></description></item><item><title>LVM cannot extend a logical volume: adding a PV when the VG is full</title><link>https://www.netdata.cloud/guides/lvm/lvm-cannot-extend-logical-volume/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-cannot-extend-logical-volume/</guid><description>&lt;p>You ran &lt;code>lvextend&lt;/code> and it refused with some variation of &amp;ldquo;insufficient free space&amp;rdquo; or &amp;ldquo;insufficient free extents,&amp;rdquo; while the filesystem that prompted all this sits at 99% and application writes fail. The fix is mechanical once you know which of three independent constraints is actually blocking you.&lt;/p>
&lt;p>The trap is that &amp;ldquo;no space&amp;rdquo; means three different things in an LVM stack. The filesystem can be full while the LV has room. The VG can be out of free extents while every filesystem looks fine. A thin pool can be 100% full while the VG reports free space. Each constraint has a different remediation, and running the wrong one either does nothing or makes the incident worse.&lt;/p></description></item><item><title>LVM commands hang: when lvs, vgs, and pvs block on locks or dead devices</title><link>https://www.netdata.cloud/guides/lvm/lvm-commands-hang-lvs-vgs-pvs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-commands-hang-lvs-vgs-pvs/</guid><description>&lt;p>You type &lt;code>lvs&lt;/code> on a host during an incident and the prompt never comes back. &lt;code>Ctrl-C&lt;/code> does nothing. &lt;code>kill -9&lt;/code> from another shell does nothing. The process is in D state, uninterruptible sleep, waiting on storage I/O or a metadata lock. Now &lt;code>vgs&lt;/code> and &lt;code>pvs&lt;/code> hang too, and your monitoring agent, which polls &lt;code>lvs&lt;/code> every 60 seconds, has gone silent on exactly the host that is on fire.&lt;/p>
&lt;p>This is not a bug in LVM. &lt;code>lvs&lt;/code>, &lt;code>vgs&lt;/code>, &lt;code>pvs&lt;/code>, and every other LVM command acquire a VG lock and then read metadata from the header of every PV in the group. If the lock is held by a stuck operation, or if any PV is slow, dead, or behind a suspended device-mapper target, the command blocks. On a system with many PVs, a slow SAN, or one unresponsive device, &amp;ldquo;blocks&amp;rdquo; can mean minutes, or forever.&lt;/p></description></item><item><title>LVM Couldn't find device with uuid: a physical volume has gone missing</title><link>https://www.netdata.cloud/guides/lvm/lvm-couldnt-find-device-with-uuid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-couldnt-find-device-with-uuid/</guid><description>&lt;p>The error &amp;ldquo;Couldn&amp;rsquo;t find device with uuid&amp;rdquo; appears when LVM&amp;rsquo;s volume group metadata references a physical volume UUID that no block device on the system currently claims. Every LVM command that touches the affected VG prints the warning. The PV shows as &lt;code>[unknown]&lt;/code> in &lt;code>pvs&lt;/code> output, and the VG enters a partial state.&lt;/p>
&lt;p>The recovery path depends entirely on why the device disappeared and what LV layout sits on top of it. The wrong recovery command, applied too quickly, causes permanent data loss. If system uptime is more than a few minutes and a PV is gone, something has failed at the hardware, fabric, cloud, or operator layer.&lt;/p></description></item><item><title>LVM device node permissions: raw block access that bypasses the filesystem</title><link>https://www.netdata.cloud/guides/lvm/lvm-device-node-permissions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-device-node-permissions/</guid><description>&lt;p>Every active logical volume on a Linux host exposes device nodes at &lt;code>/dev/mapper/&amp;lt;VG&amp;gt;-&amp;lt;LV&amp;gt;&lt;/code> and &lt;code>/dev/&amp;lt;VG&amp;gt;/&amp;lt;LV&amp;gt;&lt;/code>. The default permissions on these nodes are &lt;code>brw-rw---- root:disk&lt;/code> (mode 0660). Anything more permissive than that, a mode like 0666, or a group assignment that includes unprivileged users, lets any local user read and write raw block data on the volume. Filesystem permissions, ACLs, and mount options do not apply at this layer. A user who can open the device node can read &lt;code>/etc/shadow&lt;/code> straight off the disk or overwrite filesystem metadata directly.&lt;/p></description></item><item><title>LVM dm-N device numbers change after reboot: use /dev/mapper, not /dev/dm-N</title><link>https://www.netdata.cloud/guides/lvm/lvm-dm-device-numbers-change-reboot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-dm-device-numbers-change-reboot/</guid><description>&lt;p>After a reboot, you run &lt;code>lsblk&lt;/code> or &lt;code>df -h&lt;/code> and notice your logical volumes have different &lt;code>/dev/dm-N&lt;/code> numbers. What was &lt;code>dm-0&lt;/code> before the reboot is now &lt;code>dm-2&lt;/code>, and what was &lt;code>dm-1&lt;/code> is now &lt;code>dm-0&lt;/code>. If anything on the system references &lt;code>/dev/dm-0&lt;/code> directly, it may now point at the wrong volume.&lt;/p>
&lt;p>This is not a bug and not a sign of corruption. Device-mapper minor numbers are assigned dynamically at activation time based on the order devices are discovered and activated. The numbers are not stored persistently anywhere. The device-mapper tables that back logical volumes exist only in kernel memory and are torn down on every shutdown, then recreated on every boot.&lt;/p></description></item><item><title>LVM dmeventd not running: the auto-extend safety net is offline</title><link>https://www.netdata.cloud/guides/lvm/lvm-dmeventd-not-running/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-dmeventd-not-running/</guid><description>&lt;p>You found this page because &lt;code>systemctl is-active lvm2-monitor.service&lt;/code> returned something unexpected, or &lt;code>pgrep dmeventd&lt;/code> came back empty, or &lt;code>lvs -o+seg_monitor&lt;/code> showed &amp;ldquo;not monitored&amp;rdquo; on a thin pool you assumed was protected.&lt;/p>
&lt;p>Here is the uncomfortable part: nothing is broken right now. No errors in &lt;code>lvs&lt;/code>. No failed services your alerting noticed. No I/O hangs. The system looks healthy, and it is, right up until the moment a thin pool hits 100%, a mirror leg dies, or a snapshot overflows. Then you discover, during the incident, that the daemon which was supposed to fire the safety net has been dead for weeks.&lt;/p></description></item><item><title>LVM filesystem full while the volume group has space: the resize step everyone forgets</title><link>https://www.netdata.cloud/guides/lvm/lvm-filesystem-full-but-vg-has-space/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-filesystem-full-but-vg-has-space/</guid><description>&lt;p>&lt;code>df -h&lt;/code> says the filesystem is 100% full. Applications are getting ENOSPC. &lt;code>vgs&lt;/code> shows plenty of free space. Maybe you already ran &lt;code>lvextend&lt;/code> and &lt;code>df&lt;/code> still shows the old size. Nothing here is broken. You are looking at three layers that measure three different things, and one of them was never told to grow.&lt;/p>
&lt;p>&lt;code>lvextend&lt;/code> grows the logical volume. The filesystem on top keeps its old size until you explicitly resize it. The LV is a bigger container; the filesystem inside has not expanded into the new space.&lt;/p></description></item><item><title>LVM Found duplicate PV: multipath devices and the lvm.conf filter</title><link>https://www.netdata.cloud/guides/lvm/lvm-found-duplicate-pv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-found-duplicate-pv/</guid><description>&lt;p>When LVM prints &amp;ldquo;Found duplicate PV&amp;rdquo; during boot or routine commands, it has found the same PV UUID on two or more block devices. On multipath-attached storage, this almost always means LVM is scanning both the raw SCSI paths (/dev/sdb, /dev/sdc) and the aggregated multipath device (/dev/mapper/mpatha). Each path carries the same PV metadata header.&lt;/p>
&lt;p>The warning is advisory at first: LVM picks one device and proceeds. The danger is which one. If LVM activates a logical volume through a raw path instead of the multipath device, you lose path redundancy and failover. I/O runs through a single HBA link until that link fails, then the volume goes dark. The system can boot fine for weeks until a udev timing race changes which device LVM selects, and the next path failure takes down production.&lt;/p></description></item><item><title>LVM has free space but striped or mirrored allocation still fails</title><link>https://www.netdata.cloud/guides/lvm/lvm-vg-free-space-fragmented-across-pvs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-vg-free-space-fragmented-across-pvs/</guid><description>&lt;p>&lt;code>vgs&lt;/code> shows the volume group 30% free. &lt;code>lvcreate&lt;/code> for a striped or mirrored logical volume, or &lt;code>lvextend&lt;/code> on an existing one, fails anyway:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>Insufficient suitable allocatable extents for logical volume
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The VG has headroom and the operation needs less than that headroom. Both facts are true at once, and that is the trap: &lt;code>vg_free&lt;/code> is an aggregate across every physical volume in the group, but striped and mirrored allocations are not aggregate operations. They are per-PV placement problems. LVM must find extents on multiple distinct PVs at the same time, and if your free space is piled onto one PV, the allocation has nowhere legal to go.&lt;/p></description></item><item><title>LVM I/O hang: a suspended dm device and processes stuck in D state</title><link>https://www.netdata.cloud/guides/lvm/lvm-io-hang-suspended-device-d-state/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-io-hang-suspended-device-d-state/</guid><description>&lt;p>Processes are stuck in D state. &lt;code>kill -9&lt;/code> does nothing. &lt;code>lvs&lt;/code> hangs. Load average is climbing. The root cause is almost always a device-mapper device stuck in suspended state.&lt;/p>
&lt;p>A suspended dm device blocks all I/O to the underlying logical volume. Every process performing I/O to that volume enters uninterruptible sleep (D state) and cannot be killed, even with SIGKILL. The only way to release them is to resolve the underlying I/O blockage and let queued I/O drain.&lt;/p></description></item><item><title>LVM Insufficient free extents: the volume group is out of space</title><link>https://www.netdata.cloud/guides/lvm/lvm-insufficient-free-extents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-insufficient-free-extents/</guid><description>&lt;p>You ran &lt;code>lvcreate&lt;/code>, &lt;code>lvextend&lt;/code>, or &lt;code>lvresize&lt;/code> and got one of these:&lt;/p>
&lt;pre tabindex="0">&lt;code>Insufficient free extents
Insufficient free space: 12800 extents needed, but only 0 available
&lt;/code>&lt;/pre>&lt;p>Both messages mean the same thing: the volume group has no unallocated physical extents left for the allocation you requested. Every physical extent in the VG is already assigned to some logical volume, and the operation fails outright.&lt;/p>
&lt;p>This is a cliff-edge failure, not a gradual one. A VG at 99% allocated works exactly like a VG at 50% allocated. At 100%, every allocation operation fails immediately: LV creation, LV extension, snapshot creation, and thin pool auto-extend. Existing LVs keep serving I/O, so applications look fine until the moment something tries to grow.&lt;/p></description></item><item><title>LVM lock contention: stale lock files and blocked commands</title><link>https://www.netdata.cloud/guides/lvm/lvm-lock-contention/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-lock-contention/</guid><description>&lt;p>You run &lt;code>lvs&lt;/code> and it sits there. You try &lt;code>vgs&lt;/code> in another terminal and it hangs too. Storage is fine, VMs are running, application I/O is flowing, but every LVM command blocks. Your monitoring, which polls &lt;code>lvs&lt;/code> every 10 seconds, goes stale at the exact moment you need it.&lt;/p>
&lt;p>This is LVM metadata lock contention. Every LVM command (&lt;code>pvs&lt;/code>, &lt;code>vgs&lt;/code>, &lt;code>lvs&lt;/code>, &lt;code>lvcreate&lt;/code>, &lt;code>lvextend&lt;/code>, &lt;code>pvmove&lt;/code>) acquires locks before reading or modifying VG metadata, using lock files in &lt;code>/run/lock/lvm/&lt;/code>. When one command holds a lock and stalls, everything else queues behind it. Because the monitoring commands are LVM commands too, the management plane goes blind under the same condition it is supposed to be observing.&lt;/p></description></item><item><title>LVM logical volume not active: lvchange -ay and why activation failed</title><link>https://www.netdata.cloud/guides/lvm/lvm-lv-not-active/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-lv-not-active/</guid><description>&lt;p>A logical volume that should be serving data shows as inactive. In &lt;code>lvs&lt;/code> output, &lt;code>lv_attr&lt;/code> position 5 is &lt;code>-&lt;/code> where you expect &lt;code>a&lt;/code>. No device-mapper table is loaded, no &lt;code>/dev/dm-N&lt;/code> device exists, and nothing can mount, open, or write to that LV. Applications see a missing block device, and if this LV backs root or a critical service, the system may not have booted properly.&lt;/p>
&lt;p>&lt;code>lvchange -ay&lt;/code> is the standard activation command, but it can fail for several distinct reasons. With thin snapshots that carry the activation skip flag, &lt;code>lvchange -ay&lt;/code> can even exit 0 without activating the LV. Always verify with &lt;code>dmsetup ls&lt;/code> or &lt;code>lvs&lt;/code> that the LV actually transitioned to active state.&lt;/p></description></item><item><title>LVM logical volume partial (p) flag: which LVs the missing disk took down</title><link>https://www.netdata.cloud/guides/lvm/lvm-lv-partial-flag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-lv-partial-flag/</guid><description>&lt;p>You run &lt;code>lvs&lt;/code> and see a lowercase &lt;code>p&lt;/code> in the ninth character of &lt;code>lv_attr&lt;/code>. That means a physical volume (PV) backing extents in this logical volume has disappeared from the system. The VG is now in partial mode, and some LVs may be silently degraded or completely inaccessible.&lt;/p>
&lt;p>The &lt;code>p&lt;/code> flag is direct evidence of device loss: a disk failed, a SAN LUN was unpresented, a multipath device lost all paths, or a cloud volume was detached. The question is how bad the damage is and which volumes took the hit.&lt;/p></description></item><item><title>LVM metadata backup stale: /etc/lvm/backup out of sync with the VG</title><link>https://www.netdata.cloud/guides/lvm/lvm-metadata-backup-stale/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-metadata-backup-stale/</guid><description>&lt;p>Every LVM command that changes metadata (lvcreate, lvextend, lvremove, vgextend, snapshot creation) writes two things to the local filesystem: an archived copy of the new metadata in &lt;code>/etc/lvm/archive/&lt;/code> and a current-state backup in &lt;code>/etc/lvm/backup/&amp;lt;vg&amp;gt;&lt;/code>. That backup file is what &lt;code>vgcfgrestore&lt;/code> reads when you recover a VG after metadata corruption.&lt;/p>
&lt;p>The failure mode here is quiet: something blocks those writes, the backup file stops updating, and nothing in day-to-day operation tells you. LVM keeps working. Months later you hit metadata corruption, reach for &lt;code>vgcfgrestore&lt;/code>, and restore a VG layout from six months ago. LVs created since then are missing. LVs removed since then come back pointing at extents that have been reallocated. You have traded a recovery exercise for a data integrity problem.&lt;/p></description></item><item><title>LVM metadata corruption recovery: vgcfgrestore from /etc/lvm/archive</title><link>https://www.netdata.cloud/guides/lvm/lvm-metadata-corruption-vgcfgrestore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-metadata-corruption-vgcfgrestore/</guid><description>&lt;p>LVM keeps the complete map of your logical volumes in a small metadata area at the start of each physical volume. If that metadata is corrupted, by a power loss during a metadata write or a bad sector in the first few megabytes of a PV, the entire volume group becomes unreadable. Every LV in the VG becomes inaccessible at once, regardless of how healthy the actual data extents are.&lt;/p></description></item><item><title>LVM mirror resync storm: multiple rebuilds saturating disk I/O</title><link>https://www.netdata.cloud/guides/lvm/lvm-mirror-resync-storm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-mirror-resync-storm/</guid><description>&lt;p>Production latency is climbing. Multiple applications are slow. Storage shows high I/O across all physical volumes, but there is no single failed disk and no obvious error in the logs. When you check LVM, several mirrored logical volumes show &lt;code>copy_percent&lt;/code> below 100%. They are all resyncing at the same time.&lt;/p>
&lt;p>This is a mirror resync storm. After a system crash, a disk replacement, or bulk mirror creation, multiple mirrored LVs may need to resynchronize simultaneously. Each resync generates substantial sequential and random I/O as the mirror copies dirty regions or entire leg contents to the recovering side. When several run in parallel, the combined I/O overwhelms storage bandwidth. Production workloads suffer elevated latency, and each resync takes longer than it would alone because they compete for the same physical devices.&lt;/p></description></item><item><title>LVM monitoring checklist: the signals every production volume manager needs</title><link>https://www.netdata.cloud/guides/lvm/lvm-monitoring-checklist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-monitoring-checklist/</guid><description>&lt;p>Most LVM incidents are not exotic. They are a thin pool that hit 100% because nobody watched &lt;code>metadata_percent&lt;/code>, a mirror that ran degraded for three months because nobody alerted on &lt;code>copy_percent&lt;/code>, or a PV that went missing on a Friday and paged nobody because the check only ran &lt;code>df&lt;/code>. The failure modes are well known. What is usually missing is a deliberate, minimal set of signals with thresholds and severities attached.&lt;/p></description></item><item><title>LVM monitoring maturity model: from survival to expert</title><link>https://www.netdata.cloud/guides/lvm/lvm-monitoring-maturity-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-monitoring-maturity-model/</guid><description>&lt;p>Most teams monitor LVM by accident. They alert on filesystem fullness, maybe on disk failure, and discover thin pool exhaustion or a silently degraded mirror only when applications start returning I/O errors. LVM has its own failure domains that filesystem metrics cannot see: a thin pool can be at 100% data usage while &lt;code>df&lt;/code> shows 50% free, and a mirror can run on one leg for months with no visible symptom.&lt;/p></description></item><item><title>LVM pvmove stuck or interrupted: temporary mirror state and how to unwind it</title><link>https://www.netdata.cloud/guides/lvm/lvm-pvmove-stuck-or-interrupted/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-pvmove-stuck-or-interrupted/</guid><description>&lt;p>You ran &lt;code>pvmove&lt;/code> to drain a disk, it has been running for hours, and now something is wrong. Maybe the SSH session died, maybe the host rebooted, maybe someone killed the process. Now &lt;code>lvs&lt;/code> shows a mirror LV you never created, and every LVM command against the volume group feels slow or blocked.&lt;/p>
&lt;p>This is the pvmove temporary mirror state. It is recoverable in almost every case, but only if you unwind it the way LVM expects: resume it with a bare &lt;code>pvmove&lt;/code>, or abort it with &lt;code>pvmove --abort&lt;/code>. The one move that turns a tedious situation into a bad one is &lt;code>kill -9&lt;/code> on the pvmove process, or worse, deleting the mirror LV by hand.&lt;/p></description></item><item><title>LVM RAID mismatch count: data integrity after a scrub</title><link>https://www.netdata.cloud/guides/lvm/lvm-raid-mismatch-count/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-raid-mismatch-count/</guid><description>&lt;p>A non-zero &lt;code>raid_mismatch_count&lt;/code> means the scrub found blocks where data on one leg disagrees with data on the other leg(s). This surfaces as the &lt;code>m&lt;/code> flag in position 9 of &lt;code>lv_attr&lt;/code> and in the &lt;code>raid_mismatch_count&lt;/code> field of &lt;code>lvs&lt;/code>. It demands investigation, though some mismatches turn out to be benign.&lt;/p>
&lt;p>The operational question is not &amp;ldquo;do we have mismatches&amp;rdquo; but &amp;ldquo;is this real corruption or expected noise.&amp;rdquo; RAID1 and RAID10 arrays can report non-zero mismatch counts from documented edge cases in the kernel write path that produce alignment differences in transient data areas. Mismatches appearing after an unclean shutdown are expected until the scrub completes and should not trigger paging on initial boot.&lt;/p></description></item><item><title>LVM RAID or mirror degraded: a leg is dead and you are one failure from data loss</title><link>https://www.netdata.cloud/guides/lvm/lvm-raid-mirror-degraded/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-raid-mirror-degraded/</guid><description>&lt;p>Your LVM RAID1 or mirrored logical volume is still serving reads and writes. Applications see no errors. Filesystems are mounted. But one leg is dead and you are running on a single copy with zero redundancy. The next disk failure, cable disconnect, or SAN path loss is total data loss.&lt;/p>
&lt;p>The default &lt;code>raid_fault_policy&lt;/code> is &lt;code>warn&lt;/code>. When a leg fails, dmeventd logs a warning but takes no repair action. No resync is triggered, no alert fires unless your monitoring explicitly checks for degraded state. The system runs indefinitely on the surviving leg until the second failure removes all copies.&lt;/p></description></item><item><title>LVM RAID resync stuck: copy_percent not progressing</title><link>https://www.netdata.cloud/guides/lvm/lvm-raid-resync-stuck/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-raid-resync-stuck/</guid><description>&lt;p>You are watching &lt;code>lvs&lt;/code> output on a RAID logical volume, and &lt;code>copy_percent&lt;/code> has not moved for over an hour. The array is degraded, a resync or rebuild is supposed to be underway, and the percentage is frozen. Meanwhile, the volume is running on fewer healthy legs than intended, and every minute without full redundancy is a minute where a second disk failure means data loss.&lt;/p>
&lt;p>This is one of the more frustrating LVM failure modes because the system appears functional. Applications are still running. The degraded array is still serving I/O. But the rebuild that should restore redundancy is not progressing, and without active diagnosis, it may never complete.&lt;/p></description></item><item><title>LVM reached low water mark for data device: the thin pool warning before the freeze</title><link>https://www.netdata.cloud/guides/lvm/lvm-reached-low-water-mark-data-device/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-reached-low-water-mark-data-device/</guid><description>&lt;p>You found this line in dmesg or the journal:&lt;/p>
&lt;pre tabindex="0">&lt;code>device-mapper: thin: 253:4: reached low water mark for data device: sending event
&lt;/code>&lt;/pre>&lt;p>This is not an error. It is the dm-thin kernel target reporting that a thin pool&amp;rsquo;s data device has crossed its low water mark and that a device-mapper event has been sent to userspace. dmeventd listens for that event and can auto-extend the pool. On a correctly configured system, you may see this message once, dmeventd extends the pool, and usage drops back below the threshold.&lt;/p></description></item><item><title>LVM recovering a volume group after permanent PV loss: vgreduce --removemissing</title><link>https://www.netdata.cloud/guides/lvm/lvm-vgreduce-removemissing-recovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-vgreduce-removemissing-recovery/</guid><description>&lt;p>When a physical volume (PV) disappears from the system, the volume group (VG) enters a partial state. LVM commands start printing &amp;ldquo;Couldn&amp;rsquo;t find device with uuid&amp;rdquo; warnings, and any logical volume (LV) with extents on the missing PV becomes inaccessible (linear/striped) or degraded (mirror/RAID). Once you have confirmed the PV is permanently lost, &lt;code>vgreduce --removemissing&lt;/code> cleans the missing PV out of the VG metadata.&lt;/p>
&lt;p>This is a one-way door. The command permanently removes the missing PV from VG metadata and, with &lt;code>--force&lt;/code>, destroys any partial LV that depended solely on that PV. There is no automatic undo. LVM archives metadata before destructive operations, and &lt;code>vgcfgrestore&lt;/code> can reverse some changes, but thin pool LVs and cache pool LVs removed by &lt;code>--force&lt;/code> are not recoverable through metadata restoration.&lt;/p></description></item><item><title>LVM snapshot COW usage climbing: extend or remove before it overflows</title><link>https://www.netdata.cloud/guides/lvm/lvm-snapshot-cow-usage-growing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-snapshot-cow-usage-growing/</guid><description>&lt;p>&lt;code>lvs&lt;/code> shows a traditional snapshot with &lt;code>snap_percent&lt;/code> at 78%. An hour ago it was 61%. You have a fixed-size COW exception store filling up from writes to the origin volume, and when it reaches 100% the snapshot is invalidated instantly and permanently. There is no warning state, no graceful degradation, and no recovery. If a backup is reading from that snapshot, the backup dies with it.&lt;/p>
&lt;p>This is a countdown, not a trend. The right response is a quick calculation (how fast is it filling, how much time is left) followed by one of three actions: finish the backup faster, extend the snapshot, or remove it.&lt;/p></description></item><item><title>LVM snapshot invalid: the COW exception store filled and the snapshot is gone</title><link>https://www.netdata.cloud/guides/lvm/lvm-snapshot-invalid-cow-full/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-snapshot-invalid-cow-full/</guid><description>&lt;p>You run &lt;code>lvs&lt;/code> and see it: a snapshot with &lt;code>snap_percent&lt;/code> at 100.00 and an &lt;code>I&lt;/code> in the fifth position of &lt;code>lv_attr&lt;/code>. In the kernel log there is a line like &lt;code>Invalidating snapshot: Unable to allocate exception&lt;/code>. The snapshot is dead. It did not degrade, it did not warn you at the application layer, and it cannot be brought back.&lt;/p>
&lt;p>This article covers traditional (non-thin) LVM snapshots only. Thin snapshots live in a thin pool and fail differently; if your snapshots are thin, the relevant failure is pool exhaustion, not this one. See &lt;a href="https://www.netdata.cloud/guides/lvm/lvm-thin-pool-full-out-of-data-space/">LVM thin pool out of data space&lt;/a> for that case.&lt;/p></description></item><item><title>LVM snapshot slowing the origin: copy-on-write write amplification</title><link>https://www.netdata.cloud/guides/lvm/lvm-snapshot-origin-latency-cow-overhead/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-snapshot-origin-latency-cow-overhead/</guid><description>&lt;p>Write latency on a logical volume doubles or worse with no obvious cause. The disks are healthy, dmesg shows no I/O errors, no RAID resync is running, and the workload has not changed. The one thing that did change: someone created a snapshot, often hours or days ago, usually for a backup that has long since finished.&lt;/p>
&lt;p>This is a traditional (thick) LVM snapshot working as designed. While the snapshot exists, the first write to every chunk of the origin triggers a copy-on-write (COW) cycle: read the original chunk, write it to the snapshot&amp;rsquo;s exception store, then write the new data. One application write becomes a minimum of three physical I/Os. Under write-heavy load, origin latency doubles or worse, and it degrades further as the exception store fills.&lt;/p></description></item><item><title>LVM thin pool auto-extend not working: threshold 100 means disabled</title><link>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-autoextend-not-working/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-autoextend-not-working/</guid><description>&lt;p>Your thin pool hit 100% data usage, writes to every thin LV in the pool started failing, and the auto-extend you thought was protecting you never fired. Or you are reading this before that happens, auditing a pool that has been &amp;ldquo;protected&amp;rdquo; for months without anyone ever confirming the mechanism works.&lt;/p>
&lt;p>The most common root cause is a one-line surprise in &lt;code>/etc/lvm/lvm.conf&lt;/code>: the default value of &lt;code>thin_pool_autoextend_threshold&lt;/code> is &lt;strong>100&lt;/strong>, and a threshold of 100 does not mean &amp;ldquo;extend when the pool is full&amp;rdquo;. It means auto-extend is &lt;strong>disabled&lt;/strong>. The commented-out line &lt;code># thin_pool_autoextend_threshold = 100&lt;/code> in the shipped config looks like a sensible default. It is the off switch.&lt;/p></description></item><item><title>LVM thin pool check needed: thin_check and lvconvert --repair</title><link>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-needs-repair/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-needs-repair/</guid><description>&lt;p>A thin pool that reports &amp;ldquo;check needed&amp;rdquo; is telling you the kernel no longer trusts the pool&amp;rsquo;s metadata B-tree. The pool may still be serving I/O, or it may already be erroring writes. Either way, the wrong move (resizing metadata, forcing activation, running the wrong repair path on an oversized metadata LV) can turn a recoverable state into permanent data loss.&lt;/p>
&lt;p>This state usually appears after metadata exhaustion, an unclean shutdown during a metadata update, or an underlying storage error. It shows up in &lt;code>lvs&lt;/code> output as &lt;code>c&lt;/code> (check needed) or &lt;code>C&lt;/code> (check needed, suspended) in position 5 of &lt;code>lv_attr&lt;/code>, often alongside a health flag in position 9. If you have not read the background on how thin pools are structured, see &lt;a href="https://www.netdata.cloud/guides/lvm/lvm-how-it-works-in-production/">how LVM actually works in production&lt;/a> first. This page covers only detection, validation, and repair.&lt;/p></description></item><item><title>LVM thin pool metadata full: the exhaustion that can corrupt the pool</title><link>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-metadata-full/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-metadata-full/</guid><description>&lt;p>Your thin pool&amp;rsquo;s &lt;code>metadata_percent&lt;/code> has hit 100. Writes to every thin LV in the pool are failing or hanging, and yet &lt;code>lvs&lt;/code> shows &lt;code>data_percent&lt;/code> at 40%. That is not a contradiction. It is the defining feature of thin pool metadata exhaustion, and it is the LVM failure mode most likely to cost you data.&lt;/p>
&lt;p>Metadata exhaustion is more dangerous than data exhaustion for one reason: a full data area stops new allocations, but a full metadata area can leave the pool structurally corrupted. The metadata LV holds the block mapping tables for every thin LV and snapshot in the pool. When the kernel can no longer allocate a metadata block mid-transaction, it aborts the transaction and switches the pool to read-only mode. From that point, recovery via &lt;code>lvconvert --repair&lt;/code> is possible but not guaranteed, and the &lt;code>lvmthin(7)&lt;/code> man page warns plainly that data from thin LVs may ultimately be unrecoverable.&lt;/p></description></item><item><title>LVM thin pool out of data space: every thin volume freezes at once</title><link>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-full-out-of-data-space/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-full-out-of-data-space/</guid><description>&lt;p>The symptom usually arrives as &amp;ldquo;the server hung&amp;rdquo; rather than &amp;ldquo;the storage filled up.&amp;rdquo; Processes writing to any thin volume in the pool go into uninterruptible sleep (D state). Applications stop mid-write without returning errors at first. Databases stall, VMs pause, containers wedge. If root or swap sits on a thin LV in the pool, the whole system becomes unresponsive and SSH sessions freeze.&lt;/p>
&lt;p>The underlying event is simple: the thin pool&amp;rsquo;s data device reached 100% allocation, and the kernel&amp;rsquo;s device-mapper thin-pool target cannot satisfy a new block allocation for any thin volume in that pool. Because all thin LVs share the pool, they all stop at once. This is the cliff-edge failure behind most thin provisioning postmortems.&lt;/p></description></item><item><title>LVM thin pool overprovisioning: 60% full can still be dangerous</title><link>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-overprovisioning-ratio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-overprovisioning-ratio/</guid><description>&lt;p>Your thin pool shows 60% data usage. Every dashboard is green, no alert has fired, and the pool has sat around that number for weeks. Then a single process on one thin volume starts writing aggressively, and eleven minutes later every thin LV in the pool is frozen: databases crash, VMs pause, and writes across the entire pool queue for 60 seconds and then fail with I/O errors.&lt;/p>
&lt;p>This is one of the classic LVM states that looks normal but is silently dangerous. The number you are watching, &lt;code>data_percent&lt;/code>, measures physical pool occupancy. It says nothing about how much data the thin volumes are &lt;em>allowed&lt;/em> to write. That second number is the overprovisioning ratio, and it is the risk multiplier that &lt;code>data_percent&lt;/code> hides.&lt;/p></description></item><item><title>LVM thin pool queue_if_no_space: why a full pool hangs instead of erroring</title><link>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-queue-if-no-space-hang/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-thin-pool-queue-if-no-space-hang/</guid><description>&lt;p>The server looks dead. Processes pile up in uninterruptible sleep, shells that touch certain filesystems never return, and even &lt;code>lvs&lt;/code> hangs. There are no I/O errors in the application logs, no kernel oops, nothing in &lt;code>dmesg&lt;/code> that screams hardware. Teams burn the first hour of this incident investigating a kernel or storage fault, when the actual cause is an LVM thin pool that ran out of data space.&lt;/p>
&lt;p>The reason there are no errors is the pool&amp;rsquo;s when-full policy. The default for LVM thin pools is &lt;code>queue_if_no_space&lt;/code>: when the pool fills, the kernel queues write I/O instead of failing it. The alternative, &lt;code>error_if_no_space&lt;/code>, returns write errors immediately, which applications can see, log, and handle. Most operators have never checked which policy their pools use, because the default is silent until the pool fills.&lt;/p></description></item><item><title>LVM thin pool space not reclaimed: discard, TRIM, and fstrim</title><link>https://www.netdata.cloud/guides/lvm/lvm-reclaim-thin-pool-space-fstrim/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-reclaim-thin-pool-space-fstrim/</guid><description>&lt;p>You deleted 200 GB of files from a filesystem on a thin LV. &lt;code>df&lt;/code> shows the space as free, but &lt;code>lvs&lt;/code> still reports the thin pool &lt;code>data_percent&lt;/code> exactly where it was. Nothing is broken in the reporting: this is how thin provisioning works. Deleting a file only updates filesystem metadata. The pool blocks that held the data stay allocated until a discard (TRIM) operation travels from the filesystem, through the thin LV, into the pool.&lt;/p></description></item><item><title>LVM thin snapshots vs old-style COW snapshots: which failure mode you inherit</title><link>https://www.netdata.cloud/guides/lvm/lvm-thin-vs-cow-snapshots/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-thin-vs-cow-snapshots/</guid><description>&lt;p>LVM offers two snapshot mechanisms that look similar from the command line but fail in fundamentally different ways. The choice between them is about which failure mode you inherit when something goes wrong.&lt;/p>
&lt;p>Old-style COW (copy-on-write) snapshots allocate a fixed exception store at creation time. When that store fills to 100%, the snapshot is invalidated permanently and silently. The origin volume continues running. You lose the snapshot and whatever backup or rollback point it represented, but production keeps going.&lt;/p></description></item><item><title>LVM unexpected metadata changes: auditing pvcreate, vgcreate, and lvcreate</title><link>https://www.netdata.cloud/guides/lvm/lvm-unexpected-metadata-changes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-unexpected-metadata-changes/</guid><description>&lt;p>You found a logical volume nobody remembers creating. Or a volume group grew a new physical volume overnight. Or &lt;code>lvdisplay&lt;/code> output does not match your configuration management records. None of your change tickets explain it, and now you need to answer two questions fast: what changed, and who changed it.&lt;/p>
&lt;p>LVM metadata changes are a high-signal security event because every &lt;code>pvcreate&lt;/code>, &lt;code>vgcreate&lt;/code>, &lt;code>lvcreate&lt;/code>, &lt;code>lvremove&lt;/code>, and &lt;code>vgextend&lt;/code> requires root. An unexpected LVM change outside a change window means root ran that command, which narrows the possibilities to an authorized root process you forgot about (automation, a package script, a provisioning tool) or an unauthorized one (a compromised service that escalated, a rogue script, an attacker with a shell).&lt;/p></description></item><item><title>LVM vgck metadata inconsistency: PVs disagree about the volume group</title><link>https://www.netdata.cloud/guides/lvm/lvm-vgck-metadata-inconsistent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-vgck-metadata-inconsistent/</guid><description>&lt;p>&lt;code>vgck&lt;/code> returned non-zero on a production VG, or you are seeing warnings like &amp;ldquo;Inconsistent metadata found for VG&amp;rdquo; or &amp;ldquo;ignoring metadata seqno N on /dev/sdX for seqno M on /dev/sdY.&amp;rdquo; The physical volumes in the volume group hold different versions of the VG metadata. One or more PVs are stale: they missed a metadata update because they were offline, unreachable, or had bad blocks when the write happened.&lt;/p>
&lt;p>LVM replicates complete VG metadata across every member PV. Each metadata change increments a sequence number (&lt;code>vg_seqno&lt;/code>). When all PVs agree, the VG is consistent. When they disagree, you have split metadata. The impact ranges from noisy warnings on every LVM command to failed LV activation and, in the worst case, an unreadable VG.&lt;/p></description></item><item><title>LVM volume group is partial: operating a VG with a missing PV</title><link>https://www.netdata.cloud/guides/lvm/lvm-vg-partial-missing-pv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-vg-partial-missing-pv/</guid><description>&lt;p>You ran &lt;code>vgs&lt;/code> or &lt;code>lvs&lt;/code> and saw something wrong. The VG attributes show a &lt;code>p&lt;/code> in the fourth position (&lt;code>wz--pn-&lt;/code> instead of &lt;code>wz--n-&lt;/code>). One or more PVs show as &lt;code>[unknown]&lt;/code> in &lt;code>pvs&lt;/code> output. Commands that touch the VG now print warnings about a missing device and may refuse to run.&lt;/p>
&lt;p>The VG is in partial mode. LVM metadata still references a PV UUID that no block device on the system currently claims. The metadata itself is intact on surviving PVs, which is why you can still see the VG at all. But any LV that had physical extents on the missing PV now has a hole in its mapping table.&lt;/p></description></item><item><title>LVM volume group running low on free space: vg_free and runway estimation</title><link>https://www.netdata.cloud/guides/lvm/lvm-volume-group-free-space-low/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/lvm/lvm-volume-group-free-space-low/</guid><description>&lt;p>Your volume group still works: LVs are active, filesystems are mounted, applications are writing. But &lt;code>vgs&lt;/code> shows &lt;code>vg_free&lt;/code> shrinking week over week, and the trend says you hit zero sometime next month. VG exhaustion is a cliff edge: there is no graceful degradation between 99% and 100% full. Everything works until an allocation request cannot be satisfied, and then it fails immediately. Watching &lt;code>vg_free&lt;/code> is the warning the cliff never gives you.&lt;/p></description></item></channel></rss>