前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux下MBR方式分区非主分区扩容文件系统

linux下MBR方式分区非主分区扩容文件系统

作者头像
大大大黑白格子
发布2020-06-10 19:30:49
3.9K0
发布2020-06-10 19:30:49
举报
文章被收录于专栏:云服务笔记
背景:
使用腾讯云云服务器时,将扩容部分的容量划分至原有分区(MBR),使用官网提供的脚本扩容时,如果分区号不是主分区1(如vdb1、vdc1时),无法使用脚本一键完成文件系统扩容

注意:做快照!做快照!做快照!针对磁盘操作先做快照备份

示例: 分区为主分区 vdb2 时,使用脚本扩容直接报错了,提示非主分区(其实这里还是主分区,只不过不是第一个分区)

代码语言:javascript
复制
root@BJ-CentOS7 ~ # lsblk 
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk 
└─vda1 253:1    0  50G  0 part /
vdb    253:16   0  10G  0 disk 
└─vdb2 253:18   0   5G  0 part /vdb2
root@BJ-CentOS7 ~ # python /tmp/devresize.py /dev/vdb
[ERROR] - Must be primary partition.
手动扩容步骤:
代码语言:javascript
复制
1. 解挂载分区 /dev/vdb2,如果提示磁盘被占用的错误,可以使用 fuser -um 指定分区或挂载点查看是什么进程及用户在占用,关闭对应进程后重试 umount 操作
2. 备份当前分区表
3. fdisk 重建分区(扩容分区),删除原有分区,重新分区时将扩容磁盘增加的扇区增加到新建分区上,并保存配置(注意原有分区如果扇区开始位置非默认的2048,重建分区时需要注意指定原有分区的扇区开始位置,扇区结束位置默认最大即可,或者也可以自定义增加部分到原有分区上)
下列示例中我们重建的分区为主分区vdb1,这样后期再扩容也方便使用脚本一键扩容
4. 执行 e2fsck -f /dev/vdb1 检查分区完整性
5. 执行 resize2fs /dev/vdb1 扩容文件系统
6. 挂载校验,文件系统容量扩容成功,之前的数据也没受影响

扩容示例1:主分区,分区号不为1,扩容前分区为主分区vdb2
代码语言:javascript
复制
root@BJ-CentOS7 ~ # ls /vdb2/
10.txt  11.txt  12.txt  13.txt  14.txt  15.txt  16.txt  17.txt  18.txt  19.txt  1.txt  20.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  lost+found
root@BJ-CentOS7 ~ # lsblk 
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk 
└─vda1 253:1    0  50G  0 part /
vdb    253:16   0  10G  0 disk 
└─vdb2 253:18   0  90M  0 part /vdb2
root@BJ-CentOS7 ~ # df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/vda1        50G  8.4G   39G   18% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G   72K  1.9G    1% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
192.168.1.14:/   10G   66M   10G    1% /cfs
tmpfs           380M     0  380M    0% /run/user/0
/dev/vdb2        84M  1.6M   76M    2% /vdb2
root@BJ-CentOS7 ~ # umount /dev/vdb2 
root@BJ-CentOS7 ~ # dd if=/dev/vdb of=./vdbmbr-05-30.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000679262 秒,754 kB/秒
root@BJ-CentOS7 ~ # fdisk /dev/vdb 
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930d8a2
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb2            2048    10487807     5242880   83  Linux
命令(输入 m 获取帮助):d
已选择分区 2
分区 2 已删除
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
将使用默认值 20971519
分区 1 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930d8a2
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    20971519    10484736   83  Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
root@BJ-CentOS7 ~ # e2fsck -f /dev/vdb1 
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vdb1: 31/23040 files (3.2% non-contiguous), 8563/92160 blocks
root@BJ-CentOS7 ~ # resize2fs /dev/vdb1 
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vdb1 to 10475520 (1k) blocks.
The filesystem on /dev/vdb1 is now 10475520 blocks long.
root@BJ-CentOS7 ~ # mount /dev/vdb1 /vdb1/
root@BJ-CentOS7 ~ # ls /vdb1/
10.txt  11.txt  12.txt  13.txt  14.txt  15.txt  16.txt  17.txt  18.txt  19.txt  1.txt  20.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  lost+found

扩容示例2:逻辑分区,扩容前逻辑分区为vdb5
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
代码语言:javascript
复制
root@BJ-CentOS7 ~ # lsblk 
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk 
└─vda1 253:1    0  50G  0 part /
vdb    253:16   0  10G  0 disk 
├─vdb1 253:17   0   1K  0 part 
└─vdb5 253:21   0   2G  0 part /vdb5
vdc    253:32   0  10G  0 disk 
root@BJ-CentOS7 ~ # fdisk -l /dev/vdb 
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930root@BJ-CentOS7 ~ # fdisk -l /dev/vdb 
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930d8a2
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152    5  Extended
/dev/vdb5            4096     4196351     2096128   83  Linux
root@BJ-CentOS7 ~ # lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk 
└─vda1 253:1    0  50G  0 part /
vdb    253:16   0  10G  0 disk 
├─vdb1 253:17   0   1K  0 part 
└─vdb5 253:21   0   2G  0 part /vdb5
vdc    253:32   0  10G  0 disk 
root@BJ-CentOS7 ~ # ls /vdb5/
a.txt  c.txt  e.txt  g.txt  i.txt  k.txt       l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt
b.txt  d.txt  f.txt  h.txt  j.txt  lost+found  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
root@BJ-CentOS7 ~ # umount /dev/vdb5 
root@BJ-CentOS7 ~ # fdisk /dev/vdb 
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930d8a2
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048     4196351     2097152    5  Extended
/dev/vdb5            4096     4196351     2096128   83  Linux
命令(输入 m 获取帮助):d
分区号 (1,5,默认 5):5  
分区 5 已删除
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): e
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):
将使用默认值 20971519
分区 1 已设置为 Extended 类型,大小设为 10 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930d8a2
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    20971519    10484736    5  Extended
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (4096-20971519,默认为 4096):
将使用默认值 4096
Last 扇区, +扇区 or +size{K,M,G} (4096-20971519,默认为 20971519):
将使用默认值 20971519
分区 5 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930d8a2
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    20971519    10484736    5  Extended
/dev/vdb5            4096    20971519    10483712   83  Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
root@BJ-CentOS7 ~ # partprobe         #重读分区表,可以看出来分区扩容成功,此步骤可以忽略
root@BJ-CentOS7 ~ # fdisk -l /dev/vdb 
磁盘 /dev/vdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x6930d8a2
   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    20971519    10484736    5  Extended
/dev/vdb5            4096    20971519    10483712   83  Linux
root@BJ-CentOS7 ~ # e2fsck -f /dev/vdb5 
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vdb5: 37/131072 files (0.0% non-contiguous), 17964/524032 blocks
root@BJ-CentOS7 ~ # resize2fs /dev/vdb5 
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vdb5 to 2620928 (4k) blocks.
The filesystem on /dev/vdb5 is now 2620928 blocks long.
root@BJ-CentOS7 ~ # lsblk 
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk 
└─vda1 253:1    0  50G  0 part /
vdb    253:16   0  10G  0 disk 
├─vdb1 253:17   0   1K  0 part 
└─vdb5 253:21   0  10G  0 part 
vdc    253:32   0  10G  0 disk 
root@BJ-CentOS7 ~ # mount /dev/vdb5 /vdb5/
root@BJ-CentOS7 ~ # ls /vdb5/
a.txt  c.txt  e.txt  g.txt  i.txt  k.txt       l.txt  n.txt  p.txt  r.txt  t.txt  v.txt  x.txt  z.txt
b.txt  d.txt  f.txt  h.txt  j.txt  lost+found  m.txt  o.txt  q.txt  s.txt  u.txt  w.txt  y.txt
root@BJ-CentOS7 ~ # df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/vda1        50G  8.9G   38G   20% /
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G  104K  1.9G    1% /dev/shm
tmpfs           1.9G   13M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
192.168.1.14:/   10G   66M   10G    1% /cfs
tmpfs           380M     0  380M    0% /run/user/0
/dev/vdb5       9.9G  9.0M  9.3G    1% /vdb5
root@BJ-CentOS7 ~ # 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景:
  • 使用腾讯云云服务器时,将扩容部分的容量划分至原有分区(MBR),使用官网提供的脚本扩容时,如果分区号不是主分区1(如vdb1、vdc1时),无法使用脚本一键完成文件系统扩容
  • 手动扩容步骤:
    • 扩容示例1:主分区,分区号不为1,扩容前分区为主分区vdb2
      • 扩容示例2:逻辑分区,扩容前逻辑分区为vdb5
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档