Skip to content

Linux 磁盘管理

1. 介绍

在 Ubuntu 中,磁盘管理是系统维护和数据存储的核心任务之一。需掌握创建和调整分区、挂载文件系统以及进行磁盘监控。此外,Ubuntu 还支持逻辑卷管理(LVM)

2. 查看磁盘信息

2.1 使用 lsblk

  • lsblk 命令用于列出所有块设备及其挂载点
bash
ubuntu@ubuntu:~$ lsblk
NAME                      MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0  40G  0 disk
├─sda1                      8:1    0   1M  0 part
├─sda2                      8:2    0   2G  0 part /boot
└─sda3                      8:3    0  38G  0 part
  └─ubuntu--vg-ubuntu--lv 252:0    0  19G  0 lvm  /
sr0                        11:0    1   3G  0 rom
  • lsblk 输出表头
列名含义
NAME设备名称(磁盘、分区或逻辑卷)。
MAJ:MIN设备的主次编号(用于标识设备)。
RM是否为可移动设备(1 表示可移动,如 U 盘,0 表示固定硬盘)。
SIZE设备或分区的大小。
RO设备是否为只读(1 表示只读,0 表示可写)。
TYPE设备类型(disk 代表物理磁盘,part 代表分区,lvm 代表 LVM 逻辑卷,rom 代表光驱设备)。
MOUNTPOINTS该设备或分区的挂载点(如 //boot 等)。

2.2 使用 fdisk

fdisk 命令可以列出磁盘的分区表。

bash
ubuntu@ubuntu:~$ sudo fdisk -l
Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D8A88619-DBE1-4A0B-B49A-9F30B743E08E

Device       Start      End  Sectors Size Type
/dev/sda1     2048     4095     2048   1M BIOS boot
/dev/sda2     4096  4198399  4194304   2G Linux filesystem
/dev/sda3  4198400 83884031 79685632  38G Linux filesystem


Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 19 GiB, 20396900352 bytes, 39837696 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

2.3 使用 df

df 命令用于查看磁盘使用情况。

bash

ubuntu@ubuntu:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              387M  1.6M  386M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   19G  6.3G   12G  36% /
tmpfs                              1.9G     0  1.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G   96M  1.7G   6% /boot
tmpfs                              387M   12K  387M   1% /run/user/1000

3. 磁盘分区

VMware 添加 10GB 硬盘,用于分区测试。系统默认识别为 sdb。

sdb

3.1 使用 fdisk 进行分区

  1. 选择磁盘(如 /dev/sdb
bash
sudo fdisk /dev/sdb
  1. fdisk 交互界面中输入以下命令:
    • n:新建分区
    • p:创建主分区
    • w:保存更改并退出

3.2 使用 parted 进行 GPT 分区

parted 是专为 GPT 设计的,建议使用 parted

bash

ubuntu@ubuntu:~$ sudo parted /dev/sdb
[sudo] password for ubuntu:
GNU Parted 3.6
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary ext4 0% 100%
(parted) quit
Information: You may need to update /etc/fstab.

# 如需创建多分区使用如下方式
mkpart primary ext4 0% 10GB    # 第一个分区,大小为 10GB
mkpart primary ext4 10GB 25GB   # 第二个分区,大小为 15GB
mkpart primary ext4 25GB 100%   # 第三个分区,使用剩余空间

# 删除分区

ubuntu@ubuntu:~$ sudo parted /dev/sdb
GNU Parted 3.6
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) rm 1
(parted) quit
Information: You may need to update /etc/fstab.

4. 格式化分区

在分区后,需要格式化文件系统。

4.1 格式化为 ext4(推荐使用 ext4)

bash

ubuntu@ubuntu:~$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 2620928 4k blocks and 655360 inodes
Filesystem UUID: eefcb042-e8cd-44a0-ba05-bf52ecc82963
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

# 查看文件系统
ubuntu@ubuntu:~$ lsblk -f
NAME                      FSTYPE      FSVER            LABEL                           UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1
├─sda2                    ext4        1.0                                              8db427dc-dd23-4b75-bdc0-384f614c8df7      1.7G     5% /boot
└─sda3                    LVM2_member LVM2 001                                         otg3H2-E85w-7xp2-Ktsx-pE3Q-sIai-2LHQz4
  └─ubuntu--vg-ubuntu--lv ext4        1.0                                              e7140295-9f9e-42ed-8acc-6a4f2e2579df     11.3G    34% /
sdb
└─sdb1                    ext4        1.0                                              eefcb042-e8cd-44a0-ba05-bf52ecc82963
sr0                       iso9660     Joliet Extension Ubuntu-Server 24.04.2 LTS amd64 2025-02-16-22-49-22-00

4.2 格式化为 NTFS(适用于跨平台存储)

bash
sudo mkfs.ntfs /dev/sdb1

4.3 格式化为 exFAT(适用于大文件存储)

bash
sudo mkfs.exfat /dev/sdb1

5. 挂载与卸载磁盘

5.1 挂载磁盘

bash
# 1. 创建挂载点
sudo mkdir /mnt/mydisk
# 2. 挂载分区
```bash
# 生成 UUID
 sudo blkid /dev/sdb1
/dev/sdb1: UUID="eefcb042-e8cd-44a0-ba05-bf52ecc82963" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="d7aac338-29c0-4f84-8e3d-faebb6d3de24"

sudo vim /etc/fstab
UUID=eefcb042-e8cd-44a0-ba05-bf52ecc82963 /mnt/mydisk ext4 defaults 0 2

defaults:使用系统的默认挂载选项。
0:表示这个分区在备份时不会被 dump 工具备份。
2:表示分区在启动时会被挂载,并且其挂载顺序排在根分区之后。根分区通常是 1。

5.2 卸载磁盘

bash
sudo umount /mnt/mydisk

6. 逻辑卷管理(LVM)

LVM 是 Linux 系统中用于管理磁盘的工具,它允许你对磁盘空间进行动态分配和管理,可以方便地进行分区、扩展和缩小卷组(VG)、逻辑卷(LV)等操作。

6.2 创建 LVM 逻辑卷

  1. 创建物理卷(PV)
bash
# 创建分区
sudo parted /dev/sdb 
mklabel gpt 
mkpart primary 0% 100%
# 创建物理卷
sudo pvcreate /dev/sdb1
  1. 创建卷组(VG)
bash
sudo vgcreate my_vg /dev/sdb1
  1. 创建逻辑卷(LV)
bash
# 创建一个大小为 2GB 的逻辑卷(LV)
sudo lvcreate -L 2G -n my_lv my_vg
  1. 格式化逻辑卷
bash
# 格式化逻辑卷为 ext4 文件系统
sudo mkfs.ext4 /dev/my_vg/my_lv
  1. 挂载逻辑卷
bash
# 创建挂载点
sudo mkdir /mnt/lvm_storage
# 挂载逻辑卷到 /mnt/lvm_storage
sudo mount /dev/my_vg/my_lv /mnt/lvm_storage

6.3 扩展 LVM 逻辑卷

  1. 扩展逻辑卷大小
bash
# 扩展逻辑卷大小 3GB
sudo lvextend -L +3G /dev/my_vg/my_lv
  1. 调整文件系统
bash
# 调整 ext4 文件系统以适应扩展后的逻辑卷
sudo resize2fs /dev/my_vg/my_lv

TIP

如果物理卷(PV)空间不足,向卷组(VG)添加新的物理卷(PV)即可