У B-tree есть блоки, на диск оно ходит «блоками».
1. Оно пишет изменившиеся блоки прямо в те места, где блоки лежали ранее?
2. Если блок стал жирнее, нужно аллоцировать новый блок. Есть проблема фрагментации или блоки фиксированного размера и любой блок в на диске физически лежит как 16кб (например)? То есть, возникает ли проблема фрагментации, когда мы взяли с диска блок в 1КБ, дописали туда 160 байт и не можем втиснуть туда, где он лежал?
3. Про double write buffer или как его там я слышал, но это другая тема.