无法创建文件系统以及无法创建PV时怎么办?

我们平常对磁盘分区格式化的时候有时无法格式化,报告的信息为:

“/dev/sdb3 is apparently in use by the system; will not make a filesystem here!”

意思是说:似乎系统正在使用该设备,无法创建文件系统。使用【mount】查看系统的所有挂载设备,也没有:/dev/sdb3.但是,创建文件系统的时候。就是无法在该设备上创建文件系统。

有时候,我们新创建的分区,使用【kpartx -af DIRVE】或【partx -a DIRVE】通知内核重新识别设备的所有分区。使用【cat /proc/partitions】已经识别到新创建的新区,但是创建PV的时候就报错:

“Can‘t open /dev/sdb2 exclusively.  Mounted filesystem?”

意思是:不能打开该设备,已经安装过文件系统?

其实,这些都是由底层Device-Mapper的映射信息还存在导致。所以,格式化分区,创建逻辑卷的时候报错。用户空间通过【dmsetup】接口可以对内核空间的映射做一些管理。

dmsetup   status          显示系统上活动逻辑设备信息
dmsetup   remove  sdb1    移除逻辑设备
dmsetup   remove_all      重置所有逻辑设备

Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,如:镜像,快照等. 当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(EnterpriseVolume Management System)、dmraid(Device Mapper RaidTool)等都是基于该机制实现的. 只要用户在用户空间制定好映射策略,按照自己的需要编写处理具体IO请求的 target driver插件,就可以很方便的实现这些特性.Device Mapper主要包含内核空间的映射和用户空间的device mapper库及dmsetup工具.

当我们遇到格式化分区和创建PV的时候报错是做如何处理的?

1、创建PV的时候报错的处理过程:

查看设备/dev/sdb的分区情况,准备好了创建PV的分区:/dev/sdb2

[[email protected] ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2c06c001

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          34      273073+  83  Linux
/dev/sdb2              35         296     2104515   8e  Linux LVM

内核要识别到新创建的分区(只有内核可以直接访问硬件),才可以创建PV。

[[email protected] ~]# cat /proc/partitions | grep "sdb[1-9]?"
major minor  #blocks  name

   8       16   20971520 sdb
   8       17     273073 sdb1
   8       18    2104515 sdb2

内核已经识别了,创建pv

[[email protected] ~]# pvcreate /dev/sdb2
  Can‘t open /dev/sdb2 exclusively.  Mounted filesystem?

说明:

创建PV失败。

那么如何,解决设备/dev/sdb2不能创建PV的问题呢?

(1)先:使用【dmsetup】查看系统上逻辑设备的信息。

[[email protected] ~]# dmsetup status
sdb2: 0 4209030 linear  ---------> sdb2 在线
sdb1: 0 546147 linear   ---------> sdb1 在线
vg0-swap: 0 4194304 linear
vg0-root: 0 41943040 linear
vg0-usr: 0 20971520 linear
vg0-var: 0 41943040 linear

(2)、移除磁盘/dev/sdb 上的所有逻辑设备

移除逻辑设备:sdb2

[[email protected] ~]# dmsetup remove sdb2

再次创建PV

[[email protected] ~]# pvcreate /dev/sdb2
  Can‘t open /dev/sdb2 exclusively.  Mounted filesystem?

说明:

创建失败。

再把逻辑设备:/dev/sdb1移除,再创建PV。就创建成功

[[email protected] ~]# dmsetup remove sdb1

(3),当移除成功之后,就可以把/dev/sdb2创建成PV了。

[[email protected] ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created

2、格式化磁盘出现错误的处理过程:

查看设备/dev/sdb的分区情况

[[email protected] ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2c06c001

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          34      273073+  83  Linux
/dev/sdb2              35        1340    10490445   8e  Linux LVM

把 /dev/sdb2删除,重新创建分区/dev/sdb2.

[[email protected] ~]# fdisk  -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x2c06c001

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          34      273073+  83  Linux
/dev/sdb2              35        1079     8393962+  83  Linux

通知内核识别新设备,也就是重新读取指定设备的分区表。

[[email protected] ~]# kpartx -af /dev/sdb
device-mapper: reload ioctl on sdb1 failed: Invalid argument
create/reload failed on sdb1

查看内核是否识别了,刚才创建的分区/dev/sdb2

[[email protected] ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0   83886080 sda
   8        1     204800 sda1
   8        2   62914560 sda2
   8        3    2103516 sda3
   8       16   20971520 sdb
   8       17     273073 sdb1
   8       18   10490445 sdb2

说明:从上显示结果可以看出。内核还是没有识别新创建的/dev/sdb2 。还是原来的LVM。PV /dev/sdb2

如何解决,通知内核重读,也无法在新的逻辑设备创建文件系统?

(1)、查看逻辑设备的状态

[[email protected] ~]# dmsetup status
myvg-root: 0 8388608 linear   ----> 卷组 myvg 下的逻辑卷root在线。
vg0-swap: 0 4194304 linear
vg0-root: 0 41943040 linear
vg0-usr: 0 20971520 linear
vg0-var: 0 41943040 linear

(2)、使用【dmsetup】移除逻辑卷 /dev/myvg/root

[[email protected] ~]# dmsetup remove /dev/myvg/root
查看系统中的逻辑卷的状态,myvg-root 逻辑设备移除成功
[[email protected] ~]# dmsetup status
vg0-swap: 0 4194304 linear
vg0-root: 0 41943040 linear
vg0-usr: 0 20971520 linear
vg0-var: 0 41943040 linear

(3)、重新通知内核识别刚才的磁盘分区

[[email protected] ~]# kpartx -af /dev/sdb
[[email protected] ~]# $?
0

说明:

内核已经识别成功。

(4)、尝试在新建分区/dev/sdb2 创建文件系统

[[email protected] ~]# mke2fs -t ext4 /dev/sdb2
mke2fs 1.41.12 (17-May-2010)
/dev/sdb2 is apparently in use by the system; will not make a filesystem here!

说明:

/dev/sdb2 设备系统正在使用,没法创建文件系统

(5)、查看系统中所有逻辑设备的状态

[[email protected] ~]# dmsetup status
sdb2: 0 16787925 linear
sdb1: 0 546147 linear
vg0-swap: 0 4194304 linear
vg0-root: 0 41943040 linear
vg0-usr: 0 20971520 linear
vg0-var: 0 41943040 linear

(6)移除在线逻辑设备:sdb1、sdb2

[[email protected] ~]# dmsetup remove  sdb1
[[email protected] ~]# dmsetup remove  sdb2

(7)、再查看逻辑设备的状态

[[email protected] ~]# dmsetup status
vg0-swap: 0 4194304 linear
vg0-root: 0 41943040 linear
vg0-usr: 0 20971520 linear
vg0-var: 0 41943040 linear

(8)、再格式化磁盘/dev/sdb2

[[email protected] ~]# mke2fs -t ext4 /dev/sdb2
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622611 blocks
131130 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

(9)、格式化/dev/sdb2设备成功。

[[email protected] ~]# echo $?
0

总结:

如果分区格式磁盘和创建PV等操作逻辑设备的时候,如果失败的话。设备没有挂载使用的情况下。先使用【dmsetup status】查看逻辑设备的状态。如果有被操作的逻辑设备在线的话,就使用【dmsetup remove DEVICE】移除掉。再操作逻辑设备,一般不是有问题了。

时间: 2024-11-02 23:28:36

无法创建文件系统以及无法创建PV时怎么办?的相关文章

创建文件系统

在说完了磁盘的分区之后,该说的就是创建文件系统了,一块磁盘在使用之前只是一块有磁性的物品而已,需要我们人为的对其进行规划.所以使用磁盘的第一步是格式化.格式化分为低级格式化和高级格式化.低级格式化是在物理层面完成格式化,在磁盘设备出厂的时候,通过低级格式化来创建磁道.在低级格式化完成之后,磁盘就具有了能够使用的功能.但是我们要想往里头存数据,还需要更进一步的格式化,就叫做高级格式化,是在分区之后进行的,它的作用是用来创建文件系统,为分区构建逻辑编址单元.簇和块来完成数据的存储.在这里的一个块只能

博客6:磁盘以及创建文件系统的相关知识点

1.linux磁盘的相关知识点  (1)I/O ports:I/O设备地址,实质上是一个缓冲器  (2)块设备:Block,存取单位是"块",例如:磁盘  (3)字符设备:char,存取单位是"字符",例如:键盘  (4)设备文件:关联至一个设备驱动程序,进而能够与之对应硬件设备进行通信(仅有元数据,而无数据)  (5)设备号码:              主设备号:major number,表示设备类型              次设备号:minor number

linux(十三)之磁盘分区、创建文件系统、挂载

前面学习了linux的用户管理 ,感觉是不是linux的多用户多任务的系统感觉十分了解了,但是其实并不然的.你还需要了解更多.接下来给大家分享的是 在vmware中添加硬盘创建分区,然后挂载到指定目录. 记住永远不要放弃自己正在追求的东西,即使有可能会追不到,也要享受其中的乐趣. 一.vmware中添加硬盘 首先大家要先安装 一个vmware虚拟机,相信大部分的人要学习linux都会使用到这个工具,所以这里我就不在介绍vmware了.进入正题 第一步:进入指定linux系统在vmware的设置

文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解

阅读此文,必须具备知识点:<Linux 查看磁盘分区.文件系统.使用情况的命令和相关工具介绍><实例解说 fdisk 使用方法><合理规划您的硬盘分区><Fedora / Redhat 软件包管理指南> 如果您想加载一个分区(文件系统),首先您得确认文件系统的类型,然后才能挂载使用,比如通过mount 加载,或者通过修改 /etc/fstab来开机自动加载:如果您想添加一个新的分区,或者增加一个新的硬盘,您要通过分区工具来添加分区,然后要创建分区的文件系统,

磁盘分区及创建文件系统

机械式硬盘 1.平均寻道时间:ns 2.磁盘转速:rpm 5400 7200 10000rpm 15000rpm track:磁道 sector:扇区,512Bytes,现在我们所说的扇区实际上是平均值 cylinder:柱面,从磁道向所有盘面做投影 partition:分区,基于柱面来划分的存储空间 head:磁头,每个磁盘表面都有一个磁头 设备文件:/dev 设备文件是关联到硬件设备的驱动程序和设备的访问入口 设备号: major:主设备号,区分设备的类型,用于标明设备所需的驱动程序 mij

[9-1]磁盘分区、创建文件系统、挂载以及链接文件

本文旨在复习磁盘分区.创建文件系统.挂载以及链接文件的基本概念 知识储备 硬盘出厂其实不能写入数据的,是"盲盘",需要处理后使用,格式化分为2种 低格:将空白磁盘划分出柱面.磁道及若干个扇区,每个扇区又划分出标识部分ID.间隔区GAP和数据区DATA等.现在大多出厂已经完成低格,只需要用户磁盘分区即可. 高格:真正意义上的创建文件系统,明确存储设备或分区上的文件方法和数据结构,即在存储设备上组织文件的方法. 文件系统是用户存取磁盘文件操作的"代理人" 不同类型的操作

创建文件系统镜像文件

在这里,我们想建立一个2G左右大小(可以按需设定)的镜像文件,包含三个分区:第一个分区是 b, fat32分区,大小256M,用来存储内核文件,设备树文件,uboot使用的启动脚本文件,配置FPGA的rbf文件等:第三个分区是 a2, raw分区,放在镜像文件的末端,大小 2MiB,用来存放 preloader 和 uboot 的代码,主引导记录引导系统,根据需要 uboot 也可以在 fat32 分区中保存为镜像文件 u-boot.img:第二个分区占用了所有剩下的所有空间,用作 Linux

ubuntu 14.04 32bit 创建文件系统无法showmount的解决方法

1.创建文件系统之后sudo apt-get install nfs-kernel-server. 2.输入showmount -e 如果可以共享出去那就不用执行下一步. 用ubuntu14.04 64bit 是可以显示的,不知道为什么32bit的不行..... 3.如果还是无法共享就配置/etc/exports,输入 vim /etc/exports 添加要共享的文件夹的绝对路径. 4.执行exports -r 更新 5.重新启动nfs,执行/etc/init.d/nfs-kernel-ser

分区、创建文件系统和挂载

分区 分区命令主要有fdisk (主要使用).gdisk(创建gpt类型的分区).parted(可以创建任何类型的分区,但是分区过程提示对于分区大小的提示较少) fdisk -l /dev/sdX 查看硬盘分区信息 -c (centos6) 打开或禁用dos模式 -u  (centos6) 切换显示的单位(扇区/柱面) -c (centos7) -c=dos -c=nondos -u  (centos7)  -u=cylinders  -u=sectors gdisk 功能类似于fdisk fd