磁盘管理命令之partx,lsblk,blkid,partprobe

磁盘管理命令之partx,lsblk,blkid,partprobe



partx:修改磁盘分区表后,无需重启,用partx命令告诉内核,分区已改动,内核可以读入新的分区表信息

/proc/partitions记录了系统中所有硬盘及其上面的分区,包括已挂载和未挂载的。

有些硬盘没有记录分区信息,可能是没有分区,也可能是未记录

对于分区完成,但是尚未挂载的硬盘分区,partx告诉内核去做登记,已备挂载。

partx告诉内核去识别,登记某个硬盘上的分区信息。并不是加载,只是识别并记录而已,或者删除某个分区的信息。




partx命令:

å¨è¿éæå¥å¾çæè¿°

-a 设备: 登记某块盘上的所有分区信息。如果分区信息有记录,则报错。

-d 设备: 删除内核中关于某磁盘的所有分区的记录。(不是卸载)

-s 设备 :显示磁盘的分区信息


通过partx工具让内核重读磁盘分区表信息:


partx -d /dev/sdb  #因为内核中存在部分未调整磁盘的信息,故先将所有信息清零

partx -a /dev/sdb  #添加调整后的磁盘分区信息

partx -s /dev/sdb  #显示磁盘分区信息

å¨è¿éæå¥å¾çæè¿°

partx命令告用来诉内核当前磁盘的分区情况

语法
       partx [-a|-d|-l] [--type TYPE] [--nr M-N] [partition] disk

解释
       对一个磁盘或者分区表类型,尝试解析分区表。可以增加或删除分区。但不是fdisk,增加,删除分区对磁盘造成改变,只是告诉内核当前磁盘的分区情况。

选项
  -a    增加制定的分区或读磁盘新增的分区
  -d    删除制定或所有的分区
  -l     列出分区
  --type  指定分区类型。dos,bsd,solaris,unix,或者gpt
  --nr      M-N 指定分区范围

# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1

是因为虚拟机的原因

# partx -a /dev/sdb1 /dev/sdb

不会有上面的提示



lsblk命令:列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等。

补充一点:lsblk和df的区别:

lsblk 查看的是block device,也就是逻辑磁盘的大小

df 查看的是file system,也就是文件系统层的磁盘大小,并且已挂载

在这里插入图片描述

NAME :这是块设备名。

MAJ:MIN :本栏显示主要和次要设备号。

RM :本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。

SIZE :本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。

RO :该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。

TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。

MOUNTPOINT :本栏指出设备挂载的挂载点。


blkid命令:显示关于可用块设备的信息,他可以识别一个块设备内容的类别(如文件系统,交换区)以及从内容的元数据(如卷标或UUID字段)中获取属性(如tokens和键值对)。它主要有两类作用:用指定的键值对搜索一个设备,或是显示一个或多个设备的键值对。

不添加任何参数直接运行blkid将会输出所有可用的设备,他们的通用唯一识别码(UUID),文件系统类型以及卷标(如果有设置过)


partprobe:通知系统分区表的变化

使用fdisk或其他命令创建一个新的分区,然后使用partprobe命令重新读取分区表。这个命令执行完毕后不会输出任何返回信息。

partprobe: 用于重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。

     将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。

    -d 不更新内核

    -s 显示磁盘分区汇总信息

    -h 显示帮助信息

    -v 显示版本信息

eg:

    partprobe /dev/sdb

    当磁盘分区信息完整时,手动删除/dev/disk/by-id目录下对应的wwn链接文件,执行partprobe操作,系统会自己创建删除的链接文件。

    通过udevadmin monitor命令可以监控到相关信息。




总结:在使用fdisk命令创建分区后,可以使用partx和partprobe使系统内核加载分区信息,然后使用lsblk或partx -s 设备名 查看修改后的设备分区信息,给分区做上文件系统后,可以使用blkid命令查看设备信息,以及其文件系统等信息。

使用partx -s/ partx -l 查看分区信息如果出错,可能是信息未被登记,可使用partx -a 设备名 来添加,再进行查看。






About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub、博客园、优快云和个人微 信公众号( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文优快云地址: https://blog.youkuaiyun.com/lihuarongaini

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 (满) 、618766405

● 微 信群:可加我微 信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2019-08-01 06:00 ~ 2019-08-31 24:00 在西安完成

● 最新修改时间:2019-08-01 06:00 ~ 2019-08-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店 https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书 http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班 http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页 https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客户端 扫描下面的二维码来关注小麦苗的微 信公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗微 信, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2653096/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26736162/viewspace-2653096/

<think>嗯,用户现在想删除sda1分区,但遇到了“设备或资源忙”的错误。我需要先理解这个问题可能的原因和解决方法。根据用户提供的引用内容,有几个关键点需要注意。 首先,引用[1]和[2]提到,当尝试重新加载分区表或格式化时,可能会遇到“设备或资源忙”的错误。这通常是因为分区仍被系统使用,比如挂载点或进程正在访问。用户可能在操作时没有卸载相关分区,导致资源被占用。这时候,重启系统可能是一个解决方法,但用户之前重启后仍然遇到了问题,比如找不到/dev/sda5,这可能与分区表错误有关。 引用[3]提到在RHEL7系统中,当主分区已满时,可能需要使用LVM管理来调整分区,这可能与当前用户的问题无关,但需要注意如果sda1是LVM的一部分,可能需要额外的步骤来处理。 引用[4]中提到了在删除分区后,设备节点可能不会立即出现,需要重新扫描或强制内核重新读取分区表,比如使用partprobepartx命令。但用户之前使用partprobe时遇到了错误,可能与光驱设备有关,如引用[2]所述,移除光驱设备后解决了部分问题。 接下来,我需要整理解决步骤。首先,确保sda1未被挂载或使用。用户可能没有卸载/data2,因为之前的lsblk显示sda1和sda2都挂载在/data2。这可能是因为LVM或某些服务正在使用该分区,导致无法卸载。需要检查是否有进程占用,使用lsof或fuser命令。 然后,使用fdisk删除分区后,需要正确重载分区表。但用户之前遇到partprobe错误,可能是因为存在其他设备的问题,比如光驱/dev/sr0,需要断开或卸载这些设备。另外,使用partx或blockdev命令来更新内核的分区信息可能更有效。 此外,用户提到删除sda1后希望只保留sda,即整个磁盘作为未分区空间。需要注意,删除分区后,可能需要清除分区签名,使用wipefs,以确保系统不再识别旧的分区结构。 最后,用户可能在操作过程中没有正确卸载分区,或者有后台进程仍在使用该设备,导致资源忙。需要强制卸载或终止相关进程,必要时使用umount -l进行延迟卸载。 总结步骤:检查挂载点,卸载所有相关分区,终止占用进程,使用fdisk删除分区,重载分区表,处理可能的残留签名,最后验证结果。如果仍然遇到问题,可能需要重启系统或检查硬件连接。</think>### 分步解决方案:安全删除sda1分区并解决设备繁忙问题 --- #### 一、问题诊断(先确认关键状态) 1. **检查挂载状态**: ```bash # 查看sda1是否被挂载(重点检查/data2挂载点) mount | grep '/dev/sda1' lsblk -o NAME,MOUNTPOINT /dev/sda1 ``` *若输出显示挂载路径,必须卸载后才能操作* 2. **检测进程占用**: ```bash # 查找占用sda1的进程(关键步骤) sudo lsof +f -- /dev/sda1 sudo fuser -v /dev/sda1 ``` --- #### 二、强制卸载与终止进程 ```bash # 1. 卸载分区(强制模式) sudo umount -l /dev/sda1 # -l参数解除挂载点锁定 # 2. 终止相关进程(若第一步失败) sudo fuser -km /dev/sda1 # -k杀进程,-m指定挂载点 # 3. 二次确认卸载状态 grep 'sda1' /proc/mounts # 输出为空表示成功 ``` --- #### 三、分区删除操作(带错误防护) ```bash sudo fdisk /dev/sda ``` **交互式操作序列**: ``` Command (m for help): p # 显示当前分区表(确认sda1位置) Command (m for help): d # 删除分区 Partition number (1-4): 1 # 选择sda1 Command (m for help): w # 写入更改(触发内核重读) ``` *若提示"Device or resource busy",继续执行第四步* --- #### 四、内核级分区表刷新(解决"设备忙"问题) ```bash # 1. 强制重载分区表(比partprobe更彻底) sudo partx -v --update /dev/sda sudo blockdev --rereadpt /dev/sda # 2. 清除缓存(适用于systemd系统) sudo udevadm settle --timeout=10 # 3. 检查操作结果 ls -l /dev/sda* # 应不再显示sda1 ``` --- #### 五、处理残留签名(关键步骤) ```bash # 擦除分区元数据(防止系统自动识别旧分区) sudo wipefs -a /dev/sda1 # 如果设备节点仍存在 sudo wipefs -a /dev/sda -t vfat,ext4 # 指定类型清除 # 验证签名清除状态 sudo blkid /dev/sda # 应无输出 ``` --- #### 六、特殊场景处理 | 问题现象 | 解决方案 | |---------------------------|--------------------------------------------------------------------------| | LVM卷占用 | `sudo vgchange -an` 停用卷组后执行`pvremove /dev/sda1` | | 内核缓存未更新 | 执行`echo 1 > /sys/block/sda/device/rescan` 强制刷新 | | 磁盘被mdadm阵列占用 | 先停止阵列:`sudo mdadm --stop /dev/mdX` | | 光驱设备干扰(/dev/sr0) | 弹出光盘:`eject /dev/sr0` 或虚拟机移除光驱设备 | --- #### 七、操作验证流程 ```bash # 1. 最终分区状态检查 sudo fdisk -l /dev/sda | grep '^/dev/sda' # 2. 查看内核识别的设备 dmesg | tail -20 # 检查是否有sda相关错误日志 # 3. 尝试重新挂载测试(可选) sudo mount /dev/sda /mnt/test 2>&1 | grep 'wrong fs type' ``` --- #### 八、流程图解关键步骤 ```mermaid graph TD A[开始] --> B{检查挂载状态} B -- 已挂载 --> C[强制卸载] B -- 未挂载 --> D[终止占用进程] C --> E[进入fdisk删除分区] D --> E E --> F[内核刷新分区表] F --> G{仍有错误?} G -- 是 --> H[擦除磁盘签名] G -- 否 --> I[验证结果] H --> I I --> J[完成] ``` --- ### 技术原理说明 1. **设备忙的本质**:Linux内核通过`struct block_device`对象管理设备访问,当有进程持有文件句柄或挂载未释放时,会触发EBUSY错误[^5] 2. **partprobe局限**:该命令仅通知内核重新读取分区表,但无法处理已打开的设备句柄,需配合`blockdev --rereadpt`强制刷新[^6] 3. **wipefs作用机制**:通过擦除特定偏移量的魔数(magic numbers)破坏分区签名,使系统无法自动识别旧分区[^7] --- ### 相关问题 1. 如何强制解除被NFS锁定的磁盘设备? 2. LVM卷组占用磁盘时如何安全删除分区? 3. 分区表损坏后如何恢复数据? 4. 使用dd命令擦除分区与wipefs有何区别? 5. 虚拟机环境中磁盘设备无法卸载的特殊处理方法? [^5]: 设备文件句柄管理机制 [^6]: 块设备内核API文档 [^7]: 文件系统签名规范
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值