Fdisk动态扩容
概述
我们管理的服务器可能会随着业务量的不断增长造成磁盘空间不足的情况,比如:共享文件服务器硬盘空间不足,在这个时候我们就需要增加磁盘空间,来满足线上的业务;又或者我们在使用linux的过程中, 有时会因为安装系统时分区不当导致有的分区空间不足,而有的分区空间过剩的情况,都可以是使用fdisk分区工具来动态调整分区的大小;
扩容磁盘空间
这里扩展是在同一块硬盘上,有多余的空间扩展的指定分区,注意,只能扩展最后一个分区,因为如果你有两个分区,第二个的start柱是第一个的-end柱+1。
#查看这块硬盘的大小,显示总53.7G,已用sdb1+sdb2=30G,还有20G空闲。
[root@test1 ~]# fdisk -l /dev/sdb
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbcb1cdec
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 83 Linux
/dev/sdb2 41945088 62916607 10485760 83 Linux
重新创建分区,调整分区信息
本次实验主要对/dev/sdb2这个分区扩展,如果是生产环境,请提前做好备份保存到其他分区,虽然扩展分区大小不会导致数据丢失,安全起见,请提前做好备份;
首先模拟出一些数据:
[root@test1 /]# df -h /dev/sdb2
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb2 9.8G 23M 9.2G 1% /shuju1
[root@test1 shuju1]# pwd
/shuju1
[root@test1 shuju1]# echo "测试文件,我还在!" >test.file
[root@test1 shuju1]# cat test.file
测试文件,我还在!
[root@test1 /]# umount /dev/sdb2 //取消挂载
删除分区
使用fdisk工具先删除/dev/sdb2分区,然后创建新分区,注意开始的磁柱号要和原来的一致(是保证数据不丢失的关键步骤),结束的磁柱号默认回车使用全部磁盘。
[root@test1 //]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p //查看分区
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbcb1cdec
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 83 Linux
/dev/sdb2 41945088 62916607 10485760 83 Linux
命令(输入 m 获取帮助):d //删除分区
分区号 (1,2,默认 2):2 //选择第二个
分区 2 已删除
命令(输入 m 获取帮助):p //再次查看,已删除
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbcb1cdec
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 83 Linux
命令(输入 m 获取帮助):n //创建分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p //选择主分区
分区号 (2-4,默认 2): //选择创建第二个分区
起始 扇区 (41945088-104857599,默认为 41945088): # 这里是/dev/sdb2 的起始柱子,要跟原来的一样,是保证数据不丢失的关键步骤!!
将使用默认值 41945088
Last 扇区, +扇区 or +size{K,M,G} (41945088-104857599,默认为 104857599): //这里是把剩余的空间都给这个分区
将使用默认值 104857599
分区 2 已设置为 Linux 类型,大小设为 30 GiB
命令(输入 m 获取帮助):p //再次查看分区,发现已扩大。
磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xbcb1cdec
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 83 Linux
/dev/sdb2 41945088 104857599 31456256 83 Linux
命令(输入 m 获取帮助):w //保存,若要报错,请不要保存,直接退出!
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
刷新分区
[root@test1 /]# partprobe /dev/sdb //刷新保存后的分区
[root@test1 /]# e2fsck -f /dev/sdb2 //检查分区信息
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/sdb2: 12/655360 files (0.0% non-contiguous), 79697/2621440 blocks
[root@test1 /]# resize2fs -p /dev/sdb2 //动态调整分区大小
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/sdb2 to 7864064 (4k) blocks.
Begin pass 1 (max = 160)
正在扩充inode表 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/sdb2 is now 7864064 blocks long.
重新挂载、查看大小、检查数据
[root@test1 /]# mount /dev/sdb2 /shuju1/
[root@test1 /]# df -h /dev/sdb2
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb2 30G 28M 28G 1% /shuju1
[root@test1 /]# cat /shuju1/test.file
测试文件,我还在!
配置开机自动挂载
[root@test1 /]# blkid /dev/sdb2 //查看要挂载分区的uuid
/dev/sdb2: UUID="e0c00822-9cad-4527-9c61-0c1aafaa6415" TYPE="ext3"
[root@test1 /]# vim /etc/fstab
UUID=e0c00822-9cad-4527-9c61-0c1aafaa6415 /shuju1 ext3 defaults 0 0
[root@test1 /]# mount -a //检测,不报错就说明没问题
fatab说明
UUID=e0c00822-9cad-4527-9c61-0c1aafaa6415 /shuju1 ext3 defaults 0 0
要挂载的分区设备号 挂载点 类型 挂载选项 是否备份 是否检测
 ̄﹃ ̄