# How to Use lvresize in Linux


## Introduction

If you’re managing storage on a Linux system, you’ve probably heard about Logical Volume Management (LVM). It’s a powerful way to handle disk space flexibly. One of the key tools in LVM is **lvresize**, which lets you change the size of logical volumes easily.

In this article, I’ll guide you through how to use lvresize in Linux. Whether you want to increase or decrease your volume size, I’ll explain the steps, precautions, and commands you need. By the end, you’ll feel confident managing your storage with lvresize.

## What is lvresize and Why Use It?

Lvresize is a command-line utility in Linux that allows you to resize logical volumes. Logical volumes are virtual partitions managed by LVM, which sits on top of physical disks. Unlike traditional partitions, logical volumes can be resized without rebooting or repartitioning the disk.

Here’s why lvresize is useful:

- **Flexible storage management:** You can grow or shrink volumes as your needs change.
- **No downtime:** Resize volumes without unmounting or rebooting in many cases.
- **Efficient disk use:** Allocate space dynamically to avoid wasted disk space.
- **Supports snapshots:** Resize volumes even when snapshots are involved.

Using lvresize, you can optimize your disk usage and adapt your storage to evolving requirements.

## Preparing to Use lvresize

Before resizing any logical volume, preparation is key to avoid data loss or system issues. Here’s what you should do:

- **Backup your data:** Always back up important files before resizing.
- **Check volume usage:** Use `df -h` to see how much space is used.
- **Unmount the volume (if shrinking):** Shrinking requires unmounting the volume to avoid corruption.
- **Check filesystem integrity:** Run `fsck` on the volume to fix errors.
- **Verify free space:** Ensure there’s enough free space in the volume group to grow the volume.

Taking these steps helps ensure a smooth resizing process.

## How to Increase the Size of a Logical Volume

Increasing a logical volume’s size is common when you need more space. Here’s a step-by-step guide:

### Step 1: Check Available Space in Volume Group

Run:

```bash
vgdisplay
```

Look for "Free PE / Size" to see how much space you can add.

### Step 2: Resize the Logical Volume

Use lvresize with the `-L` option to specify the new size or `-l` for logical extents. For example, to increase by 10GB:

```bash
sudo lvresize -L +10G /dev/mapper/vgname-lvname
```

Or set an exact size:

```bash
sudo lvresize -L 50G /dev/mapper/vgname-lvname
```

### Step 3: Resize the Filesystem

After resizing the volume, you must resize the filesystem to use the new space.

- For **ext4**:

```bash
sudo resize2fs /dev/mapper/vgname-lvname
```

- For **xfs** (only supports growing):

```bash
sudo xfs_growfs /mount/point
```

### Step 4: Verify the New Size

Check with:

```bash
df -h /mount/point
```

You should see the increased size reflected.

## How to Decrease the Size of a Logical Volume

Shrinking a logical volume is trickier because it risks data loss. Follow these steps carefully:

### Step 1: Backup Your Data

Shrinking can cause data loss if done incorrectly. Backup is essential.

### Step 2: Unmount the Volume

Unmount the filesystem:

```bash
sudo umount /dev/mapper/vgname-lvname
```

### Step 3: Check and Resize the Filesystem

Run a filesystem check:

```bash
sudo e2fsck -f /dev/mapper/vgname-lvname
```

Resize the filesystem to the desired smaller size:

```bash
sudo resize2fs /dev/mapper/vgname-lvname 20G
```

Replace `20G` with your target size.

### Step 4: Shrink the Logical Volume

Now shrink the logical volume:

```bash
sudo lvresize -L 20G /dev/mapper/vgname-lvname
```

### Step 5: Mount the Volume Back

Mount the volume again:

```bash
sudo mount /dev/mapper/vgname-lvname /mount/point
```

### Step 6: Verify the Size

Use `df -h` to confirm the new size.

## Important lvresize Options and Flags

Understanding lvresize options helps you use it effectively:

- `-L` or `--size`: Specify the new size (e.g., `-L +5G` to add 5GB).
- `-l` or `--extents`: Resize by logical extents instead of size.
- `-r` or `--resizefs`: Automatically resize the filesystem after resizing the volume (works with some filesystems).
- `-v` or `--verbose`: Show detailed output.
- `--test`: Perform a dry run without making changes.

Using `-r` can simplify resizing by combining volume and filesystem resizing in one command.

## Common Errors and How to Fix Them

When using lvresize, you might encounter errors. Here are some common ones and solutions:

- **"Insufficient free space"**: Check your volume group free space with `vgdisplay`. You may need to add physical volumes.
- **"Filesystem is mounted" (when shrinking)**: Unmount the filesystem before shrinking.
- **"Filesystem too large"**: Shrink the filesystem before shrinking the volume.
- **"Device busy"**: Close any processes using the volume or unmount it.
- **"Cannot resize xfs filesystem smaller"**: XFS only supports growing, not shrinking. Use a different filesystem if shrinking is needed.

## Best Practices for Using lvresize

To keep your system safe and efficient, follow these best practices:

- Always **backup** before resizing.
- Use `lvresize -r` when possible to resize filesystem automatically.
- Avoid shrinking XFS filesystems.
- Monitor disk usage regularly with `df` and `lvdisplay`.
- Use `lvextend` or `lvreduce` commands as alternatives for simple resizing.
- Test commands with `--test` before applying changes.
- Keep your system updated to benefit from the latest LVM improvements.

## Example: Resizing a Logical Volume Step-by-Step

Let’s say you want to increase your logical volume `/dev/vg1/data` by 15GB.

1. Check free space:

```bash
vgdisplay vg1
```

2. Resize the volume:

```bash
sudo lvresize -L +15G /dev/vg1/data
```

3. Resize the filesystem (ext4):

```bash
sudo resize2fs /dev/vg1/data
```

4. Verify:

```bash
df -h /data
```

This simple example shows how lvresize works in practice.

## Conclusion

Using lvresize in Linux gives you powerful control over your storage. You can easily grow or shrink logical volumes to match your needs. Remember to prepare carefully by backing up data and checking filesystem health. Follow the right steps for increasing or decreasing volume size, and use options like `-r` to simplify the process.

With these tips and commands, you can confidently manage your Linux storage with lvresize. It’s a valuable skill for system administrators and anyone working with Linux disks.

---

### FAQs

#### What is the difference between lvresize and lvextend?

Lvextend only increases the size of a logical volume, while lvresize can both increase and decrease the size. Lvresize is more versatile for managing volume sizes.

#### Can I shrink an XFS filesystem with lvresize?

No, XFS filesystems do not support shrinking. You must back up data, recreate the filesystem with a smaller size, and restore the data.

#### How do I check free space in my volume group?

Use the command `vgdisplay` and look for the "Free PE / Size" field to see available space for resizing.

#### Is it safe to resize a mounted logical volume?

You can safely grow some filesystems while mounted, but shrinking usually requires unmounting to avoid data loss.

#### What does the `-r` option do in lvresize?

The `-r` or `--resizefs` option automatically resizes the filesystem after resizing the logical volume, simplifying the process.
