Ukážeme si, jak rozšířit oddíly bluestore block.db a jak migrovat data po přetečení dat do pomalé databáze (od Ceph v14.1.0 a výše).
Ceph status
cluster:
id: 29a36dca-61f5-48e9-933b-078831e85f3e
health: HEALTH_WARN
BlueFS spillover detected on 2 OSD(s)
Ukážeme si konfiguraci na našem testovacích cephu. V serveru máme celkem 6 disků:
$ lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
wwn-0x5000039bb8ca2b96 blockdb -wi-ao---- 25.00g
wwn-0x5000039bb8ca2bbe blockdb -wi-ao---- 25.00g
wwn-0x5000039bb8ca2bcd blockdb -wi-ao---- 25.00g
wwn-0x5000039bb8ca2d04 blockdb -wi-ao---- 25.00g
osd-block-868c7fc0-890b-4d40-96ea-b595ab9d5356 ceph-024b0fb2-e8b7-4f6a-ac86-c178193c94ce -wi-ao---- 16.37t
osd-block-ee210a8c-439b-4409-9c7b-960ee704d473 ceph-323660ba-282e-40c5-bc91-2a38b38230a1 -wi-ao---- 16.37t
osd-block-bef2c7b6-7e49-4faf-a3dc-1a7867ae8f64 ceph-a4bb2303-d4ca-4cfe-98c3-56b0799c4789 -wi-ao---- 16.37t
osd-block-b6828b1f-69f1-4a54-a411-1284e73adba3 ceph-e1359d50-6cee-4dba-80dd-18f27f6913f0 -wi-ao---- 16.37t
V serveru jsme původně měli jen 120GB SSD, takže jsme block.db zařízení udělali jen 25GB s tím, že se po výměně disků rozšíří na požadovaných 30GB.
$ ceph daemon osd.1 perf dump | jq .bluefs.slow_used_bytes
3920232448
Zajímavé je, že by v block.db ještě nějaké dostupné místo mělo být a dokonce by mělo být dostatečné pro data, která máme zapsaná do pomalé storage. Možná to souvisí s alokací místa, kterou si ceph interně dělá a které by měl ale konkrétní vysvětlení pro to ještě nemáme.
$ ceph daemon osd.1 perf dump | jq '.bluefs | to_entries[] | select(.key|startswith("db_"))'
{
"key": "db_total_bytes",
"value": 25769795584
}
{
"key": "db_used_bytes",
"value": 21201158144
}
A ještě si zobrazíme data pomocí ceph-bluestore-tool
:
$ ceph-bluestore-tool show-label --path /var/lib/ceph/osd/ceph-1
inferring bluefs devices from bluestore path
{
"/var/lib/ceph/osd/ceph-1/block": {
"osd_uuid": "868c7fc0-890b-4d40-96ea-b595ab9d5356",
"size": 18000203743232,
"btime": "2023-11-06 12:27:28.513510",
"description": "main",
"bluefs": "1",
"ceph_fsid": "29a36dca-61f5-48e9-933b-078831e85f3e",
"kv_backend": "rocksdb",
"magic": "ceph osd volume v026",
"mkfs_done": "yes",
"osd_key": "AQCdzUhlYyfmEBAAnlQ1mIo3QQoJFR9ZpfZaPw==",
"ready": "ready",
"require_osd_release": "14",
"whoami": "1"
},
"/var/lib/ceph/osd/ceph-1/block.db": {
"osd_uuid": "868c7fc0-890b-4d40-96ea-b595ab9d5356",
"size": 25769803776,
"btime": "2023-11-06 12:27:28.516371",
"description": "bluefs db"
}
}
To ale nevadí. SSD jsou levná, takže se pustíme do zvětšování prostoru.
Vypneme rebalancing
Budeme vypínat OSD, takže si nejdříve na monitor serveru zajistíme, aby se nepustil rebalancing:
ceph osd set noout
ceph osd set nobackfill
ceph osd set norecover
Vypneme OSD
service ceph-osd@1 stop
Zvětšíme si postiženou LVM volume
lvresize -L +6G /dev/blockdb/wwn-0x5000039bb8ca2b96
Řekneme cephu o zvětšení block.db
$ ceph-bluestore-tool bluefs-bdev-expand --path /var/lib/ceph/osd/ceph-1
inferring bluefs devices from bluestore path
1 : device size 0x7c0000000 : own 0x[2000~5ffffe000] = 0x5ffffe000 : using 0x4efb00000(20 GiB)
2 : device size 0x105effc00000 : own 0x[7dbadf50000~a7a3d50000] = 0xa7a3d50000 : using 0xe9aa0000(3.7 GiB) : bluestore has 0x45e47ac0000(4.4 TiB) available
Expanding DB/WAL...
1 : expanding from 0x600000000 to 0x7c0000000
1 : size label updated to 33285996544
Můžeme zkontrolovat, že se nám block.db opravdu zvětšila (zkrácený výpis)
$ ceph-bluestore-tool show-label --path /var/lib/ceph/osd/ceph-1
...
"/var/lib/ceph/osd/ceph-1/block.db": {
"osd_uuid": "868c7fc0-890b-4d40-96ea-b595ab9d5356",
"size": 33285996544,
"btime": "2023-11-06 12:27:28.516371",
"description": "bluefs db"
}
Přemigrujeme block.db data z pomalého úložiště na rychlejší
$ ceph-bluestore-tool --path /var/lib/ceph/osd/ceph-1 --devs-source /var/lib/ceph/osd/ceph-1/block --dev-target /var/lib/ceph/osd/ceph-1/block.db --command bluefs-bdev-migrate
inferring bluefs devices from bluestore path
Spustíme OSD
service ceph-osd@1 start
Ceph už máme zase v pořádku.
$ ceph status
cluster:
id: 29a36dca-61f5-48e9-933b-078831e85f3e
health: HEALTH_OK