[ Content contribution] Deepin23系统盘扩容
Tofloor
poster avatar
Routine6998
deepin
2024-12-17 17:47
Author

image.png
Deepin23系统盘扩容

背景

默认全盘安装后系统盘只有15G。计划对ext4文件系统系统盘进行扩容,这里记录下我的操作过程。part /很小
我的电脑没有网络,无法下载 Gparted,所以纯手搓的。

apple@apple-PC:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    1  28.9G  0 disk
├─sda1        8:1    1  28.8G  0 part /media/apple/Ventoy
└─sda2        8:2    1    32M  0 part
nvme0n1     259:0    0 953.9G  0 disk
├─nvme0n1p1 259:1    0   300M  0 part /boot/efi
├─nvme0n1p2 259:2    0   1.5G  0 part /boot
├─nvme0n1p3 259:3    0  15.7G  0 part [SWAP]
├─nvme0n1p4 259:4    0    15G  0 part /
└─nvme0n1p5 259:5    0 921.4G  0 part /var
                                      /root
                                      /home
                                      /opt
                                      /persistent

操作过程

操作原理

下面是示意图

|
|-------------系统盘------|-实际数据------------------------------------数据盘------------------------------|
1.数据盘调小数据盘尾部划出空闲
|-------------系统盘------|-实际数据--------|---------------------------------------空闲--------------------|
2.把数据挪动到新分区
|-------------系统盘------|-实际数据--------|实际数据_backup------|------------------空闲---------------------|
3.系统盘扩容
|-------------系统盘------|-空------------------|实际数据_backup------|-------------空闲----------------------|
|-------------系统盘------------------------------|实际数据_backup------|-----------空闲---------------------|
4.数据挪动到系统盘,再次优化空间
|-------------系统盘---实际数据_backup|----------------------------------------------空闲---------------------|
5..临时数据盘数据挪动到新数据盘
|-------------系统盘-------------------------------|-实际数据------------数据盘-------------------------------|

据盘调小数据盘尾部划出空闲,再把数据挪动到新分区,进行系统盘扩容。再把数据挪动到系统盘,再次优化空间,最后临时数据盘数据挪动到新数据盘。

知识点补漏

我操作前就有一疑问,为什么 fdisk操作分区,还要操作 resize2fs?分别都是操作什么?

分区表

分区表:计算机读取的磁盘开始位置,不包含任何文件数据,只是硬盘的布局信息。可以把它想象成硬盘的“目录”。

  • MBR分区表:支持最大4个分区,单个分区最大4T
  • GPT分区表:支持最大128个分区,单个分区最大18EB的大小

使用 fdisk -l /dev/xxx 可以查看deepin23分区表是 GPT类型

apple@apple-PC:~$ sudo fdisk -l /dev/nvme0n1 
Disk /dev/nvme0n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: KXG50ZNV1T02 NVMe TOSHIBA 1024GB  
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: AC3EFA76-A355-467B-8616-2EE1930A677C

Device             Start        End    Sectors   Size Type
/dev/nvme0n1p1      2048     616447     614400   300M EFI System
/dev/nvme0n1p2    616448    3762175    3145728   1.5G Linux filesystem
/dev/nvme0n1p3   3762176   36696063   32933888  15.7G Linux filesystem
/dev/nvme0n1p4  36696064  232031250  195335187  93.1G Linux filesystem
/dev/nvme0n1p5 232032256 2000408575 1768376320 843.2G Linux filesystem

文件系统

文件系统:文件系统位于分区之上,它负责组织和管理分区上的文件和目录。它定义了如何在分区上存储和检索数据,例如文件的命名、组织方式、权限控制等等。 你可以把它想象成分区上
的“文件夹”和“文件”的组织方式。

  • ext4:
  • NTFS:window使用的文件系统

分区表和文件系统的关系

想象一下一个公寓楼:

硬盘: 整栋公寓楼
分区表: 公寓楼的户型图,标明了每个单元(分区)的大小和位置。
分区: 每个单元(例如,一室一厅,两室一厅)
文件系统: 每个单元的内部装修和家具摆放方式。不同的单元可以采用不同的装修风格(不同的文件系统)。

逻辑卷

由于我没有分逻辑卷,这里不作介绍

操作步骤

由于不是虚拟机,操作步骤只做简单简述,操作过程无法记录。

制作live系统

文章很多,不介绍。
Deepin的live并不直接进入系统,需要选择语言和地区,看起来很像进入了安装的live。

1. 数据盘调小数据盘尾部划出空闲

这里是我的磁盘块

apple@apple-PC:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 953.9G  0 disk 
├─nvme0n1p1 259:1    0   300M  0 part /boot/efi
├─nvme0n1p2 259:2    0   1.5G  0 part /boot
├─nvme0n1p3 259:3    0  15.7G  0 part [SWAP]
├─nvme0n1p4 259:4    0  93.1G  0 part /
└─nvme0n1p5 259:5    0 843.2G  0 part /var
                                      /root
                                      /opt
                                      /home
                                      /persistent
# 确认磁盘分布
lsblk  

# 操作nvme0n1p5 ext4文件系统:缩小到50G
resize2fs /dev/nvme0n1p5 48G  

# 操作nvme0n1分区表,缩小到50G
fdisk /dev/nvme0n1
输入  p 记录下分区的开头和结尾
输入  d 删除分区5
输入  n 重建分区5
分区的开头必须和删除的分区5开头对应(默认应该就是分区5的开头),结束是+50G
输入  w

# 修复nvme0n1p5文件系统
e2fsck -f /dev/nvme0n1p5
# 把文件系统和磁盘对其
resize2fs /dev/nvme0n1p5

目前磁盘是这样

|-------------系统盘------|-实际数据--------|--------------------------空闲-------------------------------------------|

2.把数据挪动到新分区

# 新建nvme0n1p6分区
fdisk /dev/nvme0n1
# 格式化nvme0n1p6分区
sudo mkfs.ext4 /dev/nvme0n1p6


# 挂在新旧分区
sudo mkdir /mnt/old
sudo mkdir /mnt/new
sudo mount /dev/nvme0n1p5 /mnt/old/
sudo mount /dev/nvme0n1p6 /mnt/new/

# 把数据挪动到新分区
rsync -aAXv /mnt/old/ /mnt/new/
-a 选项表示归档模式,复制所有文件和目录,保留权限和时间戳。
-A 选项表示复制所有属性。
-X 选项表示保持扩展属性。
-v 选项表示详细模式,显示复制进度。

3.系统盘扩容

# 删除nvme0n1p5分区
fdisk /dev/nvme0n1
    操作忽略

# 扩容nvme0n1p4分区
sudo parted /dev/nvme0n1
    输入盘
    输入大小50G

# 扩容nvme0n1p4文件系统
e2fsck -f /dev/nvme0n1p4
resize2fs /dev/nvme0n1p4

现在是这样

|-------------系统盘------------------------------|实际数据_backup------|------------------空闲-----------------|

4. 数据挪动到系统盘,再次优化空间

sudo mount /dev/nvme0n1p4 /mnt/new/
sudo mount /dev/nvme0n1p6 /mnt/old/

# 同步数据到系统盘
sudo rsync -aAXv /mnt/old/ /mnt/new/data_backup/

#删除nvme0n1p6
fdisk /dev/nvme0n1
    操作忽略

现在是这样的
|-------------系统盘---实际数据_backup|---------------------------空闲------------------------------------------|

5. 临时数据盘数据挪动到新数据盘

#重建nvme0n1p5
fdisk /dev/nvme0n1
    操作忽略

# 文件系统格式化
sudo mkfs.ext4 /dev/nvme0n1p5

# 时数据盘数据挪动到新数据盘
sudo mount /dev/nvme0n1p4 /mnt/old/
sudo mount /dev/nvme0n1p5 /mnt/new/
sudo rsync -aAXv /mnt/old/data_backup/ /mnt/new/

通过blkid获取到新的nvme0n1p5 UUID 修改 /etc/fstab 即可

最终成果

见图片。。。。插入后跑最上了

Reply Favorite View the author
All Replies
昨夜的星辰
deepin
2024-12-17 18:31
#1

我记得市面上PE系统一般会有DiskGenius,支持调整EXT4的分区的

直接调整各盘大小,调完后记下各区UUID,直接编辑更新/etc/fstab就可以了,相对简单一点

纯命令操作我有点慌,怕哪步输错命令把数据干没了

Reply View the author
晚秋(lateautumn)
Moderator
2024-12-17 18:32
#2

谢谢分享,收藏了。

Reply View the author
LEARCAT
deepin
2024-12-18 00:28
#3
昨夜的星辰

我记得市面上PE系统一般会有DiskGenius,支持调整EXT4的分区的

直接调整各盘大小,调完后记下各区UUID,直接编辑更新/etc/fstab就可以了,相对简单一点

纯命令操作我有点慌,怕哪步输错命令把数据干没了

我尝试过,到最后报错

Reply View the author
不会开车有驾照
deepin
2024-12-18 08:33
#4
昨夜的星辰

我记得市面上PE系统一般会有DiskGenius,支持调整EXT4的分区的

直接调整各盘大小,调完后记下各区UUID,直接编辑更新/etc/fstab就可以了,相对简单一点

纯命令操作我有点慌,怕哪步输错命令把数据干没了

这个不行吧,我试过,调整后系统起不来了

Reply View the author
昨夜的星辰
deepin
2024-12-18 11:48
#5
不会开车有驾照

这个不行吧,我试过,调整后系统起不来了

调完要更新fstab文件,不然是起不来的,因为调整后硬盘的UUID变了

Reply View the author
昨夜的星辰
deepin
2024-12-18 16:49
#6
LEARCAT

我尝试过,到最后报错

中午试了一下,直接调现在会在检查文件系统那一部检查出错误,但可能这步本身就是错的

后面用DG把分区备份到镜像文件,然后把分区格式化,可以自由调整大小,调完后再把镜像文件恢复回来

不过这样有个前置条件,需要有足够的闲置空间放镜像文件😂

Reply View the author