sdb
、sdc
、sdd
、およびsde
をテストするために仮想マシンで4つのディスクを使用できます。
最初の3つのディスクはRAID5構成に使用され、最後のディスクはlvmキャッシュドライブとして使用されます。
私が理解していないのは次のとおりです。
チャンクサイズが64KiBの50GBのキャッシュディスクを作成すると、xfs_info
は次のようになります。
[vagrant@node-02 ~]$ xfs_info /data
meta-data=/dev/mapper/data-data isize=512 agcount=32, agsize=16777072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=536866304, imaxpct=5
= sunit=16 swidth=32 blks
naming =version 2 bsize=8192 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=262144, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
ここでわかるように、sunit = 16とswidth = 32は正しく、raid5のレイアウトと一致しているようです。
lsblk -t
の結果
[vagrant@node-02 ~]$ lsblk -t
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sda 0 512 0 512 512 1 deadline 128 4096 0B
├─sda1 0 512 0 512 512 1 deadline 128 4096 0B
└─sda2 0 512 0 512 512 1 deadline 128 4096 0B
├─centos-root 0 512 0 512 512 1 128 4096 0B
├─centos-swap 0 512 0 512 512 1 128 4096 0B
└─centos-home 0 512 0 512 512 1 128 4096 0B
sdb 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_0 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 65536 131072 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_0 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 65536 131072 512 512 1 128 4096 0B
sdc 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_1 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 65536 131072 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_1 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 65536 131072 512 512 1 128 4096 0B
sdd 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_2 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 65536 131072 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_2 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 65536 131072 512 512 1 128 4096 0B
sde 0 512 0 512 512 1 deadline 128 4096 32M
sdf 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-cache_data5_cdata 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5 0 65536 131072 512 512 1 128 4096 0B
└─data5-cache_data5_cmeta 0 512 0 512 512 1 128 4096 32M
└─data5-data5 0 65536 131072 512 512 1 128 4096 0B
sdg 0 512 0 512 512 1 deadline 128 4096 32M
sdh 0 512 0 512 512 1 deadline 128 4096 32M
そして、lvdisplay -a -m data
は私に次のことを与えます:
[vagrant@node-02 ~]$ Sudo lvdisplay -m -a data
--- Logical volume ---
LV Path /dev/data/data
LV Name data
VG Name data
LV UUID MBG1p8-beQj-TNDd-Cyx4-QkyN-vdVk-dG6n6I
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:08 +0000
LV Cache pool name cache_data
LV Cache Origin name data_corig
LV Status available
# open 1
LV Size <2.00 TiB
Cache used blocks 0.06%
Cache metadata blocks 0.64%
Cache dirty blocks 0.00%
Cache read hits/misses 293 / 66
Cache wrt hits/misses 59 / 41173
Cache demotions 0
Cache promotions 486
Current LE 524284
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:9
--- Segments ---
Logical extents 0 to 524283:
Type cache
Chunk size 64.00 KiB
Metadata format 2
Mode writethrough
Policy smq
--- Logical volume ---
Internal LV Name cache_data
VG Name data
LV UUID apACl6-DtfZ-TURM-vxjD-UhxF-tthY-uSYRGq
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:16 +0000
LV Pool metadata cache_data_cmeta
LV Pool data cache_data_cdata
LV Status NOT available
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
--- Segments ---
Logical extents 0 to 12799:
Type cache-pool
Chunk size 64.00 KiB
Metadata format 2
Mode writethrough
Policy smq
--- Logical volume ---
Internal LV Name cache_data_cmeta
VG Name data
LV UUID hmkW6M-CKGO-CTUP-rR4v-KnWn-DbBZ-pJeEA2
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:15 +0000
LV Status available
# open 1
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:11
--- Segments ---
Logical extents 0 to 255:
Type linear
Physical volume /dev/sdf
Physical extents 0 to 255
--- Logical volume ---
Internal LV Name cache_data_cdata
VG Name data
LV UUID 9mHe8J-SRiY-l1gl-TO1h-2uCC-Hi10-UpeEVP
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:16 +0000
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:10
--- Segments ---
Logical extents 0 to 12799:
Type linear
Physical volume /dev/sdf
Physical extents 256 to 13055
--- Logical volume ---
Internal LV Name data_corig
VG Name data
LV UUID QP8ppy-nv1v-0sii-tANA-6ZzK-EJkP-sLfrh4
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:17 +0000
LV Origin of Cache LV data
LV Status available
# open 1
LV Size <2.00 TiB
Current LE 524284
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 768
Block device 253:12
--- Segments ---
Logical extents 0 to 524283:
Type raid5
Monitoring monitored
Raid Data LV 0
Logical volume data_corig_rimage_0
Logical extents 0 to 262141
Raid Data LV 1
Logical volume data_corig_rimage_1
Logical extents 0 to 262141
Raid Data LV 2
Logical volume data_corig_rimage_2
Logical extents 0 to 262141
Raid Metadata LV 0 data_corig_rmeta_0
Raid Metadata LV 1 data_corig_rmeta_1
Raid Metadata LV 2 data_corig_rmeta_2
[vagrant@node-02 ~]$
[vagrant@node-02 ~]$ --- Segments ---
Df7SLj
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:08 +0000
LV Status available
# open 1
LV Size 1023.99 GiB
Current LE 262142
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:8
--- Segments ---
Logical extents 0 to 262141:
Type linear
Physical volume /dev/sdd
Physical extents 1 to 262142
--- Logical volume ---
Internal LV Name data_corig_rmeta_2
VG Name data
LV UUID xi9Ot3-aTnp-bA3z-YL0x-eVaB-87EP-JSM3eN
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:08 +0000
LV Status available
# open 1
LV Size 4.00 MiB
Current LE 1
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:7
--- Segments ---
Logical extents 0 to 0:
Type linear
Physical volume /dev/sdd
Physical extents 0 to 0
--- Logical volume ---
Internal LV Name data_corig
VG Name data
LV UUID QP8ppy-nv1v-0sii-tANA-6ZzK-EJkP-sLfrh4
LV Write Access read/write
LV Creation Host, time node-02, 2019-09-03 13:22:17 +0000
LV Origin of Cache LV data
LV Status available
# open 1
LV Size <2.00 TiB
Current LE 524284
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 768
Block device 253:12
--- Segments ---
Logical extents 0 to 524283:
Type raid5
Monitoring monitored
Raid Data LV 0
Logical volume data_corig_rimage_0
Logical extents 0 to 262141
Raid Data LV 1
Logical volume data_corig_rimage_1
Logical extents 0 to 262141
Raid Data LV 2
Logical volume data_corig_rimage_2
Logical extents 0 to 262141
Raid Metadata LV 0 data_corig_rmeta_0
Raid Metadata LV 1 data_corig_rmeta_1
Raid Metadata LV 2 data_corig_rmeta_2
セグメント内の64KiBのチャンクサイズを明確に確認できます。
しかし、250GBのキャッシュディスクを作成する場合、lvmは、そのキャッシュディスクがサイズに対応するために少なくとも288KiBのチャンクサイズを必要とします。しかし、xfs_info
を実行すると、sunit/swidth
の値が、RAID5レイアウトではなくキャッシュドライブの値と突然一致します。
出力xfs_info
[vagrant@node-02 ~]$ xfs_info /data
meta-data=/dev/mapper/data-data isize=512 agcount=32, agsize=16777152 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=536866816, imaxpct=5
= sunit=72 swidth=72 blks
naming =version 2 bsize=8192 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=262144, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
突然、キャッシュドライブの288KiBのチャンクサイズに一致する72のsunit
とswidth
があり、これはlvdisplay -m -a
で確認できます。
[vagrant@node-02 ~]$ Sudo lvdisplay -m -a data
--- Logical volume ---
LV Path /dev/data/data
LV Name data
VG Name data
LV UUID XLHw3w-RkG9-UNh6-WZBM-HtjM-KcV6-6dOdnG
LV Write Access read/write
LV Creation Host, time node-2, 2019-09-03 13:36:32 +0000
LV Cache pool name cache_data
LV Cache Origin name data_corig
LV Status available
# open 1
LV Size <2.00 TiB
Cache used blocks 0.17%
Cache metadata blocks 0.71%
Cache dirty blocks 0.00%
Cache read hits/misses 202 / 59
Cache wrt hits/misses 8939 / 34110
Cache demotions 0
Cache promotions 1526
Current LE 524284
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:9
--- Segments ---
Logical extents 0 to 524283:
Type cache
Chunk size 288.00 KiB
Metadata format 2
Mode writethrough
Policy smq
--- Logical volume ---
Internal LV Name cache_data
VG Name data
LV UUID Ps7Z1P-y5Ae-ju80-SZjc-yB6S-YBtx-SWL9vO
LV Write Access read/write
LV Creation Host, time node-2, 2019-09-03 13:36:40 +0000
LV Pool metadata cache_data_cmeta
LV Pool data cache_data_cdata
LV Status NOT available
LV Size 250.00 GiB
Current LE 64000
Segments 1
Allocation inherit
Read ahead sectors auto
--- Segments ---
Logical extents 0 to 63999:
Type cache-pool
Chunk size 288.00 KiB
Metadata format 2
Mode writethrough
Policy smq
--- Logical volume ---
Internal LV Name cache_data_cmeta
VG Name data
LV UUID k4rVn9-lPJm-2Vvt-77jw-NP1K-PTOs-zFy2ph
LV Write Access read/write
LV Creation Host, time node-2, 2019-09-03 13:36:39 +0000
LV Status available
# open 1
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:11
--- Segments ---
Logical extents 0 to 255:
Type linear
Physical volume /dev/sdf
Physical extents 0 to 255
--- Logical volume ---
Internal LV Name cache_data_cdata
VG Name data
LV UUID dm571W-f9eX-aFMA-SrPC-PYdd-zs45-ypLksd
LV Write Access read/write
LV Creation Host, time node-2, 2019-09-03 13:36:39 +0000
LV Status available
# open 1
LV Size 250.00 GiB
Current LE 64000
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:10
--- Logical volume ---
Internal LV Name data_corig
VG Name data
LV UUID hbYiRO-YnV8-Gd1B-shQD-N3SR-xpTl-rOjX8V
LV Write Access read/write
LV Creation Host, time node-2, 2019-09-03 13:36:41 +0000
LV Origin of Cache LV data
LV Status available
# open 1
LV Size <2.00 TiB
Current LE 524284
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 768
Block device 253:12
--- Segments ---
Logical extents 0 to 524283:
Type raid5
Monitoring monitored
Raid Data LV 0
Logical volume data_corig_rimage_0
Logical extents 0 to 262141
Raid Data LV 1
Logical volume data_corig_rimage_1
Logical extents 0 to 262141
Raid Data LV 2
Logical volume data_corig_rimage_2
Logical extents 0 to 262141
Raid Metadata LV 0 data_corig_rmeta_0
Raid Metadata LV 1 data_corig_rmeta_1
Raid Metadata LV 2 data_corig_rmeta_2
そして、lsblk -t
の出力
[vagrant@node-02 ~]$ lsblk -t
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sda 0 512 0 512 512 1 deadline 128 4096 0B
├─sda1 0 512 0 512 512 1 deadline 128 4096 0B
└─sda2 0 512 0 512 512 1 deadline 128 4096 0B
├─centos-root 0 512 0 512 512 1 128 4096 0B
├─centos-swap 0 512 0 512 512 1 128 4096 0B
└─centos-home 0 512 0 512 512 1 128 4096 0B
sdb 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_0 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_0 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sdc 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_1 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_1 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sdd 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_2 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_2 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sde 0 512 0 512 512 1 deadline 128 4096 32M
sdf 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-cache_data5_cdata 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-cache_data5_cmeta 0 512 0 512 512 1 128 4096 32M
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sdg 0 512 0 512 512 1 deadline 128 4096 32M
sdh 0 512 0 512 512 1 deadline 128 4096 32M
ここでいくつかの質問が発生します。
XFSは明らかにこれらの設定を自動検出しますが、なぜXFSはキャッシュドライブのチャンクサイズを使用することを選択するのですか?最初の例で見たように、RAID5レイアウトを自動検出できます。
su/sw
オプションをmkfs.xfs
に渡して、正しいsunit/swidth
値を取得できることは知っていますが、この場合はこれを行う必要がありますか?
私は何日もグーグルで検索し、XFSソースコードを調べましたが、XFSがこれを行う理由の手がかりを見つけることができませんでした。
したがって、発生する質問:
su/sw
を実行するときに、mkfs.xfs
を手動で定義する必要があります最適な割り当てポリシーは、さまざまなブロックレイヤーが相互作用する方法に依存するため、複雑な問題です。
最適な割り当てポリシーを決定する際に、mkfs.xfs
は libblkid
によって提供される情報を使用します。 lsblk -t
を発行して同じ情報にアクセスできます。 lvs
(実際にはmkfs.xfs
)のため、device-mapper
が288K割り当てアライメントを使用するのはveryである可能性があります。その値をスタックに渡すだけです。
シンプロビジョニングでも非常によく似た動作が見られました。mkfs.xfs
は思考チャンクサイズでファイルシステムを調整します。
編集:だから、これはlsblk -t
..の出力です。
[vagrant@node-02 ~]$ lsblk -t
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sda 0 512 0 512 512 1 deadline 128 4096 0B
├─sda1 0 512 0 512 512 1 deadline 128 4096 0B
└─sda2 0 512 0 512 512 1 deadline 128 4096 0B
├─centos-root 0 512 0 512 512 1 128 4096 0B
├─centos-swap 0 512 0 512 512 1 128 4096 0B
└─centos-home 0 512 0 512 512 1 128 4096 0B
sdb 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_0 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_0 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sdc 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_1 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_1 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sdd 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-data5_corig_rmeta_2 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-data5_corig_rimage_2 0 512 0 512 512 1 128 4096 32M
└─data5-data5_corig 0 65536 131072 512 512 1 128 384 0B
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sde 0 512 0 512 512 1 deadline 128 4096 32M
sdf 0 512 0 512 512 1 deadline 128 4096 32M
├─data5-cache_data5_cdata 0 512 0 512 512 1 128 4096 32M
│ └─data5-data5 0 294912 294912 512 512 1 128 4096 0B
└─data5-cache_data5_cmeta 0 512 0 512 512 1 128 4096 32M
└─data5-data5 0 294912 294912 512 512 1 128 4096 0B
sdg 0 512 0 512 512 1 deadline 128 4096 32M
sdh 0 512 0 512 512 1 deadline 128 4096 32M
ご覧のとおり、data5-data5
デバイス(その上にxfsファイルシステムを作成)は、294912バイト(288K、キャッシュチャンク)のMIN-IO
およびOPT-IO
を報告します。デバイスは、RAIDアレイのチャンクサイズ(64K)を報告します。これは、device-mapper
が基になるIO情報を現在のキャッシュチャンクサイズで上書きしたことを意味します。
mkfs.xfs
は、libblkid
が報告した内容を単純に使用します。これは、使用されている特定のキャッシュデバイスマッパーターゲットによって異なります。