分区不是从物理扇区边界开始的吗?


44

我的笔记本电脑上有一个高清硬盘,带有两个分区(一个安装了Ubuntu 12.04的ext3和一个交换分区)。

fdisk给我一个分区1不会在物理扇区边界警告时启动。是什么原因,我需要解决它吗?如果是这样,怎么办?


这是sudo fdisk -l

Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 testine, 63 settori/tracce, 91201 cilindri, totale 1465149168 settori
Unità = settori di 1 * 512 = 512 byte
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Identificativo disco: 0x5a25087f

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63  1448577023   724288480+  83  Linux
Partition 1 does not start on physical sector boundary.
/dev/sda2      1448577024  1465147391     8285184   82  Linux swap / Solaris

这是sudo lshw相关的结果:

 *-disk
                description: ATA Disk
                product: WDC WD7500BPKT-0
                vendor: Western Digital
                physical id: 0
                bus info: scsi@0:0.0.0
                logical name: /dev/sda
                version: 01.0
                serial: WD-WX21CC1T0847
                size: 698GiB (750GB)
                capabilities: partitioned partitioned:dos
                configuration: ansiversion=5 signature=5a25087f
              *-volume:0
                   description: EXT3 volume
                   vendor: Linux
                   physical id: 1
                   bus info: scsi@0:0.0.0,1
                   logical name: /dev/sda1
                   logical name: /
                   version: 1.0
                   serial: cc5c562a-bc59-4a37-b589-805b27b2cbd7
                   size: 690GiB
                   capacity: 690GiB
                   capabilities: primary bootable journaled extended_attributes large_files recover ext3 ext2 initialized
                   configuration: created=2010-02-27 09:18:28 filesystem=ext3 modified=2012-06-23 18:33:59 mount.fstype=ext3 mount.options=rw,relatime,errors=remount-ro,user_xattr,barrier=1,data=ordered mounted=2012-06-28 00:20:47 state=mounted
              *-volume:1
                   description: Linux swap volume
                   physical id: 2
                   bus info: scsi@0:0.0.0,2
                   logical name: /dev/sda2
                   version: 1
                   serial: 16a7fee0-be9e-4e34-9dc3-28f4eeb61bf6
                   size: 8091MiB
                   capacity: 8091MiB
                   capabilities: primary nofs swap initialized
                   configuration: filesystem=swap pagesize=4096

这些是相关的/etc/fstab行:

UUID=cc5c562a-bc59-4a37-b589-805b27b2cbd7 /               ext3    errors=remount-ro,user_xattr 0       1
UUID=16a7fee0-be9e-4e34-9dc3-28f4eeb61bf6 none            swap    sw              0       0

Answers:


44

您的硬盘具有4096字节的高级格式扇区,分区未完全对准该扇区

此行解释了警告:

扇区大小(逻辑/物理):512字节/ 4096字节
  • 您的硬盘是较新的型号之一,它使用每个物理扇区4096字节的高级格式,而不是较旧的512字节/扇区。
  • 这些HDD仍然可以提供512字节/扇区的“传统”仿真,这就是为什么您将逻辑扇区大小视为512的原因。
  • 实际上,这lshw表明它是Western Digital驱动器,是第一家改用AF的公司。他们有一个广泛的页面,上面有很多信息,您可能希望看看。

因此,发生警告是因为分区1从逻辑扇区63 =字节32256开始的数字开始,该数字不能被4096整除;因此,分区1从逻辑扇区63 =字节32256开始。实际上,它已经接近第7个物理扇区的末尾(确切地说,位置7.875 :)

你应该修好吗?如果是这样,怎么办?[总是备份!]

理论上,这种分区可能会稍微影响读/写IO速率,具体取决于驱动器的固件。如果您现在对性能感到满意,请忽略警告,而无需执行任何操作。如果不是,请首先备份所有重要数据,然后使用Gparted移动分区,使其从4096字节的扇区开始;将起始边界设置为1 MiB是一种简单的方法。

  • 从技术上讲,您可以将起始位置设置为8的倍数的任何逻辑扇区,例如64是好,256是好,等等,但63、255 ...则不是。

这个答案表明这可能不是问题:askubuntu.com/a/880152/297529
标记

7

对于新的HDD,首先根据需要使用gparted创建分区。

然后,使用sudo fdisk device_name访问硬盘。 fdisk中的m命令将打印帮助菜单。

npcompete @ npcompete-desktop:〜$ sudo fdisk / dev / sda

设备呈现的逻辑扇区大小小于
物理扇区大小。与物理部门保持一致(或最佳)
建议使用I / O)大小边界,否则可能会影响性能。

命令(m以寻求帮助):p

磁盘/ dev / sda:1000.2 GB,1000204886016字节
255个磁头,63个扇区/磁道,121601个圆柱体,总计1953525168个扇区
单位= 1 * 512的扇区= 512字节
扇区大小(逻辑/物理):512字节/ 4096字节
I / O大小(最小/最佳):4096字节/ 4096字节
磁盘标识符:0x0008e009

   设备启动开始端块ID系统
/ dev / sda1 2048 209717247 104857600 83 Linux
/ dev / sda2 209717248 1953525167 871903960 5扩展
/ dev / sda5 600349113 795667319 97659103+ 83 Linux
分区5不在物理扇区边界上开始。
/ dev / sda6 795667383 990985589 97659103+ 83 Linux
分区6不在物理扇区边界上开始。
/ dev / sda7 990985653 1953520064 481267206 83 Linux
分区7不在物理扇区边界上启动。
/ dev / sda8 209719296 600349112 195314908+ 83 Linux

分区表条目不是按磁盘顺序排列的
命令(m以获取帮助):d
分区编号(1-8):5

命令(m以寻求帮助):p

磁盘/ dev / sda:1000.2 GB,1000204886016字节
255个磁头,63个扇区/磁道,121601个圆柱体,总计1953525168个扇区
单位= 1 * 512的扇区= 512字节
扇区大小(逻辑/物理):512字节/ 4096字节
I / O大小(最小/最佳):4096字节/ 4096字节
磁盘标识符:0x0008e009

   设备启动开始端块ID系统
/ dev / sda1 2048 209717247 104857600 83 Linux
/ dev / sda2 209717248 1953525167 871903960 5扩展
/ dev / sda5 795667383 990985589 97659103+ 83 Linux
分区5不在物理扇区边界上开始。
/ dev / sda6 990985653 1953520064 481267206 83 Linux
分区6不在物理扇区边界上开始。
/ dev / sda7 209719296 600349112 195314908+ 83 Linux

分区表条目不是按磁盘顺序排列的

命令(m以获取帮助):w
分区表已更改!

调用ioctl()以重新读取分区表。
同步磁盘。
npcompete @ npcompete-desktop:〜$ sudo fdisk / dev / sda

设备呈现的逻辑扇区大小小于
物理扇区大小。与物理部门保持一致(或最佳)
建议使用I / O)大小边界,否则可能会影响性能。

命令(m以获取帮助):n
分区类型:
   p主要(1个主要,1个扩展,2个免费)
   l逻辑(从5编号)
选择(默认p):l
添加逻辑分区8
第一扇区(600351161-1953525167,默认为600352768): 
使用默认值600352768
最后一个扇区,+个扇区或+ size {K,M,G}(600352768-795667382,默认值795667382): 
使用默认值795667382

命令(m以寻求帮助):p

磁盘/ dev / sda:1000.2 GB,1000204886016字节
255个磁头,63个扇区/磁道,121601个圆柱体,总计1953525168个扇区
单位= 1 * 512的扇区= 512字节
扇区大小(逻辑/物理):512字节/ 4096字节
I / O大小(最小/最佳):4096字节/ 4096字节
磁盘标识符:0x0008e009

   设备启动开始端块ID系统
/ dev / sda1 2048 209717247 104857600 83 Linux
/ dev / sda2 209717248 1953525167 871903960 5扩展
/ dev / sda5 795667383 990985589 97659103+ 83 Linux
分区5不在物理扇区边界上开始。
/ dev / sda6 990985653 1953520064 481267206 83 Linux
分区6不在物理扇区边界上开始。
/ dev / sda7 209719296 600349112 195314908+ 83 Linux
/ dev / sda8 600352768 795667382 97657307+ 83 Linux

分区表条目不是按磁盘顺序排列的

命令(m以获取帮助):w
分区表已更改!

调用ioctl()以重新读取分区表。
同步磁盘。

现在,使用fdisk中的d选项删除发出警告的分区。

首先命令d,然后是分区号(警告中提到)。

现在,使用w命令将更改写入磁盘。它将从fdisk退出。

第二次使用sudo fdisk device_name访问您的HDD 。

现在使用fdisk中的n命令使用可用空间创建一个新分区(以前我们已经删除了一个分区,该分区将是可用空间或未分配空间)。

在“新分区”命令中,不要为“第一和最后一个扇区”输入任何值,只需按Enter即可。它将采用默认值。

现在,使用w命令将更改写入磁盘。它将从fdisk退出。

对所有分区执行上述步骤。完成此格式后,使用gparted新建分区。(这就是我为我所做的工作。fdisk -l输出中没有警告。)


4

正如izx指出的:

您的硬盘具有4096字节的高级格式扇区,分区未完全对齐。

本文很好地解释了高级格式规范及其对用户端硬盘分区实践的影响。

要解决此问题,您必须备份数据,然后执行以下任一操作:

  1. 将大小错误的分区调整为适当的大小。
  2. 删除大小错误的分区,然后创建一个适当大小的新分区。

要使用称为GParted的图形硬盘分区软件来完成此任务,您可以:

  1. 以超级用户权限启动Gparted应用程序;谨慎行事

    gksudo gparted
    
  2. 从GParted菜单右上角的下拉菜单中选择包含大小错误的分区的存储设备。

  3. 通过在矩形分区图中单击,选择大小错误的分区。
  4. 现在,您可以选择删除并创建一个新分区,也可以选择调整现有分区的大小。无论您选择什么,都将出现一个菜单,您可以通过该菜单设置分区的大小。您必须清除“ Round to cylinders”复选框,并将可用空间的大小设置为1MiB。它看起来类似于

GParted-创建新分区


4

通过切换“ u”单位。创建分区时将显示默认扇区大小。如果您开始对新磁盘进行分区,但出现此错误,则可以。

  1. 用defaut创建一个分区。
  2. n,p,1,Enter,Enter
  3. 显示并获取分区错误消息。“ p”。
  4. 开关单元“ u”
  5. 删除分区。“ d”
  6. 现在再次创建。这次默认值将显示正确的扇区。(在我的情况下是1024)。

Command (m for help): p

Disk /dev/sdb: 599.9 GB, 599932844032 bytes
255 heads, 63 sectors/track, 72937 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 524288 bytes
Disk identifier: 0x2016bdc5

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-72937, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-72937, default 72937):
Using default value 72937

Command (m for help): p

Disk /dev/sdb: 599.9 GB, 599932844032 bytes
255 heads, 63 sectors/track, 72937 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 524288 bytes
Disk identifier: 0x2016bdc5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       72937   585866421   83  Linux
Partition 1 does not start on physical sector boundary.

Command (m for help): u
Changing display/entry units to sectors

Command (m for help): p

Disk /dev/sdb: 599.9 GB, 599932844032 bytes
255 heads, 63 sectors/track, 72937 cylinders, total 1171743836 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 524288 bytes
Disk identifier: 0x2016bdc5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63  1171732904   585866421   83  Linux
Partition 1 does not start on physical sector boundary.

Command (m for help): d
Selected partition 1

Command (m for help): p

Disk /dev/sdb: 599.9 GB, 599932844032 bytes
255 heads, 63 sectors/track, 72937 cylinders, total 1171743836 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 524288 bytes
Disk identifier: 0x2016bdc5

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 8
Value out of range.
Partition number (1-4): 1
First sector (63-1171743835, default 1024):
Using default value 1024
Last sector, +sectors or +size{K,M,G} (1024-1171743835, default 1171743835):
Using default value 1171743835

Command (m for help): p

Disk /dev/sdb: 599.9 GB, 599932844032 bytes
255 heads, 63 sectors/track, 72937 cylinders, total 1171743836 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 524288 bytes
Disk identifier: 0x2016bdc5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            1024  1171743835   585871406   83  Linux

Command (m for help): w
The partition table has been altered!

1
我尝试了其他答案中的方法,但是切换到“ u”模式是唯一对我有用的方法。
JosephH 2014年

1
在所有答案中,这也是对我有用的答案。
Avanst,2015年


0

1.解决

我也遇到了这个问题,这就是我如何抑制恼人的警告!

关键点是:set the start to any logical sector, which is a multiple of 8

我设置了204800(因为我只能从65535-976773167中进行选择)。

第一步fdisk

$ fdisk /dev/sdf

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
欢迎使用 fdisk (util-linux 2.23.2)。

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


命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除

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

磁盘 /dev/sdf500.1 GB, 500107862016 字节,976773168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 33553920 字节
磁盘标签类型:dos
磁盘标识符:0xa2254a70

   设备 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

# the key point
# ⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬⏬
起始 扇区 (65535-976773167,默认为 65535):  204800 chose a multiple of 8
Last 扇区, +扇区 or +size{K,M,G} (204800-976773167,默认为 976773167):
将使用默认值 976773167
分区 1 已设置为 Linux 类型,大小设为 465.7 GiB
# 🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼🔼




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

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

step2格式化磁盘

$ mkfs.ext4 /dev/sdf1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=8191 blocks
30523392 inodes, 122071046 blocks
6103552 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2271215616
3726 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
  4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
  102400000

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

第三步结果

最后,警告消失了。

$ fdisk -l /dev/sdf

磁盘 /dev/sdf500.1 GB, 500107862016 字节,976773168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 33553920 字节
磁盘标签类型:dos
磁盘标识符:0xa2254a70

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdf1          204800   976773167   488284184   83  Linux



$ lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 223.6G  0 disk
├─sda1                 8:1    0   500M  0 part /boot/efi
├─sda2                 8:2    0     1G  0 part /boot
└─sda3                 8:3    0   170G  0 part
  ├─centos--sda-root 253:0    0   100G  0 lvm  /
  ├─centos--sda-swap 253:1    0    20G  0 lvm
  └─centos--sda-home 253:2    0    50G  0 lvm  /home
sdb                    8:16   0   1.8T  0 disk /data2
sdc                    8:32   0   1.8T  0 disk
sdd                    8:48   0   1.8T  0 disk /data1
sde                    8:64   0   1.8T  0 disk /home
sdf                    8:80   0 465.8G  0 disk
└─sdf1                 8:81   0 465.7G  0 part

2.这个问题看起来如何

显示磁盘

[root@dt120 data1]# lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 223.6G  0 disk
├─sda1                 8:1    0   500M  0 part /boot/efi
├─sda2                 8:2    0     1G  0 part /boot
└─sda3                 8:3    0   170G  0 part
  ├─centos--sda-root 253:0    0   100G  0 lvm  /
  ├─centos--sda-swap 253:1    0    20G  0 lvm
  └─centos--sda-home 253:2    0    50G  0 lvm  /home
sdb                    8:16   0   1.8T  0 disk /data2
sdc                    8:32   0   1.8T  0 disk
sdd                    8:48   0   1.8T  0 disk /data1
sde                    8:64   0   1.8T  0 disk /home
sdf                    8:80   0 465.8G  0 disk
└─sdf1                 8:81   0 465.7G  0 part

磁盘

$ fdisk /dev/sdf
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

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

磁盘 /dev/sdf500.1 GB, 500107862016 字节,976773168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 33553920 字节
磁盘标签类型:dos
磁盘标识符:0xff020bf0

   设备 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
起始 扇区 (65535-976773167,默认为 65535):
将使用默认值 65535
Last 扇区, +扇区 or +size{K,M,G} (65535-976773167,默认为 976773167):
将使用默认值 976773167
分区 1 已设置为 Linux 类型,大小设为 465.7 GiB

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

磁盘 /dev/sdf500.1 GB, 500107862016 字节,976773168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 33553920 字节
磁盘标签类型:dos
磁盘标识符:0x2b6ce6ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdf1           65535   976773167   488353816+  83  Linux
Partition 1 does not start on physical sector boundary.

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

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


$ lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 223.6G  0 disk
├─sda1                 8:1    0   500M  0 part /boot/efi
├─sda2                 8:2    0     1G  0 part /boot
└─sda3                 8:3    0   170G  0 part
  ├─centos--sda-root 253:0    0   100G  0 lvm  /
  ├─centos--sda-swap 253:1    0    20G  0 lvm
  └─centos--sda-home 253:2    0    50G  0 lvm  /home
sdb                    8:16   0   1.8T  0 disk /data2
sdc                    8:32   0   1.8T  0 disk
sdd                    8:48   0   1.8T  0 disk /data1
sde                    8:64   0   1.8T  0 disk /home
sdf                    8:80   0 465.8G  0 disk
└─sdf1                 8:81   0 465.7G  0 part

格式

$ mkfs.ext4 /dev/sdf1
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdf1 alignment is offset by 512 bytes.
This may result in very poor performance, (re)-partitioning suggested.
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=8191 blocks
30523392 inodes, 122088454 blocks
6104422 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2271215616
3726 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
  4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
  102400000

Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

问题

Partition 1 does not start on physical sector boundary.

$ fdisk -l /dev/sdf

磁盘 /dev/sdf500.1 GB, 500107862016 字节,976773168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 33553920 字节
磁盘标签类型:dos
磁盘标识符:0xa2254a70

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdf1           65535   976773167   488353816+  83  Linux
Partition 1 does not start on physical sector boundary.

-1

如果您使用Windows双启动,则可以使用MiniTool分区向导。这东西救了我很多次。只需右键单击分区,然后单击对齐。不要忘记单击“应用”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.