Study guide
13.2 Extend Existing Logical Volumes
Red Hat Certified System Administrator RHCSA
Track your progress as you read
Finished sections get a check mark.
1 Introduction & Exam Overview
1.1 Current Exam Facts 1.2 Lab Setup & Performance-Based Study Strategy
2 Essential Tools: Shell, Redirection & Text Analysis
2.1 Shell Prompt and Command Syntax 2.2 Input-Output Redirection and Pipes 2.3 grep and Regular Expressions for Text Analysis
3 Essential Tools: Remote Access, Users & Text Editing
3.1 Access Remote Systems Using SSH 3.2 Log In and Switch Users in Multiuser Targets 3.3 Create and Edit Text Files
4 Essential Tools: Files, Links & Archives
4.1 Create, Delete, Copy, and Move Files and Directories 4.2 Hard and Soft Links 4.3 Archive and Compress with tar, gzip, and bzip2
5 Essential Tools: Permissions & System Documentation
5.1 List, Set, and Change Standard ugo/rwx Permissions 5.2 System Documentation: man, info, and /usr/share/doc
6 Manage Software: RPM and Flatpak
6.1 Configure Access to RPM Repositories 6.2 Install and Remove RPM Software Packages 6.3 Configure Access to Flatpak Repositories 6.4 Install and Remove Flatpak Software Packages
7 Create Simple Shell Scripts
7.1 Conditional Execution: if, test, and [] 7.2 Looping Constructs for Files and Input 7.3 Process Script Inputs ($1, $2, and Beyond) 7.4 Process Shell Command Output in Scripts
8 Operate Running Systems: Boot and Recovery
8.1 Boot, Reboot, and Shut Down a System Normally 8.2 Boot Systems into Different Targets Manually 8.3 Interrupt the Boot Process to Gain Access
9 Operate Running Systems: Processes and Tuning
9.1 Identify and Kill CPU/Memory Intensive Processes 9.2 Adjust Process Scheduling 9.3 Manage Tuning Profiles
10 Operate Running Systems: Logs, Services & File Transfer
10.1 Locate and Interpret System Log Files and Journals 10.2 Preserve System Journals 10.3 Start, Stop, and Check Status of Network Services 10.4 Securely Transfer Files Between Systems
11 Configure Local Storage: Partitions and LVM
11.1 List, Create, and Delete Partitions on GPT Disks 11.2 Create and Remove Physical Volumes 11.3 Assign Physical Volumes to Volume Groups 11.4 Create and Delete Logical Volumes
12 Configure Local Storage: Mounting and Expansion
12.1 Mount File Systems at Boot by UUID or Label 12.2 Add Partitions, Logical Volumes, and Swap Non-Destructively
13 Create and Configure File Systems: Local FS and Permissions
13.1 Create, Mount, and Use VFAT, ext4, and XFS File Systems 13.2 Extend Existing Logical Volumes 13.3 Diagnose and Correct File Permission Problems
14 Create and Configure File Systems: NFS and autofs
14.1 Mount and Unmount Network File Systems Using NFS 14.2 Configure autofs
15 Deploy and Maintain: Scheduling, Services & Targets
15.1 Schedule Tasks with at, cron, and systemd Timers 15.2 Start, Stop, and Enable Services at Boot 15.3 Configure Systems to Boot into a Specific Target
16 Deploy and Maintain: Time, Software Updates & Bootloader
16.1 Configure Time Service Clients 16.2 Install and Update Software from CDN, Remote Repos, and Local Files 16.3 Modify the System Bootloader
17 Manage Basic Networking
17.1 Configure IPv4 and IPv6 Addresses 17.2 Configure Hostname Resolution 17.3 Configure Network Services to Start Automatically at Boot 17.4 Restrict Network Access Using firewalld and firewall-cmd
18 Manage Users and Groups
18.1 Create, Delete, and Modify Local User Accounts 18.2 Change Passwords and Adjust Password Aging 18.3 Create, Delete, and Modify Local Groups and Memberships 18.4 Configure Privileged Access
19 Manage Security: Firewall, umask & SSH Keys
19.1 Configure Firewall Settings with firewall-cmd and firewalld 19.2 Manage Default File Permissions 19.3 Configure Key-Based Authentication for SSH
20 Manage Security: SELinux Modes and Contexts
20.1 Set Enforcing and Permissive Modes for SELinux 20.2 List and Identify SELinux File and Process Contexts 20.3 Restore Default File Contexts
21 Manage Security: SELinux Ports and Booleans
21.1 Manage SELinux Port Labels 21.2 Use Boolean Settings to Modify SELinux Settings
13.2 Extend Existing Logical Volumes
Key Takeaways Explain This Topic AI
Extending an existing LV is two layers: grow the LV with lvextend (or lvresize), then grow the file system with xfs_growfs (XFS) or resize2fs (ext4).
Confirm free space in the volume group first (vgs VFree); if the VG is full, vgextend with a new PV before lvextend.
XFS grows online via xfs_growfs on the mountpoint; ext4 commonly uses resize2fs on the device (often online when mounted on modern RHEL—verify success with df).
lvextend -r can resize the FS in one step when supported for that FS; know both combined and explicit two-step methods for EX200.
Extending is non-destructive growth of an existing volume—do not confuse it with lvcreate of a new LV or with deleting/recreating the LV.
Last updated: August 2026
13.2 Extend Existing Logical Volumes
Quick Answer: Ensure the VG has free space ( vgs ), run lvextend on the existing LV, then grow the file system: xfs_growfs for XFS or resize2fs for ext4. Verify with lvs and df -h . Extending keeps data; recreating the LV does not.
Official skill
Under Create and configure file systems , EX200 expects you to extend existing logical volumes . Typical tasks:
- “Extend the logical volume that backs /data by 2G and make the space available to the file system.”
- “Grow vgapp/lvlogs to 5G total.”
- “Add free VG space to the LV mounted at /var/lib/app .”
This is not the same as:
- lvcreate a brand-new LV (add storage non-destructively),
- Only creating partitions,
Shrinking (rarely requested; XFS shrink is not a normal path).
You grow capacity in place and keep the file system and data.
Mental model: two sizes must match intent
- Layer What grows Tools
- Volume group free PE Pool of free extents vgextend if more PVs needed
- Logical volume Block device size seen by the FS lvextend , lvresize
- File system Usable space in df xfs_growfs , resize2fs
If you only lvextend and forget FS grow, lvs looks bigger but df -h stays small —a classic incomplete exam answer.
If you only try xfs_growfs without extending the LV, growth has nowhere to go.
- Step 0 — Inventory findmnt /data
- df -h /data
- sudo lvs -o name,vg_name,lv_size,lv_path
- sudo vgs -o name,size,free
- sudo pvs
- lsblk -f
- blkid $(findmnt -no SOURCE /data)
Know:
Which LV path backs the mount ( /dev/vg/lv or /dev/mapper/vg-lv ).
FSTYPE (xfs vs ext4)—chooses the grow tool.
How much VFree the VG has.
Whether the task wants +2G additional or resize to a final size.
- Ensure the VG has free space sudo vgs
- # VG #PV #LV #SN Attr VSize VFree
- # vgdata 1 1 0 wz--n- 20.00g 5.00g
If VFree is enough for the requested growth, proceed to lvextend .
- If VFree is too small: # New partition or disk already prepared as PV
- sudo pvcreate /dev/sdd1
- sudo vgextend vgdata /dev/sdd1
- sudo vgs
Do not lvremove existing volumes to “make free space” for an extend task.
- Extend the logical volume: lvextend
- Add a relative size sudo lvextend -L +2G /dev/vgdata/data
- sudo lvextend -L +512M /dev/mapper/vgdata-data
- Set an absolute size sudo lvextend -L 10G /dev/vgdata/data
- # grows up to 10G total (must be larger than current)
- Use extents / free pool sudo lvextend -l +100%FREE /dev/vgdata/data
- sudo lvextend -l +50%FREE /dev/vgdata/data
+100%FREE consumes all remaining VG free PE for that LV—valid when the task says use all free space; leave free PE if another LV must grow later.
lvresize sudo lvresize -L +1G /dev/vgdata/data
lvresize can extend or (dangerously) shrink with other flags. For EX200 growth tasks, lvextend communicates intent clearly.
Combined LV + FS resize ( -r / --resizefs ) sudo lvextend -r -L +2G /dev/vgdata/data
On supported setups, -r runs the appropriate FS grow after extending the LV. Still verify with df -h . If -r fails or you are unsure of FS type support in the moment, use the explicit two-step method below—it always shows clear intermediate state for troubleshooting.
- Grow the file system
- XFS — xfs_growfs
XFS is grown while mounted , targeting the mountpoint (not only the raw device habit from some ext tools): # LV already extended
- findmnt /data
- sudo xfs_growfs /data
# or:
- sudo xfs_growfs -d /data
- df -h /data
Unmounted XFS growth is not the normal RHEL admin path you practice for exams—keep it mounted, extend LV, xfs_growfs .
- ext4 — resize2fs sudo lvextend -L +2G /dev/vgdata/data
- sudo resize2fs /dev/vgdata/data
- df -h /data
On modern RHEL, online resize of mounted ext4 is commonly supported; if the tool demands offline, unmount first, resize2fs , remount—read the error message. Prefer the path that succeeds and leaves data intact. # Offline pattern only if required
- sudo umount /data
- sudo e2fsck -f /dev/vgdata/data # often recommended before offline shrink; for grow, follow man/error guidance
- sudo resize2fs /dev/vgdata/data
- sudo mount /data
For grow tasks, online resize2fs after lvextend is the usual happy path.
Matching tool to TYPE
- FSTYPE After lvextend
- xfs xfs_growfs /mountpoint
- ext4 resize2fs /dev/vg/lv
vfat Not a typical LVM data grow path on EX200; tasks almost always use XFS/ext4 on LVs lsblk -f /dev/vgdata/data
blkid /dev/vgdata/data
Wrong tool → confusing errors. Do not run xfs_growfs on ext4.
- Full exam sequences
- Scenario A — Add 2G to XFS /data
Task: The volume group has free space. Extend the LV for /data by 2 GiB and make space available. findmnt /data
- # SOURCE: /dev/mapper/vgdata-data
- sudo vgs
- sudo lvextend -L +2G /dev/vgdata/data
- sudo xfs_growfs /data
- df -h /data
- sudo lvs /dev/vgdata/data
- Scenario B — ext4 LV grow with -r sudo lvextend -r -L +1G /dev/vgapp/lvdb
- df -h /var/lib/db
If df unchanged, check whether -r ran and FS type; fall back to explicit resize2fs .
- Scenario C — VG full; need more room first sudo vgs
- # VFree 0
- lsblk
- sudo pvcreate /dev/sdc1
- sudo vgextend vgdata /dev/sdc1
- sudo lvextend -L +5G /dev/vgdata/data
- sudo xfs_growfs /data
- Scenario D — “Resize LV to 8G total” sudo lvs
- # currently 5.00g
- sudo lvextend -L 8G /dev/vgdata/data
- sudo xfs_growfs /data
- sudo lvs
- # 8.00g
Using +8G by mistake would try to add eight more gibibytes, not set total to 8G— read + versus absolute .
- Scenario E — Use all remaining free space sudo lvextend -l +100%FREE /dev/vgdata/data
- sudo xfs_growfs /data
- sudo vgs
- # VFree ~0
- Verification (grade yourself)
- Check Expect
- lvs New LV size matches task
- vgs VFree decreased by roughly the growth
- df -h on mount Size increased (not only lvs)
- Mount still works findmnt , existing files still present
- Data intact ls known files; no forced reformat
Optional practice reboot: LV size and FS size remain large—LVM metadata and FS geometry are on disk.
- Order of operations summary 1. Identify LV + FS type + mountpoint
- 2. Confirm VG free space (vgextend if needed)
- 3. lvextend / lvresize (grow LV)
- 4. xfs_growfs OR resize2fs (grow FS) — or lvextend -r if it succeeds
- 5. df -h + lvs verify
Never: mkfs on the LV to “apply” the new size. That destroys data and is the opposite of extend.
Stratis / VDO / thinp awareness
Stock EX200 study points emphasize classic LVM extend + FS grow. If a lab used exotic layouts, still start from findmnt , lvs , vgs . Do not introduce Stratis solely because free space is confusing—fix simple free PE first.
Common traps
LV extended, FS not grown — df unchanged; run xfs_growfs / resize2fs .
xfs_growfs /dev/vg/lv confusion — prefer the mounted path for XFS grow.
resize2fs on XFS — wrong tool.
lvextend -L 2G when LV is already 5G — absolute 2G is smaller → error; use +2G or a larger absolute.
No VG free space — extend VG first; do not wipe other LVs.
Extending the wrong LV — always map mount → SOURCE with findmnt .
Recreate with lvcreate instead of extend — loses the “existing” volume requirement.
Running mkfs after lvextend — data loss.
Shrinking by accident with lvresize negative sizes—avoid unless explicitly required and FS supports it.
100%FREE too early when two LVs both need growth—plan both sizes first.
Relationship to neighboring skills
- Skill Relationship
- Create LV Makes a new volume; extend grows an old one
- Add PV/VG capacity Feeds free PE so extend can succeed
- mkfs / mount Done at LV birth; extend assumes FS already exists
- fstab UUID Usually unchanged after extend—same FS UUID
UUID stability is a benefit of extend: you rarely rewrite fstab after a pure size increase.
Section checkpoint
You should map a mountpoint to its LV, confirm VG free space (extending the VG when needed), grow the LV with lvextend , grow XFS with xfs_growfs or ext4 with resize2fs (or a successful lvextend -r ), and prove success with both lvs and df -h without reformatting. That is the EX200 standard for extending existing logical volumes on RHEL 10.