1、给一块新硬盘sdb分区:

[root@localhost ~]# fdisk /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x12d9a784 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x12d9a784

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-62914559,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):
将使用默认值 62914559
分区 1 已设置为 Linux 类型,大小设为 30 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

备注:如果w保存的时候提示WARNING: Re-reading the partition table failed with error 16: 设备或资源忙。可以试试这些:

(1)fuser -m -v -i -k /dev/sdb 和fuser -m -v -i -k /dev/sdb1 (fuser没有安装,用yum install psmisc安装)

(2)partprobe /dev/sdb

(3)cat /proc/partitions

(4)甚至还试过dd if=/dev/zero of=/dev/sdb bs=1 count=8 seek=512


2、mkfs.ext4 /dev/sdb1格式化报错:

/dev/sdb1 is apparently in use by the system; will not make a 文件系统 here!

试了网上的方法(https://blog.51cto.com/cuchadanfan/1671337),但是并没有看到sdb和sdb1,所以我的情况不一样:

[root@hpf-linux~]# dmsetup status
[root@hpf-linux~]# dmsetup remove_all
[root@hpf-linux~]# dmsetup status


3、最后的解决办法,将centos 7默认的起始扇区2048改成4096后好了。

[root@localhost ~]# fdisk /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x12d9a784 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x12d9a784

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-62914559,默认为 2048):4096
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-62914559,默认为 62914559):
将使用默认值 62914559
分区 1 已设置为 Linux 类型,大小设为 30 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。


4、mkfs.ext4 /dev/sdb1格式化,挂载,开机挂载。



备注:有可能是这个磁盘有坏道,或者是开始的扇区写了什么东西,比如RAID或其它信息。