AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 36038
Accepted
Teddy
Teddy
Asked: 2009-07-06 04:10:43 +0800 CST2009-07-06 04:10:43 +0800 CST 2009-07-06 04:10:43 +0800 CST

重读分区表而不重新启动?

  • 772

有时,当调整大小或以其他方式处理磁盘上的分区时,cfdi​​sk 会说:

Wrote partition table, but re-read table failed. Reboot to update table.

(这也发生在其他分区工具上,所以我认为这是一个 Linux 问题而不是 cfdisk 问题。)为什么会这样,为什么它只是有时会发生,我能做些什么来避免它?

注意:请假设我实际编辑的分区都没有打开、安装或以其他方式使用。


更新:

cfdisk 用于ioctl(fd, BLKRRPART, NULL)告诉 Linux 重新读取分区表。到目前为止推荐的其他两个工具 ( hdparm -z DEVICE, sfdisk -R DEVICE) 的作用完全相同。partprobe DEVICE另一方面,该命令似乎使用了一个名为 BLKPG 的新 ioctl,这可能会更好;我不知道。(如果 BLKPG 失败,它也会退回到 BLKRRPART。)

BLKPG 似乎是“此分区已更改;这是新的大小”操作,看起来像是partprobe在通过的设备上的所有分区上单独调用它,因此如果各个分区未使用,它应该可以工作。但是,我还没有机会尝试。

linux partition fdisk
  • 15 15 个回答
  • 150569 Views

15 个回答

  • Voted
  1. Best Answer
    knweiss
    2009-07-06T04:44:34+08:002009-07-06T04:44:34+08:00

    恕我直言,最可靠/最好的答案是

    partprobe /dev/sdX
    
    • 79
  2. ko-dos
    2009-07-06T04:13:10+08:002009-07-06T04:13:10+08:00

    重读分区表信息并不总是有效,但试试

    hdparm -z /dev/sda
    

    或者

    sfdisk -R /dev/sda
    

    如果它有效,/proc/partitions 中的值将会改变。

    • 22
  3. Teddy
    2013-08-29T11:15:15+08:002013-08-29T11:15:15+08:00

    几天前,我(最初的提问者)遇到了一种情况,当时没有其他答案(包括partprobe /dev/sdX目前被接受和投票率最高的答案)起作用。然而,起作用的是:

    blockdev --rereadpt /dev/sdX
    

    (我不知道为什么这有效而其他无效,但我很高兴它确实有效,因为它让我在繁忙的服务器上重新启动。)

    • 15
  4. Edredon
    2015-09-16T01:33:36+08:002015-09-16T01:33:36+08:00

    在 Centos7 上:

    根据https://access.redhat.com/solutions/199573

    你应该试试 :

    partx -u <partition>
    

    它对我有用。

    • 14
  5. womble
    2009-07-06T04:32:43+08:002009-07-06T04:32:43+08:00

    注意:请假设我实际编辑的分区都没有打开、安装或以其他方式使用。

    鉴于此假设,分区表可以成功重新扫描,并且不会出现问题。如果您收到该错误,那是因为分区表当前正在使用中,因此无法重新扫描而不会造成不一致。

    • 8
  6. Saurabh Barjatiya
    2009-07-06T08:39:31+08:002009-07-06T08:39:31+08:00

    它不是基于您正在编辑的分区。

    假设您只有一个硬盘 ( /dev/sda) 和两个分区 ( /dev/sda1, /dev/sda2),并且您只挂载了一个分区 ( /dev/sda1)。如果您删除或更改了其他未挂载的分区的任何内容(/dev/sda2),您将收到重新读取分区表失败并且内核将使用旧表的错误。

    但是如果你有两个硬盘 ( /dev/sda, /dev/sdb) 并且 ( ) 的分区/dev/sdb都没有在使用中。然后您可以添加/删除/调整大小/编辑分区,/dev/sdb它们将被重新读取而没有任何问题。但是即使在更改期间挂载了 /dev/sdb 的一个分区。然后内核将继续使用旧表。

    • 6
  7. Camp Waub-O-Jeeg
    2018-12-07T16:38:49+08:002018-12-07T16:38:49+08:00

    卸载所有挂载点,运行 Yocto 2.4:

    partprobe /dev/sda 
    

    在设备上删除分区后仍然无法重新加载分区表。还尝试过——但失败的是:

    udevadm trigger --subsystem-match=block; udevadm settle
    hdparm -z /dev/sda
    blockdev --rereadpt /dev/sda
    

    所有人都报告了类似的“BLKRRPART 失败:设备或资源繁忙...”错误,指示我重新启动。以前工作方法的这种失败是否可能是由于 udev 现在处于系统控制之下?沿着我尝试的这些思路思考:

    systemctl restart systemd-udevd.service
    

    突然间,我的磁盘再次可用,无需重新启动!

    • 5
  8. Max
    2015-05-30T00:07:22+08:002015-05-30T00:07:22+08:00

    我在 centos 6.5 x64 上;内核 2.6.32 。我正在测试 fdisk 技巧来调整大小。

    /dev/sda1 /boot
    /dev/sda2 /
    

    以下所有命令都没有使内核重新读取分区:

    • partprobe /dev/sda (警告:内核无法重新读取......)
    • hdparm -z /dev/sda(BLKRRPART 失败:设备或资源忙)
    • blockdev -rereadpt /dev/sda(BLKRRPART 失败:设备或资源忙)
    • sfdisk -R /dev/sda(BLKRRPART 失败:设备或资源忙)

    我仍然需要重新启动才能使其正常工作

    • 4
  9. maxschlepzig
    2018-11-18T12:55:05+08:002018-11-18T12:55:05+08:00

    当类似命令blockdev --rereadpt /dev/sdX失败时

    blockdev: ioctl error on BLKRRPART: Device or resource busy
    

    这通常意味着某些(旧)分区确实仍然以某种方式被内核使用。

    可能的原因/修复:

    1. 一个 sdX 分区 - 比如说sdX1- 仍然挂载 - 检查mount并卸载它
    2. /dev/sdX1是软件突袭的一部分 - 检查cat /proc/mdstat并可能停止相关阵列,例如mdadm --stop /dev/md126
    3. /dev/sdX1是 LVM 物理卷的一部分 - 检查pvdisplay/vgdisplay并可能停用vgchange
    4. /dev/sdX1是某些设备映射的一部分 - 例如通过cryptsetup- 检查/dev/mapper并lsblk可能删除映射(例如cryptsetup luksClose)
    5. 一些 udev 探测的竞争条件 - 检查正在运行的进程ps并可能杀死一个

    如果一个工具 - 比如说blockdev --rereadpt失败,通常类似的工具(如 ( partx -uv, kpartx, partprobe, kpartprobe) 会以类似的方式失败,直到消除根本原因。

    • 4
  10. bogdano
    2010-12-30T11:11:41+08:002010-12-30T11:11:41+08:00

    你也可以试试:

    echo 1 > /sys/block/sdX/device/rescan
    

    (但可能不起作用,请参阅下面的评论)

    • 3

相关问题

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 是否有充分的理由在 Windows 上对磁盘进行分区?

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve