对于许多新的硬盘驱动器,物理扇区大小为4096。是否可以使系统使用相同大小的逻辑扇区大小,而不是使用默认逻辑扇区大小512?
它会加快批量读取和写入的速度吗?在哪里可以配置?
对于许多新的硬盘驱动器,物理扇区大小为4096。是否可以使系统使用相同大小的逻辑扇区大小,而不是使用默认逻辑扇区大小512?
它会加快批量读取和写入的速度吗?在哪里可以配置?
Answers:
512字节不是默认的扇区大小。这取决于您的硬件。
您可以通过以下方式显示磁盘报告的物理/逻辑扇区大小 /sys
伪文件系统,例如:
# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512
这两个值有什么区别?
physical_block_size
是驱动器能够以原子操作写入的最小块大小。logical_block_size
是最小尺寸的驱动器能够写入(参见linux内核文件)。因此,如果您有4k驱动器,则说明您的存储堆栈(文件系统等)使用的物理空间等于或大于物理扇区的大小。
这些值还会显示在的最新版本中fdisk
,例如:
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
在当前的Linux发行版中,程序(应该关注最佳扇区大小)如下 mkfs.xfs
默认会选择最佳扇区大小(例如4096字节)。
但是您也可以通过选项来明确指定它,例如:
# mkfs.xfs -f -s size=4096 /dev/sda
要么:
# mkfs.ext4 -F -b 4096 /dev/sda
无论如何,大多数 mkfs
变体还将在执行期间显示使用的块大小。
对于现有文件系统,可以使用以下命令来确定块大小:
# xfs_info /mnt
[..]
meta-data= sectsz=4096
data = bsize=4096
naming =version 2 bsize=4096
log =internal bsize=4096
= sectsz=4096
realtime =none extsz=4096
要么:
# tune2fs -l /dev/sda
Block size: 4096
Fragment size: 4096
要么:
# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size 4
sys_array_size 97
sectorsize 4096
nodesize 16384
leafsize 16384
stripesize 4096
dev_item.sector_size 4096
在分区上创建文件系统时,要检查的另一件事是分区起始地址是否实际与物理块大小对齐。例如,查看fdisk -l
输出,将起始地址转换为字节,然后将其除以物理块大小-如果分区对齐,则提示必须为零。
fdisk -l
,将其除以8,然后再除以512。余数不是0,因此分区似乎未对齐
fdisk -l
报告Units = sectors of 1 * 512 = 512 bytes
-因此,对于512/4096逻辑/物理驱动器,该磁盘具有2个从2048和1026048开始的分区,我进行了计算2048*512%4096
,1026048*512%4096
例如-在python shell中。由于两个表达式都等于零,因此这些分区是4k对齐的。
不,这是不可能的,如果有的话,也没有关系。IO通常至少以4096字节为单位完成,通常还要更多。
是的,这是可能的,但是这样做会导致驱动器填充速度比预期的快得多。对于小于512K的文件,由于大多数文件系统(NTFS等)无法允许文件共享扇区,因此每个文件将占用完整的4096K(4MB),并用0填充扇区的其余部分。文件系统的最佳选择是允许可变的扇区大小,但是,这增加了MFT(主文件表)的大小,并增加了数据损坏的风险,同时降低了轻松恢复数据的能力。换句话说,恢复软件不会完全了解边界。因此,虽然4096K的逻辑扇区大小对于大文件来说是很棒的,但对于普通的日常使用PC,它只是一堆0。现在,话虽如此,当数据小于逻辑扇区大小时,可以选择将数据存储在MFT本身中。但是,这意味着您的MFT变得巨大,数据将被写入两次(HDD上有MFT的两个副本)。您还必须指定MFT的最大大小,当达到最大大小或驱动器使用量超过MFT可用的最大可用容量时,这可能会引起问题。所有这些都是基于NTFS文件系统的用法。更好的是,NTFS确实允许您在4MB或更小的逻辑扇区大小的块级别对文件使用本机压缩。由于NTFS压缩的工作方式而应用了此限制。无论逻辑扇区大小如何,都将读取和压缩4MB的块。当然,
那么,这对您有帮助吗?
Sector:
1) Logical Sector: Called Native Sector.
Manufacture default setting. user cannot change.
Before 2010 year: 512b/sector
After 2010 year: 4k/sector.
Few manufacture provide HDD tool to change native sector.
2) Physical Sector: Called Cluster(or allocation unit - FAT windows) or Block(Linux/Unix)
User can change physical sector size 512b,1k,2k,4k,... by format or partition tool. Physical sector contains one or few more native sectors.
(example1: if you have HDD 512b/native sector: user can set 4K/Physical sector. this mean 1 cluster = 4 native sector)
(example2: if you have HDD 4K/native sector: user can set 4K/Physical sector. this mead 1 cluster = 1 native sector)
3) File system deal with Physical sector(or block or Cluster) only.
mkfs.*
应自动使用最佳扇区大小。您可以进行一些mkfs.*
测试并检查结果(在mkfs的详细输出中或在相关的fs实用程序中)。