问题环境 系统:Linux-Debian,启动方式:BIOS MBR 最初安装系统的时候只选用了50GB大小作为系统盘,使用半年后储存不够了,需要给系统 增加容量到100GB
root 终端命令行操作
通过执行 fdisk -l
命令来查看系统中的磁盘分区信息。
root@Debian:~# fdisk -l
Disk /dev/sda: 50 GiB, 53687091200 bytes, 132120576 sectors
Disk model: QEMU HARDDISK
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: dos
Disk identifier: 0x34510bc9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 102856703 102854656 49G 83 Linux
/dev/sda2 102858750 104855551 1996802 975M 5 Extended
/dev/sda5 102858752 104855551 1996800 975M 82 Linux swap / Solaris
root@Debian:~# df -h /
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 48G 45G 894M 99% /
可以看到Disklabel type 为dos,MBR分区格式,Type类型分区 /dev/sda1 是系统分区,大小为49GB,Extended扩展分区 975M, swap虚拟内存分区975MB
根据df -h /
命令,可以看到总容量48G,已用45G,仅剩余894M可用。
路径 | 类型 | 大小 |
---|---|---|
/dev/sda1 | Linux | 49GB |
/dev/sda2 | Extended | 975MB |
dev/sda3 | swap | 975MB |
添加一块新的硬盘(未进行任何格式化和分区)
查看新添加的磁盘
通过执行 fdisk -l
命令来查看系统中的磁盘分区信息。
可以看到多出了一个磁盘: /dev/sdb: 100 GiB
大小为100GB,这是我新添加的磁盘
root@Debian:~# fdisk -l
Disk /dev/sda: 50 GiB, 53687091200 bytes, 132120576 sectors
Disk model: QEMU HARDDISK
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: dos
Disk identifier: 0x34510bc9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 102856703 102854656 49G 83 Linux
/dev/sda2 102858750 104855551 1996802 975M 5 Extended
/dev/sda5 102858752 104855551 1996800 975M 82 Linux swap / Solaris
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
1,创建分区格式
# 将磁盘/dev/sdb的分区表类型设置为传统的MBR(MS-DOS)格式
# 注意:这将清除磁盘上所有现有分区
parted /dev/sdb mklabel msdos
# 创建第一个主分区:
# - 文件系统类型为ext4(实际需用mkfs格式化)
# - 从1MiB开始(现代磁盘的优化对齐位置)
# - 分配99GiB的空间(约保留1GiB给后续分区)
parted /dev/sdb mkpart primary ext4 1MiB 99GiB
# 将第一个分区标记为"可启动"(设置boot flag)
# 适用于传统的BIOS/MBR启动方式
parted /dev/sdb set 1 boot on
# 创建扩展分区:
# - 占用剩余磁盘空间(从99GiB到100%)
# 注意:MBR格式最多支持4个主分区,需用扩展分区创建更多逻辑分区
parted /dev/sdb mkpart extended 99GiB 100%
# 在扩展分区内创建逻辑分区:
# - 类型设置为linux-swap(实际需用mkswap初始化)
# - 占据全部剩余空间(从99GiB到磁盘末尾)
parted /dev/sdb mkpart logical linux-swap 99GiB 100%
分区全部创建完成,可以看到如下新建立的分区
root@Debian:~# fdisk /dev/sdb -l
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: QEMU HARDDISK
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: dos
Disk identifier: 0x7a57e592
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 207618047 207616000 99G 83 Linux
/dev/sdb2 207618048 209715199 2097152 1G f W95 Ext'd (LBA)
/dev/sdb5 207618049 209715199 2097151 1024M 82 Linux swap / Solaris
2,格式化分区
#格式化/dev/sdb1 分区为ext4格式
mkfs.ext4 /dev/sdb1
#格式化/dev/sdb5 分区为swap格式(虚拟内存)
mkswap /dev/sdb5
3,挂载新分区并写入系统文件
将新磁盘挂载,并写入系统文件,这里需要耗时等待,等待过程 可以再开一个终端执行df -h /dev/sdb
命令,查看已经写入了多少储存了。
#创建路径,用于挂载新磁盘的 /dev/sdb1 系统目录
mkdir -p /mnt/newroot
#将新磁盘的 /dev/sdb1 系统目录,挂载到/mnt/newroot目录
mount /dev/sdb1 /mnt/newroot
#使用rsync 将系统文件,写入到/mnt/newroot/,这里排除了部分文件夹
rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/newroot/
4,准备chroot环境
当系统文件写入完成后,挂载分区进入chroot环境
mount --bind /dev /mnt/newroot/dev
mount -t proc proc /mnt/newroot/proc
mount -t sysfs sys /mnt/newroot/sys
mount -t devpts devpts /mnt/newroot/dev/pts
5,更新fstab文件
#进入系统环境
chroot /mnt/newroot /bin/bash
#注释掉不要的分区,或者直接清空挂载配置信息
vim /etc/fstab
echo > /etc/fstab
#写入系统分区挂载信息
blkid | grep '/dev/sda1' | awk -F'UUID="' '{print $2}' | awk -F'"' '{print "UUID=" $1 " / ext4 errors=remount-ro 0 1"}' >> /etc/fstab
#写入swap分区挂载信息
blkid | grep '/dev/sdb5' | awk -F'UUID="' '{print $2}' | awk -F'"' '{print "UUID=" $1 " swap swap defaults 0 0"}' >> /etc/fstab
vim /etc/fstab # 手动验证和调整
6,重新安装引导程序
grub-install /dev/sdb
update-grub
7,退出chroot 系统环境并清理
exit
umount -l /mnt/newroot/dev{/pts,}
umount /mnt/newroot/proc
umount /mnt/newroot/sys
umount /mnt/newroot
8,系统关机
poweroff -h
特别说明,关机后,将系统原有的磁盘给拔掉,以新磁盘开机,或者BIOS 启动选项里 以新磁盘启动,然后就能进入100GB的新磁盘系统了
。
开机后查看
可以看到成功扩容,并移动到了新磁盘
root@Debian:~# fdisk -l
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: QEMU HARDDISK
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: dos
Disk identifier: 0x7a57e592
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 207618047 207616000 99G 83 Linux
/dev/sda2 207618048 209715199 2097152 1G f W95 Ext'd (LBA)
/dev/sda5 207618049 209715199 2097151 1024M 82 Linux swap / Solaris
#查看剩余空间
root@Debian:~# df -h /
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 97G 46G 47G 50% /
其他操作说明 笔记待完善补充...
欢迎 留言评论补充