解决:Disk /dev/sdb doesn't contain a valid partition table

时间:2020-12-09 23:36:55
解决:Disk /dev/sdb doesn't contain a valid partition table

虚拟机环境,linux系统下新添加了一块硬盘

1. 虚拟机--设置--添加,选择硬盘添加

2. 首先为磁盘创建文件系统:mkfs.ext3 /dev/sdb

3. 创建挂载点:mkdir /mnt/sdb

4. 挂载:mount /dev/sdb /mnt/sdb

5. fdisk -l

    发现有问题:

    Disk /dev/sdb doesn't contain a valid partition table

6. fdisk /dev/sdb

跟着向导一步步做下去(如果不知道该输入什么,就输入“m”并回车,可以打印出菜单):

Command (m for help):m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   l   list known partition types

   m   print this menu

   n   add a new partition

(后面的菜单省略,太长了)

这里我们要添加一个新的分区,所以输入“n”:

Command (m for help):n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4):1

First cylinder (1-14098, default 1):(此处直接回车)

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-14098, default 14098): (此处直接回车)

Using default value 14098

Command (m for help):p

Disk /dev/sdb: 115.9 GB, 115964116992 bytes

255 heads, 63 sectors/track, 14098 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1       14098   113242153+  83  Linux

现在可以写入分区表了,所以输入“w”:

Command (m for help):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

现在再fdisk -l,结果正常。

最后修改磁盘名称

(适用于NTFS)

sudo ntfslabel /dev/sda2 data5

(适用于ext2或ext3)

sudo e2label /dev/sda2 data5

转自:http://blog.csdn.net/launch_225/article/details/7771859

其他问题:

格式化磁盘报“/dev/sdb is apparently in use by the system; will not make a filesystem here!”解决办法

[root@fedora18_1 armstrong]# mkfs.ext4 /dev/sdb
mke2fs 1.42.5 (29-Jul-2012)
/dev/sdb is entire device, not just one partition!
无论如何也要继续? (y,n) y
/dev/sdb is apparently in use by the system; will not make a 文件系统 here!
[root@fedora18_1 armstrong]# 
[root@fedora18_1 armstrong]# 

系统提示/dev/sdb磁盘正在被系统使用。

开始怀疑是否是KVM的bug,经过对磁盘进行dd读写时,发现磁盘读写都正常,因此需要排查出现上述现象的原因。

使用fuser命令查看磁盘被系统中那个进程使用,如图所示:

[root@fedora18_1 armstrong]# 
[root@fedora18_1 armstrong]# fuser -v /dev/sdb
                     用户     进程号 权限   命令
/dev/sdb:            root        522 F.... multipathd
[root@fedora18_1 armstrong]# 

发现其正在被multipathd(多路径软件)使用。

查看sd设备产生的id名称:

[root@fedora18_1 armstrong]# ll /dev/disk/by-id/
总用量 0
lrwxrwxrwx. 1 root root  9 6月  17 12:11 ata-QEMU_DVD-ROM_QM00003 -> ../../sr0
lrwxrwxrwx. 1 root root  9 6月  17 12:11 ata-QEMU_HARDDISK_QM00001 -> ../../sda
lrwxrwxrwx. 1 root root 10 6月  17 12:11 ata-QEMU_HARDDISK_QM00001-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 6月  17 12:11 ata-QEMU_HARDDISK_QM00001-part2 -> ../../sda2
lrwxrwxrwx. 1 root root  9 6月  17 12:11 ata-QEMU_HARDDISK_QM00002 -> ../../sdb
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-name-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0 -> ../../dm-3
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-name-fedora-root -> ../../dm-1
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-name-fedora-swap -> ../../dm-0
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-name-QEMU_HARDDISK_QM00002 -> ../../dm-2
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-uuid-LVM-EMigyZZDHUj2J15jjJN7UFno9M7REfPg8JZ06CRrZ60ABXzFbvUgVrsnfM8z1a7b -> ../../dm-1
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-uuid-LVM-EMigyZZDHUj2J15jjJN7UFno9M7REfPgFEvsjHqiOhimtN4v9fcGzTEsQVZ8zorm -> ../../dm-0
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-uuid-mpath-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0 -> ../../dm-3
lrwxrwxrwx. 1 root root 10 6月  17 12:11 dm-uuid-mpath-QEMU_HARDDISK_QM00002 -> ../../dm-2
lrwxrwxrwx. 1 root root  9 6月  17 12:11 scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0 -> ../../sdc
[root@fedora18_1 armstrong]# 
同时查看其dmsetup生成的table表

[root@fedora18_1 armstrong]# dmsetup table
fedora-swap: 0 4128768 linear 8:2 2048
fedora-root: 0 28393472 linear 8:2 4130816
0QEMU_QEMU_HARDDISK_drive-scsi0-0-0: 0 4194304 multipath 0 0 1 1 service-time 0 1 2 8:32 1 1 
QEMU_HARDDISK_QM00002: 0 2097152 multipath 0 0 1 1 service-time 0 1 2 8:16 1 1 
[root@fedora18_1 armstrong]# 

[root@fedora18_1 armstrong]# ll /dev/mapper/
总用量 0
lrwxrwxrwx. 1 root root       7 6月  17 12:11 0QEMU_QEMU_HARDDISK_drive-scsi0-0-0 -> ../dm-3
crw-------. 1 root root 10, 236 6月  17 12:11 control
lrwxrwxrwx. 1 root root       7 6月  17 12:11 fedora-root -> ../dm-1
lrwxrwxrwx. 1 root root       7 6月  17 12:11 fedora-swap -> ../dm-0
lrwxrwxrwx. 1 root root       7 6月  17 12:11 QEMU_HARDDISK_QM00002 -> ../dm-2
[root@fedora18_1 armstrong]# 
[root@fedora18_1 armstrong]# 
[root@fedora18_1 armstrong]# ll /dev/sd* 
brw-rw----. 1 root disk 8,  0 6月  17 12:11 /dev/sda
brw-rw----. 1 root disk 8,  1 6月  17 12:11 /dev/sda1
brw-rw----. 1 root disk 8,  2 6月  17 12:11 /dev/sda2
brw-rw----. 1 root disk 8, 16 6月  17 12:11 /dev/sdb
brw-rw----. 1 root disk 8, 32 6月  17 12:11 /dev/sdc
[root@fedora18_1 armstrong]# 
发现系统中的使用的sdb和sdc使用的主次设备号分别是8:16和8:32,在/dev/目录下查看,发现multipath在/dev/sdb和/dev/sdc之上又创建了一个dm设备,其名称分别为QEMU_HARDDISK_QM00002和0QEMU_QEMU_HARDDISK_drive-scsi0-0-0

由此可见,在本文开始时调用mkfs.ext4格式化文件系统时失败主要是因为multipath软件正在使用sdb和sdc。因此停止掉multipathd进程,移除dm设备后,应该就能正常格式化文件系统。

[root@fedora18_1 armstrong]# 
[root@fedora18_1 armstrong]# service multipathd stop
Redirecting to /bin/systemctl stop  multipathd.service
[root@fedora18_1 armstrong]# dmsetup remove_all
[root@fedora18_1 armstrong]# 
[root@fedora18_1 armstrong]# ll /dev/mapper/
总用量 0
crw-------. 1 root root 10, 236 6月  17 12:11 control
lrwxrwxrwx. 1 root root       7 6月  17 12:11 fedora-root -> ../dm-1
lrwxrwxrwx. 1 root root       7 6月  17 12:11 fedora-swap -> ../dm-0
[root@fedora18_1 armstrong]# 
可见由multipathd生成的dm设备已经被移除,下面就可以正常的进行格式化文件系统了。

[root@fedora18_1 armstrong]# 
[root@fedora18_1 armstrong]# mkfs.ext4 /dev/sdb
mke2fs 1.42.5 (29-Jul-2012)
/dev/sdb is entire device, not just one partition!
无论如何也要继续? (y,n) y
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@fedora18_1 armstrong]# 

问题解决。

写在后面的话:其实单纯对mkfs操作来说,使用multipath生成的dm设备也可以进行格式化,但是无法使用sdb和sdc进行pvcreate相关的操作,因为lvm在其配置文件lvm.conf中默认过滤的是sd设备,针对本文这种multipath存在情况的话,pvcreate可能会失败,因此必须对其进行处理。