Жизненный цикл СХД

Отложенная запись

Определение

Отложенная запись — режим кэширования, в котором запрос подтверждается после попадания данных в кэш, а перенос на энергонезависимый носитель происходит позже.

Также ищут: write-back cache · write-back · кэш с отложенной записью

Зачем это знать

Подтверждение может прийти раньше переноса данных на носитель. Перед заказом проверьте, где остаются данные, что защищает кэш при отказе и как затем восстанавливается запись.

Связи из словаря

Карта понятия

Отложенная запись
Доказательная часть

Что подтверждено

  1. При write-back завершение запроса подтверждается после попадания данных в кэш; запись на энергонезависимый носитель происходит позднее.

    Граница применимости: Определение SNIA write back cache. Сам режим не указывает способ защиты кэша конкретного устройства.

  2. SNIA указывает риск отказа между подтверждением запроса и переносом данных на носитель. Надёжная реализация write-back сохраняет содержимое кэша при отказе, включая потерю питания, и выгружает его после перезапуска.

    Граница применимости: Требование к надёжной реализации из словаря SNIA; наличие такого механизма у выбранной платы или SSD проверяется отдельно.

  3. Документация PostgreSQL 18 отдельно рассматривает кэш дискового контроллера и кэш самого накопителя. Энергозависимый кэш с отложенной записью на любом из этих уровней может потерять данные при отключении питания.

    Граница применимости: PostgreSQL 18, 28.1 Reliability, абзацы о контроллере и накопителях. Не обобщается на кэш с подтверждённой защитой от потери питания.

  4. В описании PostgreSQL 18 блок BBU питает кэш контроллера после исчезновения системного питания; после восстановления питания данные записываются на накопители.

    Граница применимости: PostgreSQL 18, 28.1 Reliability. Описан батарейный механизм конкретного уровня; срок удержания, исправность и поддержка модели не выводятся из аббревиатуры BBU.

  5. В документальном примере PVE 9.0 с qemu-server 9.0.16 и pve-qemu-kvm 10.0.2-4 для обычного диска RBD выбран cache=writeback: PVE задаёт direct=false и no-flush=false. QEMU передаёт flush в librbd; успешное завершение асинхронного flush, подтверждённое callback без ошибки, соответствует сохранению отложенных записей на диске.

    Граница применимости: Обычный raw-диск RBD через librbd, machine version 10.0, без krbd и PWL. Это контракт выбранных исходников и API, не измерение fsync, не доказательство честности физического кэша и не утверждение, что один fsync всегда равен одной команде flush.

  6. В том же примере cache=unsafe включает no-flush. QEMU пропускает устойчивый сброс и снимает требование FUA на уровне блока; успешный fsync в госте тогда не доказывает, что WAL покинул теряемый кэш клиента RBD.

    Граница применимости: PVE 9.0 / qemu-server 9.0.16 / pve-qemu-kvm 10.0.2-4, PostgreSQL 18 с fsync=on и synchronous_commit=on. Утрата данных зависит от момента отказа и ещё невыгруженных записей; не обещается, что любой опыт обязательно потеряет данные.

Перед спецификацией

Что проверить

  1. Определите, на каком уровне действует отложенная запись.
  2. Сверьте защиту кэша контроллера и защиту накопителя раздельно.
  3. Проверьте состояние защиты и документированный порядок восстановления.
  4. Укажите отказы, которые должна пережить подтверждённая запись.
  5. Сопоставьте восстановленные записи с подтверждениями клиенту на отдельном стенде.
Открытые основания

Первоисточники

  • Документация6
  • Официальная документация
    SNIA Dictionary — write back cache SNIA · SNIA Online Dictionary; номер редакции не указан · проверено

    Проверены момент подтверждения, более поздняя запись на энергонезависимый носитель и необходимость сохранения/выгрузки кэша после отказа.

    Утверждения: 01 · 02

  • Официальная документация
    PostgreSQL 18 Documentation: Reliability PostgreSQL Global Development Group · документация PostgreSQL 18, страница открыта 7 сентября 2026 года · проверено

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен. Проверить выполнение сброса всем трактом хранения, энергозависимые кэши накопителя и контроллера и границы гарантии при потере питания.

    Утверждения: 03 · 04 · 06

  • Официальная документация
    Proxmox qemu-server 9.0.16: настройка кэша блочного устройства Proxmox Server Solutions GmbH · qemu-server 9.0.16; commit 9c094a357bc937ed92708c07a2908289ab1580e3, 5 August 2025 · проверено

    generate_blockdev_drive_cache задаёт direct и no-flush; для unsafe no-flush включён. Это исходный код настройки, не результат испытания конкретной ВМ.

    Утверждения: 05 · 06

  • Официальная документация
    QEMU 10.0.2: драйвер RBD и передача flush в librbd QEMU Project · QEMU v10.0.2, commit ff3419cbacdc9ad0715c716afeed65bb21a2bbbc; базовый файл пакета PVE 10.0.2-4 · проверено

    qemu_rbd_co_flush связан с bdrv_co_flush_to_disk и вызывает rbd_aio_flush. Пакет Proxmox меняет другие части этого файла, включая начальную политику кэша; эти границы учитываются отдельно.

    Утверждения: 05

  • Официальная документация
    Ceph 19.2.3: контракт API rbd_aio_flush Ceph Foundation · Ceph Squid v19.2.3; librbd C API, rbd_aio_flush · проверено

    Успешное завершение rbd_aio_flush через callback без ошибки соответствует сохранению ранее отложенных записей на диске. Это контракт librbd; честность физических контроллеров и накопителей остаётся отдельным условием.

    Утверждения: 05

  • Официальная документация
    QEMU 10.0.2: обработка FUA и сброса блочного кэша QEMU Project · QEMU v10.0.2, commit ff3419cbacdc9ad0715c716afeed65bb21a2bbbc · проверено

    bdrv_driver_pwritev снимает FUA при BDRV_O_NO_FLUSH; bdrv_co_flush пропускает устойчивый сброс при этом флаге. Данный файл не изменён серией патчей pve-qemu-kvm 10.0.2-4.

    Утверждения: 06

Карта знаний

Связанные понятия

Из знания — в навык

Курсы по теме

В каталоге

Подтвердите действие