Parted分区问题

今天在将4T硬盘分区时遇到一个问题

Error: Partition(s) 1, 2, 3, 4 on /dev/hdiskA have been written, but we have been unable to 
inform the kernel of the change, probably because it/they are in use.  As a result, the old 
partition(s) will remain in use.  You should reboot now before making further changes

 翻译为:错误:已经写入/dev/hdiskA上的分区1、2、3、4,但是我们无法将更改通知内核,可能是因为它/它们正在使用。因此,旧的分区将继续使用。在进行进一步更改之前,现在应该重新启动。

重启之后就可以了。

问题复现如下:

1、我是将parted工具打包为库,然后使用.h的接口函数调用分区所需要的函数。单的使用没有问题,然后将它加入到主程序中进行按键触发分区线程。

2、偶尔出现以上错误,出现之后,继续触发2次之后还是不好用。我将主程序杀死,然后使用parted工具进行分区,仍然报上面的错误,并且多了一句

you may need to update /etc/fstab

这个不是问题网上的回答如下:

(1)不需要update。parted命令是实时生效的。分区命令完成后已经将分区表数据写入了硬盘。

(2)/etc/fstab文件,是系统的自动挂载分区的配置。目的是让系统重启后,能够自动将某个分区挂载到指定挂载点。而不用再手动mount

(3)这个文件的配置方法在老师的课里有讲解。请注意再看一看。思路是:

vim + /etc/fstab 

定位到文件末尾后,添加自动挂载的参数。例如:/dev/sdb1        /mnt/imooc        ext3        default      0      0

参数的含义与mount命令中的参数含义比较像,学一下老师前面讲解的mount命令用法后就大致明白了。

然后我将主程序启动,继续触发分区,就好使了。

3、最后将机器关掉,然后上电,触发分区,设备正常。

目前的总结就是,重启就好使。问题继续调查,应该是哪个地方占用了。

4、刚才又去尝试了一下,使用mount看看有没有被其他地方占用,发现的确没有。只有第一次能够格式化成功,后面就是失败了。然后我在格式化的过程中查看是否被别人挂载,发现还是没有。然后在主程序运行的时候使用parted工具进行分区,失败报了跟上面一样的错误。然后我将主程序杀死,使用parted工具分区,成功了。

结论:应该是被某个地方mount了。

问题终于找到了。

总结如下:

一般使用parted工具也好,使用库也好,进行分区操作主要使用mklabel和mkpart这两个函数。在格式化为gpt格式并分区之后,还需要进行文件系统格式化,一般格式化为FAT32或者NTFS格式。在进行文件系统格式化的时候,需要打开设备节点进行操作。问题就出在这里,open之后,操作完成,最后没有close,导致这一开始的错误!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值