AWS EBS卷的实际物理扇区大小是多少?
EBS向OS公告physical_block_size和logical_block_size为512
ubuntu@ip-172-31-28-17:~$ cat /sys/block/xvdi/queue/physical_block_size
512
ubuntu@ip-172-31-28-17:~$ cat /sys/block/xvdi/queue/logical_block_size
512
我们正在从RDS迁移到Postgres到EC2实例(具有压缩功能的EBS上的ZFS)。创建zpool时,未提供ashift
值
ubuntu@ip-172-31-28-17:~$ sudo zpool create pgstripe /dev/xvdf1 /dev/xvdg1 /dev/xvdh1 /dev/xvdi1
....
ubuntu@ip-172-31-28-17:~$ sudo zpool get ashift
NAME PROPERTY VALUE SOURCE
pgstripe ashift 0 default
据说ashift=9
的值可能会影响现代存储设备的性能。因此,在验证池的ashift
的实际值后,发现它确实是ashift=9
ubuntu@ip-172-31-28-17:~$ sudo zdb -U /etc/zfs/zpool.cache
pgstripe:
version: 5000
name: 'pgstripe'
state: 0
txg: 21518
pool_guid: 18259321190878592884
errata: 0
hostname: 'ip-172-31-28-17'
vdev_children: 4
vdev_tree:
type: 'root'
id: 0
guid: 18259321190878592884
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 6596053233879303485
path: '/dev/xvdf1'
whole_disk: 0
metaslab_array: 39
metaslab_shift: 31
ashift: 9
asize: 322116780032
is_log: 0
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 10755479908569617562
path: '/dev/xvdg1'
whole_disk: 0
metaslab_array: 37
metaslab_shift: 31
ashift: 9
asize: 322116780032
is_log: 0
create_txg: 4
children[2]:
type: 'disk'
id: 2
guid: 7517133622037333375
path: '/dev/xvdh1'
whole_disk: 0
metaslab_array: 36
metaslab_shift: 31
ashift: 9
asize: 322116780032
is_log: 0
create_txg: 4
children[3]:
type: 'disk'
id: 3
guid: 17044638243598443214
path: '/dev/xvdi1'
whole_disk: 0
metaslab_array: 34
metaslab_shift: 31
ashift: 9
asize: 322116780032
is_log: 0
create_txg: 4
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
所以要提出实际的问题
ashift=9
是否已针对基础EBS卷进行了充分优化?ashift=12
的池中ashift=9
的性能是否比recordsize=128K
更好?已经使用默认值ashift完成了postgres负载测试,因此将使用显式ashift=12
重复相同的操作。
答案 0 :(得分:0)
对于EBS,物理磁盘扇区大小已完全抽象掉。 EBS卷是网络连接的存储。此存储可以包含数千个磁盘驱动器。现代SAN控制器可以同时支持多种类型的磁盘驱动器。
在当今的磁盘驱动器中,报告的物理扇区大小为512字节和4096字节。但是,这仅仅是一种寻址方案,因为磁道大小决定了性能。磁盘外部磁道上的磁道大小大于内部磁道上的磁道大小。一些磁盘驱动器会增加内部磁道的BPI,但这可能会带来更高的错误率。
如果您认为可以根据一些理论扇区大小来优化EBS容量,那是错误的。明天您此时看到的数字可能会完全不同。诸如控制器,网络延迟,网络速度,与物理驱动器的距离等因素均相互影响。
通过使用更大的块大小,您将获得更好的结果。实际物理扇区大小不再是一个相关的概念。另外,您无法控制AWS向VM报告的“逻辑”物理扇区大小。
答案 1 :(得分:0)
EBS为您提供特定的IOPS,并将IOP定义为“最大16KB”。
通过启用lz4压缩并使用尽可能大的记录大小(除非有理由减小大小)可以在EBS上获得最佳性能,因为这将使压缩更加有效。变小的原因通常与使用写在较小页面上的应用程序有关。例如,您可能想为MySQL / InnoDB设置recordsize = 16kb或为PostgreSQL设置recordsize = 8kb。
但是除非您有非常充分的理由不这样做,否则始终将ashift = 12设置为,即使这样,此类原因通常也涉及增加而不是减少移位。