Appearance
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。
3.1 使用 fdisk
进行分区
- 选择磁盘(如
/dev/sdb
)
bash
sudo fdisk /dev/sdb
- 在
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 逻辑卷
- 创建物理卷(PV)
bash
# 创建分区
sudo parted /dev/sdb
mklabel gpt
mkpart primary 0% 100%
# 创建物理卷
sudo pvcreate /dev/sdb1
- 创建卷组(VG)
bash
sudo vgcreate my_vg /dev/sdb1
- 创建逻辑卷(LV)
bash
# 创建一个大小为 2GB 的逻辑卷(LV)
sudo lvcreate -L 2G -n my_lv my_vg
- 格式化逻辑卷
bash
# 格式化逻辑卷为 ext4 文件系统
sudo mkfs.ext4 /dev/my_vg/my_lv
- 挂载逻辑卷
bash
# 创建挂载点
sudo mkdir /mnt/lvm_storage
# 挂载逻辑卷到 /mnt/lvm_storage
sudo mount /dev/my_vg/my_lv /mnt/lvm_storage
6.3 扩展 LVM 逻辑卷
- 扩展逻辑卷大小
bash
# 扩展逻辑卷大小 3GB
sudo lvextend -L +3G /dev/my_vg/my_lv
- 调整文件系统
bash
# 调整 ext4 文件系统以适应扩展后的逻辑卷
sudo resize2fs /dev/my_vg/my_lv
TIP
如果物理卷(PV)空间不足,向卷组(VG)添加新的物理卷(PV)即可