# LVM

> Source: Courseiva IT Certification Glossary — https://courseiva.com/glossary/lvm

## Quick definition

LVM is a tool that helps you manage disk storage more easily than traditional partitions. Instead of being stuck with fixed-sized partitions, you can group multiple physical disks together and create virtual storage spaces called logical volumes that can be resized or moved as needed. Think of it like a flexible storage pool where you can add or remove space without taking your system offline.

## Simple meaning

Imagine you have a large closet that you want to organize. With traditional partitions, it is like having fixed shelves that cannot be moved or resized once built. If you need more space on one shelf, you would have to empty the entire closet, rebuild the shelves, and then put everything back. That is a huge hassle. LVM works differently. It is like having a storage room with flexible bins and a magic labeling system. First, you have physical disks, which are like actual storage rooms you own. You combine these physical disks into a volume group, which is like designating a large area for all your bins to sit. Then, you carve out logical volumes from that group, which are like individual bins that can be labeled and resized on the fly. If you need a bigger bin for winter clothes, you can just grab extra space from the shared area without disturbing other bins. In computing terms, LVM decouples the physical storage hardware (the actual hard drives) from the logical storage view (how the operating system sees the storage). This means you can grow a filesystem, shrink it, or move it between disks without rebooting or reinstalling. It also lets you take snapshots of your data for backup purposes, mirror data across drives for redundancy, and even stripe data (spread it across multiple drives) for better performance. For system administrators, this flexibility is a lifesaver because it reduces downtime and simplifies capacity planning. Instead of guessing how much space a database will need two years from now, you can start small and add more storage on demand, as long as the underlying pool has enough room. LVM is a standard feature in most Linux distributions and is also available in some forms on other Unix-like systems. It uses a layered abstraction model: Physical Volumes (PVs) at the bottom, Volume Groups (VGs) in the middle, and Logical Volumes (LVs) at the top, which are then used to hold filesystems. This abstraction allows you to take actions that would be impossible with traditional partitioned disks, such as extending a filesystem while it is still mounted and in use.

## Technical definition

Logical Volume Manager (LVM) is a device mapper framework that provides logical volume management for the Linux kernel. It abstracts the physical storage layer by introducing three distinct layers: Physical Volumes (PVs), Volume Groups (VGs), and Logical Volumes (LVs). A Physical Volume is any block device, such as a partition on a hard disk (e.g., /dev/sda1) or an entire disk (e.g., /dev/sdb). LVM writes a label at the start of each PV, containing metadata about the volume group it belongs to and the physical extents (PEs) that make up the device. Physical extents are fixed-size chunks (typically 4 MiB) that serve as the atomic units of storage allocation. A Volume Group is created by combining one or more Physical Volumes into a single pooled storage resource. The VG acts as a reservoir of physical extents that can be allocated to logical volumes. The metadata describing the VG structure is stored on each PV, ensuring resilience against single-disk failure. Logical Volumes are the virtual block devices carved from the free extents in a Volume Group. They are exposed to the system as standard block devices (e.g., /dev/vg_name/lv_name) and can host any filesystem (ext4, XFS, Btrfs, or even raw swap). LVs can be resized dynamically: increasing the size requires adding free extents from the VG to the LV, then expanding the filesystem using a tool like resize2fs (for ext4) or xfs_growfs (for XFS). Shrinking is more complex and, for XFS, is not supported online. LVM also supports advanced features like snapshots, which create a copy-on-write (COW) point-in-time image of an LV; this is heavily used for backup and testing. Thin provisioning allows overcommitting storage by creating thin pools where LVs can grow up to a specified virtual size, with actual physical space allocated only as data is written. Another key feature is the ability to migrate data between physical disks online using pvmove, which moves physical extents from one PV to another without unmounting the filesystem. LVM also integrates with RAID (through LVM RAID or mdadm) and with device mapper multipathing for enterprise storage environments. In terms of performance, LVM does introduce a small overhead due to the mapping layers and memory copies, but on modern hardware it is usually negligible. The LVM2 architecture replaced the original LVM1 with a more flexible metadata format (lvm2 metadata uses ASCII text, which is easier to recover and modify). The kernel component is the device mapper, and the user-space tools include lvm (the main command line tool), lvcreate, lvresize, vgcreate, vgextend, pvcreate, and pvs. When preparing for general IT certifications, understanding LVM is important because it appears in Linux administration objectives (e.g., CompTIA Linux+, LPIC-1, Red Hat Certified System Administrator). Questions often test your knowledge of the three-tier architecture, the commands used at each stage, and the ordering of operations when extending a filesystem. You should also be aware of caveats: filesystem type determines whether online resizing is possible, and snapshots require adequate free space in the COW pool.

## Real-life example

Think of a large apartment complex where tenants rent storage lockers in the basement. Normally, each locker is a fixed size, built from concrete walls. If a tenant needs a bigger locker, they must move everything out, knock down the wall, build a new wall, and then move back in. That is a lot of effort and causes a lot of disruption. Now imagine a different system: the basement is one big open space with stackable bins on wheels. Each tenant gets a certain number of bins, but the bins can be moved around, combined, or split. When a tenant at the end of the hall needs more space, the building manager just rolls a few extra bins over from the other side of the basement, where the storage is not currently being used. The tenant never even has to pack and unpack their belongings. In this analogy, the big open basement is the Volume Group, which pools together all available physical space. The bins are the Logical Volumes. The actual concrete floor and walls of the basement are the Physical Volumes (the actual hard drives). The building manager is the LVM software, which handles the allocation and movement of storage capacity. If one area of the basement develops a leak (a failing hard drive), the manager can move all the bins from that area to a dry area (migrate data to another PV) without the tenants even noticing. Similarly, if the complex buys extra basement space in an adjacent building (adds a new physical disk), the manager can merge that space into the big open basement and then allocate extra bins to tenants as needed. This flexibility is exactly what LVM gives system administrators: the ability to grow, shrink, move, and snapshot storage without taking servers offline. In traditional partitioning, you are stuck with the concrete walls you built during installation. With LVM, every partition is just a set of bins that can be rearranged on the fly.

## Why it matters

LVM matters in practical IT because it directly reduces downtime and simplifies storage management in production environments. In a large data center, server downtime can cost thousands of dollars per minute. With traditional partitions, if a database server runs out of space on its /var partition, you typically have to shut down the database, boot from recovery media, resize partitions (which may involve moving data around), and then bring the server back. This whole process can take hours. With LVM, you can simply add a new physical disk to the volume group, allocate more space to the logical volume holding /var, and then grow the filesystem while the database is still serving clients. No shutdown, no complex repartitioning. Similarly, if you need to replace a failing hard drive, LVM allows you to use the pvmove command to migrate data off the failing disk while the system continues operating. This makes LVM essential for high-availability environments. Another practical benefit is capacity planning. In many organizations, storage requirements grow unpredictably. A log partition might fill up faster than expected, or a user home directory might balloon because of new projects. LVM lets you shift unused space from one volume to another without touching the physical layout. This kind of agility is why most enterprise Linux installations use LVM for the root filesystem, swap, and critical data partitions. LVM snapshots are widely used for backups and testing. You can take a snapshot of a production volume, mount it read-only, and back it up while the original volume keeps changing. This guarantees a consistent backup without a lengthy downtime. Developers also use snapshots to create sandbox environments that start from a pristine state. LVM is also foundational for more advanced storage technologies like software RAID (LVM-managed RAID) and encryption (LUKS on top of LVM). For IT professionals, understanding LVM is not optional-it is a standard requirement for Linux administration roles. Even if you work primarily with cloud storage or containers (Docker, Kubernetes), the underlying host storage often uses LVM. Many cloud instances are deployed with LVM by default, and container images rely on LVM thin provisioning for efficient use of disk space.

## Why it matters in exams

LVM appears in several general IT certifications, and its importance varies by exam. For CompTIA Linux+ (XK0-005), LVM is a core objective under domain 2 (Storage Management). The exam objectives explicitly state that candidates must know how to create, extend, and reduce logical volumes, how to work with physical volumes and volume groups, and how to manage LVM snapshots. Question types include command recall (e.g., which command extends a logical volume?), scenario-based multiple choice (e.g., a server reports low disk space on /home; which two commands are needed to add space?), and troubleshooting (e.g., after adding a new disk, the administrator runs vgdisplay, but the new disk does not appear; what step was missed?). For LPIC-1 (101 and 102 exams), LVM is covered in topic 104 (Devices, Linux Filesystems, and the Filesystem Hierarchy Standard). The exam expects you to understand LVM architecture, be able to create and manage logical volumes, and know the differences between LVM and standard partitioning. In the LPIC-1 exam, you may see drag-and-drop ordering questions (place the steps for extending a logical volume in the correct sequence) or fill-in-the-blank commands. For Red Hat Certified System Administrator (RHCSA), LVM is a major component. The objectives include tasks like creating a volume group, creating a logical volume with a specified size, formatting it with a filesystem, mounting it persistently via /etc/fstab, and extending a logical volume while it is mounted. The RHCSA exam is performance-based, meaning you must actually perform these tasks on a live system. A typical task might be: 'Extend the logical volume lv_data to 3 GiB and ensure the filesystem inside it grows accordingly.' For CompTIA Server+ (SK0-005), LVM appears in a light supporting role, often as part of storage management and RAID concepts. The exam may contrast LVM with traditional RAID and mention that LVM offers more flexibility for resizing. For the AWS Certified Solutions Architect Associate, LVM is not directly tested but appears in the context of Amazon EBS volumes where customers often use LVM to aggregate multiple EBS volumes for larger filesystems or to achieve better throughput. In exam questions, remember that LVM is always about abstraction and resizing. Common traps include forgetting to resize the filesystem after extending the logical volume (the block device grows, but the filesystem does not automatically expand), trying to shrink an XFS filesystem (which is not supported), or confusing the order of commands (pvcreate before vgcreate, then lvcreate). Another common trap is assuming that adding a physical disk automatically makes it available to LVM-you must run pvcreate and then vgextend first.

## How it appears in exam questions

LVM questions appear in multiple formats across different exams. In multiple-choice questions, you might be asked: 'Which command creates a logical volume named lv_backup from the volume group vg_data?' The correct answer is 'lvcreate -n lv_backup -L 5G vg_data'. A distractor might be 'lvcreate -L 5G -n lv_backup' but missing the volume group name, or using the wrong option like '--size' incorrectly. Another question pattern: 'An administrator runs df -h and sees that /var is 95% full. The system uses LVM. Which sequence of commands will add 2 GB of space to /var without unmounting it?' The steps would include: 1) ensure the volume group has free extents (vgdisplay), 2) extend the logical volume (lvextend -L +2G /dev/vg_var/lv_var), and 3) resize the filesystem (resize2fs /dev/vg_var/lv_var for ext4). A common distractor would be extending the VG instead of the LV, or forgetting to resize the filesystem. In performance-based exams like RHCSA, you get a practical scenario: 'Your system currently has /dev/vda of 10 GiB. You need to configure LVM so that there is a volume group named vg_data with a logical volume named lv_data formatted as ext4 and mounted at /data. Later, after adding a new disk /dev/vdb of 5 GiB, extend vg_data with this new disk and increase lv_data to 7 GiB.' You would execute pvcreate, vgcreate, lvcreate, mkfs.ext4, mount, then later pvcreate /dev/vdb, vgextend vg_data /dev/vdb, lvextend, and resize2fs. Troubleshooting questions often present a scenario where someone added a disk but the volume group does not see it. The logical step is to check if pvcreate was run on the new disk, or if the disk has been partitioned correctly (LVM expects a partition type of 8e on MBR or something similar on GPT). Another troubleshooting scenario: a snapshot runs out of space and becomes invalid (COW overflow). The question asks why the snapshot is inaccessible and how to prevent it. The answer is that the snapshot pool filled up because the original volume was heavily written to after the snapshot was taken; the solution is to allocate more space to the snapshot or create it with a larger size. Config-based questions may show you an /etc/fstab entry with a /dev/mapper path and ask you to interpret what it means (it indicates an LVM logical volume). You may also see questions about LVM metadata recovery using the vgcfbackup or vgcfgrestore commands. In all cases, the underlying principle is that LVM decouples logical and physical storage, so operations like resize, move, and snapshot are done at the logical level before interacting with the physical devices.

## Example scenario

You are a junior Linux administrator for a small e-commerce company. The web server runs on CentOS, and the root filesystem is on LVM with a 20 GB logical volume for / (root) and a 5 GB logical volume for /var. Over the last month, the /var volume has been filling up because of increased access logs. Today, a monitoring alert shows /var is at 92% capacity. The website is still serving customers, but you need to add space immediately to avoid downtime. You connect to the server and check the volume group using vgdisplay. You see that the volume group 'vg_system' has 5 GB of free space remaining from the total pool of 25 GB. You decide to allocate 2 GB from that free pool to the logical volume holding /var, which is /dev/vg_system/lv_var. You run lvextend -L +2G /dev/vg_system/lv_var, which extends the block device. Next, you need to resize the filesystem. Since /var uses the ext4 filesystem, you run resize2fs /dev/vg_system/lv_var. The command completes almost instantly because ext4 supports online resizing. Now df -h shows /var has an additional 2 GB of available space. The website never went down. A month later, another server needs a similar fix, but that server uses XFS on /srv. You extend the logical volume with lvextend, but then you try to run resize2fs and get an error. You remember that XFS requires the command xfs_growfs and that it can only grow, never shrink. You run xfs_growfs /srv, and the space is added. This scenario illustrates how LVM eliminates downtime and how knowing the filesystem type matters when resizing. Without LVM, you would have had to schedule a maintenance window, boot from a live CD, resize partitions, and risk data corruption. With LVM, it is a five-minute fix that does not affect users.

## Common mistakes

- **Mistake:** Forgetting to resize the filesystem after extending the logical volume
  - Why it is wrong: Extending the logical volume only increases the block device size. The filesystem still sees the old boundaries and will not use the new space until you explicitly resize it with a command like resize2fs or xfs_growfs.
  - Fix: Always run the appropriate filesystem resize command immediately after lvextend. For ext2/3/4, use resize2fs; for XFS, use xfs_growfs. Verify with df -h after.
- **Mistake:** Trying to shrink an XFS filesystem
  - Why it is wrong: XFS does not support online or offline shrinking. If you attempt to shrink the logical volume between the filesystem and the block device, you will corrupt the data.
  - Fix: Do not use LVM shrink with XFS. If you need a smaller filesystem, create a new smaller logical volume, back up the data, restore it, and then remove the old volume.
- **Mistake:** Confusing the order of LVM creation steps
  - Why it is wrong: The correct order is: create Physical Volume (pvcreate), create Volume Group (vgcreate), then create Logical Volume (lvcreate). Some learners try to create a VG directly on a disk without creating a PV first, which will fail.
  - Fix: Always start with pvcreate on the device, then vgcreate with the PV, then lvcreate from the VG. Use pvs, vgs, lvs to verify each step.
- **Mistake:** Assuming that adding a disk automatically makes it available to LVM
  - Why it is wrong: When you add a new physical disk to a system (e.g., in VMware or a new SATA drive), LVM does not know about it until you run pvcreate and then add it to a volume group with vgextend.
  - Fix: After adding a new disk, follow this exact sequence: 1) verify the disk appears with lsblk or fdisk -l, 2) run pvcreate /dev/sdX, 3) run vgextend your_vg /dev/sdX.
- **Mistake:** Not checking for free space in the volume group before attempting to extend a logical volume
  - Why it is wrong: If you try to extend an LV but the VG has no free extents, the command will fail. You might extend the wrong volume or waste time debugging.
  - Fix: Always run vgdisplay or vgs to check the Free PE / size before extending. If free space is insufficient, add a new PV to the VG first.

## Exam trap

{"trap":"The question asks: 'You need to add 5 GB of space to a logical volume named lv_data that uses XFS. After running lvextend -L +5G /dev/vg_data/lv_data, what additional step is required?' Many learners answer 'resize2fs /dev/vg_data/lv_data' because they remember that a filesystem resize is needed, but they forget that XFS requires xfs_growfs instead.","why_learners_choose_it":"Learners memorize the pattern 'extend the LV, then resize the filesystem' but do not memorize the specific commands for each filesystem type. They default to resize2fs because it is the most common.","how_to_avoid_it":"Always check the filesystem type before resizing. If the filesystem is XFS, use xfs_growfs with the mount point as the argument (e.g., xfs_growfs /mnt/data). If the filesystem is ext4, use resize2fs with the block device path. For exam preparation, memorize a quick reference: 'XFS uses xfs_growfs, ext4 uses resize2fs.'"}

## Commonly confused with

- **LVM vs RAID:** RAID (Redundant Array of Independent Disks) is focused on performance and redundancy by combining multiple physical disks at the block level, but it does not provide the ability to resize or snapshot volumes easily. LVM, on the other hand, is primarily about flexible volume management (resizing, snapshots, moving data) and can be used on top of RAID. They are complementary, not the same. (Example: With RAID 5, you get fault tolerance but cannot easily extend the array with a different-sized disk. With LVM, you can add any disk to the pool and resize volumes arbitrarily.)
- **LVM vs Disk Partitioning (fdisk):** Traditional partitioning using tools like fdisk or parted creates fixed-size partitions that cannot be resized without repartitioning the entire disk. LVM separates the logical view from the physical, allowing dynamic resizing. Also, LVM can span multiple physical disks, while a single partition cannot. (Example: With fdisk, you create /dev/sda1 (20GB) and later need 25GB; you must delete and recreate the partition, losing data. With LVM, you just extend the logical volume with lvextend.)
- **LVM vs Filesystem Snapshot vs. Backup:** An LVM snapshot is a point-in-time copy of a logical volume using copy-on-write. It is not a full backup and requires the original volume to be intact. A backup (like tar or dd) creates an independent archive that can be restored elsewhere. Many learners confuse snapshots with backups, but snapshots are for short-term consistent read-only views, not for disaster recovery. (Example: If you take an LVM snapshot and the original volume is corrupted, the snapshot may also be unusable. A backup stored on another disk would still be safe.)

## Step-by-step breakdown

1. **Prepare the Physical Volumes (PVs)** — Before LVM can manage a disk or partition, you must initialize it as a Physical Volume using the pvcreate command. This writes LVM metadata (a label and a list of physical extents) to the device. Without this step, LVM cannot recognize the device.
2. **Create a Volume Group (VG)** — A Volume Group is a pool of storage created by combining one or more Physical Volumes. Use vgcreate to create the VG, providing a name and listing the PVs to include. The VG tracks all free extents and allocated extents across the group.
3. **Create a Logical Volume (LV)** — From the free pool of extents in a Volume Group, you carve out Logical Volumes. Use lvcreate with options for size (-L), name (-n), and the volume group. The LV appears as a block device (e.g., /dev/vg_data/lv_data) and can hold a filesystem.
4. **Format the Logical Volume with a Filesystem** — After creating the LV, you must create a filesystem on it using mkfs (e.g., mkfs.ext4 or mkfs.xfs). This step prepares the block device to store actual files and directories. Without a filesystem, the LV is just raw space.
5. **Mount the Logical Volume** — Use the mount command to attach the LV to a directory in the filesystem hierarchy. To make the mount persistent across reboots, add an entry to /etc/fstab using the logical volume path (typically /dev/mapper/ or /dev/vg/lv).
6. **Extend the Logical Volume (if needed)** — When more space is required, use lvextend to add free extents from the Volume Group to the LV. Then run the appropriate filesystem resize command (resize2fs for ext4, xfs_growfs for XFS) to make the filesystem use the newly available space.
7. **Manage Snapshots and Data Migration** — LVM snapshots are created with lvcreate --snapshot. They use copy-on-write to preserve the original data at a specific point. Data migration across disks is done with pvmove, which relocates physical extents from one PV to another while the LV is online.

## Practical mini-lesson

LVM is one of the most powerful tools a Linux system administrator can use, but it requires a clear mental model of the three layers: physical, volume group, logical. In practice, most enterprise servers are installed with LVM on the root disk by default. The first thing you should do when taking over a new server is check the LVM configuration. Use pvs to list all physical volumes, vgs to see volume groups, and lvs to list logical volumes. This gives you a quick overview of the storage layout. When adding a new disk, whether it is a hot-plug SCSI drive or a virtual disk in VMware, the process is always the same: scan SCSI bus (echo "- - -" > /sys/class/scsi_host/host0/scan or use rescan-scsi-bus.sh), verify with lsblk, then pvcreate, vgextend. One common mistake in real production is forgetting that LVM snapshots consume space. A snapshot starts with no data but grows as the original volume changes. If the snapshot pool fills up, the snapshot becomes invalid and the data becomes inaccessible. Always monitor snapshot usage with lvs -a (which shows the snapshot's data percentage). Another real-world scenario is disk replacement. Suppose a physical disk in a server is showing SMART errors. You can use pvmove /dev/sdc /dev/sdd to move all extents from the failing disk to a healthy one, then run vgreduce to remove the bad PV. This operation happens online, so the filesystems stay mounted. This is a huge advantage over traditional RAID where you might have to reconstruct the array. Also, when working with LVM on a system that uses VMware, be aware that taking an LVM snapshot of a virtual machine that also has VMware snapshots can lead to complexity. Use either one, not both, or ensure you understand the layering. For performance tuning, note that LVM does not add significant overhead, but if you use LVM over a RAID controller, you might want to align LVM extents to the underlying RAID stripe size for optimal performance. This is done by specifying the physical extent size when creating the VG (the default 4 MiB works for most cases). For certification exams, practice the commands in a lab environment. Create a virtual machine with two small disks. Practice creating PVs, VGs, LVs, formatting, mounting, extending, and then taking and removing snapshots. The more you practice these commands, the more natural they become. One final practical tip: always use the /dev/mapper/ path for persistent references in /etc/fstab, because LVM device paths in /dev/vg/lv may change if the system restarts and renames volume groups. The mapper path is stable.

## Memory tip

Remember PV-VG-LV as 'Phyiscals, Volume Group, Logic' in that order. For resizing: extend LV first, then filesystem. For XFS, use 'xfs_growfs'; for ext, use 'resize2fs'.

## FAQ

**Can I use LVM on Windows?**

LVM is a Linux-specific technology. Windows has its own volume management features called Dynamic Disks and Storage Spaces, which offer similar abilities such as spanning disks and creating mirrored volumes, but they are not the same as LVM.

**Does LVM affect performance?**

LVM introduces a small overhead because the device mapper layer translates logical addresses to physical ones. However, on modern hardware, this overhead is usually negligible (less than 5% in most workloads). For heavy I/O scenarios, using LVM with RAID or tuning physical extent sizes can mitigate any impact.

**Can I shrink a logical volume that uses XFS?**

No, XFS does not support shrinking at all. You cannot shrink an XFS filesystem online or offline. If you need to reduce the size of a volume using XFS, you must create a new smaller logical volume, back up the data, restore it, and then remove the old volume.

**What happens if I delete a snapshot accidentally?**

If you delete an LVM snapshot, only the snapshot itself is removed. The original logical volume and its data remain intact. However, any data that was only in the snapshot (changes made after the snapshot) will be lost.

**How do I know if my system is using LVM?**

Run the command 'lvs' (list logical volumes), 'vgs' (list volume groups), or check the output of 'df -h' for paths like /dev/mapper/ or /dev/vg_name/lv_name. You can also see block devices with 'lsblk' which will show LVM as a type.

**Do I need to unmount a filesystem to extend it with LVM?**

No, you can extend both the logical volume and the filesystem (for ext4 and XFS) while it is mounted. This is one of the main advantages of LVM. However, shrinking usually requires unmounting (and shrinking an XFS filesystem is not supported at all).

## Summary

LVM (Logical Volume Manager) is a storage abstraction layer for Linux that allows you to manage disk space with unprecedented flexibility. It introduces three layers: Physical Volumes (raw disks or partitions), Volume Groups (pools of storage), and Logical Volumes (virtual partitions). This architecture enables you to resize, move, create snapshots, and combine disks without requiring downtime or complex repartitioning. For IT professionals, mastering LVM is essential because it is a standard feature in enterprise Linux distributions and appears in major certifications such as CompTIA Linux+, LPIC-1, and RHCSA. The key skills you need include creating PVs, VGs, and LVs; extending an LV and the accompanying filesystem; taking and managing snapshots; and understanding the limitations of different filesystems (e.g., XFS cannot be shrunk). Common exam traps include forgetting to resize the filesystem after extending the LV, confusing the filesystem resize command (resize2fs vs. xfs_growfs), and mixing up the creation order. In real-world practice, LVM reduces downtime, simplifies capacity planning, and is the foundation for more advanced storage configurations. Whether you are preparing for a certification exam or managing production servers, a solid understanding of LVM will save you time and prevent critical errors. Remember the hierarchy: PVs become VGs, VGs hold LVs, and LVs host filesystems. With LVM, storage is no longer fixed-it is fluid and adaptable.

---

Practice questions and the full interactive page: https://courseiva.com/glossary/lvm
