Storage and Logical Volume Management
Overview
- What you’ll learn: How to manage block devices, create filesystems, configure mount points, and use Logical Volume Management (LVM).
- Prerequisites: Lesson 7 – Text Processing and Shell Scripting
- Estimated reading time: 20 minutes
Introduction
Storage management is a critical responsibility for Linux system administrators. Servers frequently need additional disk space, filesystem resizing, or reorganization of storage resources. Linux provides powerful tools for working with block devices and the Logical Volume Manager (LVM), which adds a flexible abstraction layer between physical disks and filesystems.
In this lesson, you will learn how to inspect and partition disks, create and mount filesystems, configure persistent mounts through /etc/fstab, and leverage LVM for dynamic storage management including volume resizing and snapshots.
Block Devices
Block devices represent storage hardware in Linux. The kernel names them sequentially: /dev/sda, /dev/sdb, etc. for SCSI/SATA disks, and /dev/nvme0n1 for NVMe drives.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 48.5G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 25G 0 lvm /
sdb 8:16 0 100G 0 disk
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disklabel type: gpt
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 3147775 2097152 1G Linux filesystem
/dev/sda3 3147776 104855551 101707776 48.5G Linux filesystem
Partitioning with fdisk and parted
# Interactive partitioning with fdisk (MBR or GPT)
$ sudo fdisk /dev/sdb
Command (m for help): n # New partition
Command (m for help): p # Print partition table
Command (m for help): w # Write changes and exit
# Non-interactive partitioning with parted
$ sudo parted /dev/sdb --script mklabel gpt
$ sudo parted /dev/sdb --script mkpart primary ext4 0% 100%
Filesystems
After creating a partition, you must format it with a filesystem before use:
$ sudo mkfs.ext4 /dev/sdb1 # Create ext4 filesystem
$ sudo mkfs.xfs /dev/sdb1 # Create XFS filesystem
$ sudo blkid /dev/sdb1 # Show filesystem type and UUID
/dev/sdb1: UUID="a1b2c3d4-..." TYPE="ext4" PARTUUID="..."
$ sudo tune2fs -l /dev/sdb1 | head -10 # Show ext4 filesystem details
$ sudo xfs_info /dev/sdb1 # Show XFS filesystem details
- ext4: The default Linux filesystem. Supports volumes up to 1 EiB, journaling, and online resizing.
- XFS: A high-performance filesystem excellent for large files. Default on RHEL-based systems. Supports online growing but not shrinking.
Mounting and Unmounting
$ sudo mkdir /mnt/data
$ sudo mount /dev/sdb1 /mnt/data # Mount the filesystem
$ df -h /mnt/data # Verify mount
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 98G 60M 93G 1% /mnt/data
$ sudo umount /mnt/data # Unmount
Persistent Mounts with /etc/fstab
To make mounts persist across reboots, add entries to /etc/fstab:
$ cat /etc/fstab
# <filesystem> <mount> <type> <options> <dump> <pass>
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data ext4 defaults 0 2
UUID=b2c3d4e5-f6a7-8901-bcde-f12345678901 /mnt/logs xfs defaults,noatime 0 2
$ sudo mount -a # Mount all entries in fstab
$ sudo findmnt --verify # Verify fstab syntax
Logical Volume Management (LVM)
LVM adds a flexible layer between physical disks and filesystems, allowing you to resize volumes, add disks, and create snapshots without downtime.
LVM Concepts
- Physical Volume (PV): A disk or partition prepared for LVM use.
- Volume Group (VG): A pool of storage created from one or more PVs.
- Logical Volume (LV): A virtual partition carved from a VG. This is what you format and mount.
# Step 1: Create Physical Volumes
$ sudo pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 100.00g 100.00g
/dev/sdc lvm2 --- 100.00g 100.00g
# Step 2: Create a Volume Group
$ sudo vgcreate data-vg /dev/sdb /dev/sdc
Volume group "data-vg" successfully created
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
data-vg 2 0 0 wz--n- 199.99g 199.99g
# Step 3: Create Logical Volumes
$ sudo lvcreate -L 50G -n app-lv data-vg
Logical volume "app-lv" created.
$ sudo lvcreate -l 100%FREE -n logs-lv data-vg # Use all remaining space
Logical volume "logs-lv" created.
$ sudo lvs
LV VG Attr LSize Pool
app-lv data-vg -wi-a----- 50.00g
logs-lv data-vg -wi-a----- 149.99g
Formatting and Mounting LVM Volumes
$ sudo mkfs.ext4 /dev/data-vg/app-lv
$ sudo mkfs.xfs /dev/data-vg/logs-lv
$ sudo mkdir -p /srv/app /srv/logs
$ sudo mount /dev/data-vg/app-lv /srv/app
$ sudo mount /dev/data-vg/logs-lv /srv/logs
Extending and Reducing Volumes
# Extend a logical volume and resize the filesystem
$ sudo lvextend -L +20G /dev/data-vg/app-lv
$ sudo resize2fs /dev/data-vg/app-lv # For ext4
$ sudo xfs_growfs /srv/logs # For XFS (use mount point)
# Reduce an ext4 volume (must unmount first)
$ sudo umount /srv/app
$ sudo e2fsck -f /dev/data-vg/app-lv
$ sudo resize2fs /dev/data-vg/app-lv 40G
$ sudo lvreduce -L 40G /dev/data-vg/app-lv
$ sudo mount /dev/data-vg/app-lv /srv/app
LVM Snapshots
$ sudo lvcreate -s -n app-snap -L 5G /dev/data-vg/app-lv
Logical volume "app-snap" created.
$ sudo mkdir /mnt/snapshot
$ sudo mount -o ro /dev/data-vg/app-snap /mnt/snapshot
# After backup/verification, remove the snapshot
$ sudo umount /mnt/snapshot
$ sudo lvremove /dev/data-vg/app-snap
Key Takeaways
- Use
lsblk,fdisk, andpartedto inspect and partition block devices. - ext4 and XFS are the most common Linux filesystems; create with
mkfs.ext4ormkfs.xfs. - Mount filesystems with
mount; make mounts persistent through/etc/fstabusing UUIDs. - LVM provides flexible storage: Physical Volumes (PV) form Volume Groups (VG), which contain Logical Volumes (LV).
lvextend+resize2fs/xfs_growfslets you grow volumes online without downtime.- LVM snapshots provide point-in-time copies useful for backups and testing.
What’s Next
In Lesson 9, you will learn about Scheduling and Automation — how to use cron, systemd timers, and other tools to automate recurring tasks.
繁體中文
概述
- 學習目標:學習如何管理區塊裝置、建立檔案系統、設定掛載點,以及使用邏輯卷管理 (LVM)。
- 先決條件:第 7 課 – 文字處理和 Shell 腳本
- 預計閱讀時間:20 分鐘
簡介
儲存管理是 Linux 系統管理員的重要職責。伺服器經常需要額外的磁碟空間、檔案系統調整或儲存資源重組。Linux 提供了強大的工具來處理區塊裝置,而邏輯卷管理器 (LVM)在實體磁碟和檔案系統之間增加了一個靈活的抽象層。
區塊裝置
$ lsblk # 列出區塊裝置
$ sudo fdisk -l /dev/sda # 列出分割區資訊
使用 fdisk 和 parted 分割
$ sudo parted /dev/sdb --script mklabel gpt
$ sudo parted /dev/sdb --script mkpart primary ext4 0% 100%
檔案系統
$ sudo mkfs.ext4 /dev/sdb1 # 建立 ext4 檔案系統
$ sudo mkfs.xfs /dev/sdb1 # 建立 XFS 檔案系統
- ext4:預設的 Linux 檔案系統。支援日誌和線上調整大小。
- XFS:高效能檔案系統,適合大檔案。支援線上擴展但不支援縮小。
掛載和卸載
$ sudo mount /dev/sdb1 /mnt/data # 掛載檔案系統
$ sudo umount /mnt/data # 卸載
使用 /etc/fstab 持久化掛載
要使掛載在重新開機後持續,需在 /etc/fstab 中新增條目,使用 UUID 而非裝置名稱。
邏輯卷管理 (LVM)
LVM 在實體磁碟和檔案系統之間增加了一個靈活的層,允許您在不停機的情況下調整卷大小、新增磁碟和建立快照。
LVM 概念
- 實體卷 (PV):為 LVM 準備的磁碟或分割區。
- 卷群組 (VG):由一個或多個 PV 建立的儲存池。
- 邏輯卷 (LV):從 VG 劃分出的虛擬分割區。這是您格式化和掛載的對象。
$ sudo pvcreate /dev/sdb # 建立實體卷
$ sudo vgcreate data-vg /dev/sdb # 建立卷群組
$ sudo lvcreate -L 50G -n app-lv data-vg # 建立邏輯卷
擴展和縮減卷
$ sudo lvextend -L +20G /dev/data-vg/app-lv
$ sudo resize2fs /dev/data-vg/app-lv # ext4
$ sudo xfs_growfs /srv/logs # XFS
LVM 快照
$ sudo lvcreate -s -n app-snap -L 5G /dev/data-vg/app-lv
重點摘要
- 使用
lsblk、fdisk、parted檢查和分割區塊裝置。 - ext4 和 XFS 是最常見的 Linux 檔案系統。
- 使用
mount掛載;透過/etc/fstab使用 UUID 實現持久化。 - LVM 提供靈活的儲存:PV 組成 VG,VG 包含 LV。
lvextend可線上擴展卷而無需停機。- LVM 快照提供即時副本,適用於備份和測試。
下一步
在第 9 課中,您將學習排程和自動化——如何使用 cron、systemd 計時器和其他工具來自動化循環任務。
日本語
概要
- 学習内容:ブロックデバイスの管理、ファイルシステムの作成、マウントポイントの設定、論理ボリューム管理 (LVM) の使用。
- 前提条件:レッスン7 – テキスト処理とシェルスクリプト
- 推定読了時間:20分
はじめに
ストレージ管理は Linux システム管理者の重要な責任です。サーバーでは追加のディスク容量、ファイルシステムのリサイズ、ストレージリソースの再編成が頻繁に必要になります。論理ボリュームマネージャー (LVM)は物理ディスクとファイルシステムの間に柔軟な抽象化レイヤーを追加します。
ブロックデバイス
$ lsblk # ブロックデバイスの一覧
$ sudo fdisk -l /dev/sda # パーティション情報の表示
fdisk と parted でパーティショニング
$ sudo parted /dev/sdb --script mklabel gpt
$ sudo parted /dev/sdb --script mkpart primary ext4 0% 100%
ファイルシステム
$ sudo mkfs.ext4 /dev/sdb1 # ext4 ファイルシステムを作成
$ sudo mkfs.xfs /dev/sdb1 # XFS ファイルシステムを作成
- ext4:デフォルトの Linux ファイルシステム。ジャーナリングとオンラインリサイズをサポート。
- XFS:大きなファイルに優れた高性能ファイルシステム。オンライン拡張は可能だが縮小は不可。
マウントとアンマウント
$ sudo mount /dev/sdb1 /mnt/data # ファイルシステムをマウント
$ sudo umount /mnt/data # アンマウント
/etc/fstab で永続マウント
再起動後もマウントを維持するには、UUID を使用して /etc/fstab にエントリを追加します。
論理ボリューム管理 (LVM)
LVM の概念
- 物理ボリューム (PV):LVM 用に準備されたディスクまたはパーティション。
- ボリュームグループ (VG):1つ以上の PV から作成されたストレージプール。
- 論理ボリューム (LV):VG から切り出された仮想パーティション。
$ sudo pvcreate /dev/sdb # 物理ボリュームを作成
$ sudo vgcreate data-vg /dev/sdb # ボリュームグループを作成
$ sudo lvcreate -L 50G -n app-lv data-vg # 論理ボリュームを作成
ボリュームの拡張と縮小
$ sudo lvextend -L +20G /dev/data-vg/app-lv
$ sudo resize2fs /dev/data-vg/app-lv # ext4 の場合
$ sudo xfs_growfs /srv/logs # XFS の場合
LVM スナップショット
$ sudo lvcreate -s -n app-snap -L 5G /dev/data-vg/app-lv
重要ポイント
lsblk、fdisk、partedでブロックデバイスを検査・パーティション分割。- ext4 と XFS が最も一般的な Linux ファイルシステム。
mountでマウント。/etc/fstabで UUID を使用して永続化。- LVM は柔軟なストレージを提供:PV が VG を形成し、VG が LV を含む。
lvextendでダウンタイムなしにオンラインでボリュームを拡張可能。- LVM スナップショットはバックアップやテストに有用なポイントインタイムコピーを提供。
次のステップ
レッスン9では、スケジューリングと自動化について学びます。cron、systemd タイマー、その他のツールを使用して定期的なタスクを自動化する方法を学びます。