案例分享:
默认系统上有一块40G的系统盘sda,外加一块350G的数据盘sdb。每块盘一个分区,分区类型为普通分区。现在350G的数据盘已满,要求将sdb1扩展至450G。
先在“物理”上把sdb盘空间扩展至450G;这里只讨论文件系统扩展及分区问题,在没有做lvm的情况下扩展普通分区是件麻烦的事情,好在sdb只有一个分区。
1)首先查看硬盘使用情况及文件系统类型
]# df -TH /data/ //文件系统类型为ext4
2)卸载数据盘
]# umount /dev/sdb1
3)删除sdb上的分区并重新分区;全部保持默认即可,因为分区时默认就是使用硬盘上的所有空间。
]# fdisk /dev/sdb
Command (m for help): d
Selected partition 1
Partition 1 is deleted
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-943718400, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-943718400, default 943718400):
Using default value 943718400
Partition 1 of type Linux and of size 450 GiB is set
4) 通知系统重读分区表
]# partprobe /dev/sdb
5)挂载
]# mount /dev/sdb1 /data
此时]# lsblk可以看到sdb1为450G;但]# df -TH /dev/sdb1看到大小仍为350G,因为前350G的扇区上之前是做过文件系统的,重新分区后新加进来的这100G的扇区上是没有文件系统的,df命令看的是分区的使用情况。
6)扩展文件系统;前面查看过之前sdb1的文件系统类型为ext4
]# resize2fs /data // xfs文件系统命令则为xfs_growfs;都是将文件系统扩展至物理分区大小;也可以 使用fsadm命令手动调整文件系统大小(这在缩减分区空间时比较有用)。
7)再次查看验证分区大小
]# df -TH /data/
Ps:关于第三步,可操作性在于要扩展的分区之后没有其它分区并且有剩余空间可用。每块磁盘的分区信息记录在第0扇区上,传统磁盘单个扇区大小为512byte,前446byte为MBR(主引导记录),446-510为分区表信息,最后2个byte为结束标志位。删除和创建分区都是在修改0扇区的446-510byte之间的64byte信息。
话虽如此,但破坏前455字节数据(由于sdb上并不存在mbr,455-446=9byte,也就是破坏了分区表信息中的前9个字节)分区表依然完整:)
破坏460-446=14byte字节后,分区表读不到了- -,, 这种情况下分区表没了完全没关系,按照第三步重建分区就是。只要不误操作,数据完全没问题;而且分区时默认从2048扇区开始,也就是0扇区之后还预留了2048*512byte=1M的空间。
这样看来,在不做lvm的情况下只要分区后有足够的空余空间可用,调整普通分区大小也是可行的。但事无绝对,外加误操作的风险,所以最好还是一开始就要规划好,尽量避免后期麻烦。
GoDadly云