Nhờ @kasperd tôi đã thực hiện một số điều tra thêm và đây thực sự là vấn đề. Hóa ra tính năng này được gọi là EWEOM (Kết thúc cảnh báo sớm của phương tiện truyền thông) và nó đề cập đến một điểm đánh dấu được đặt trên băng bởi nhà sản xuất băng, do đó, đây không phải là ổ đĩa theo dõi lượng băng đã được lưu.
Tôi đã viết một bản vá cho mbuffer
chương trình tôi đang sử dụng để ghi vào băng, và chắc chắn, tại thời điểm tôi đang đến cuối băng tôi gặp ENOSPC
lỗi trong các write()
cuộc gọi xen kẽ , nhưng tôi có thể tiếp tục viết thêm dữ liệu. Trong trường hợp của tôi, có khá nhiều dữ liệu hơn - trong khoảng từ 8 đến 19 GiB, tùy thuộc vào việc nén dữ liệu không nén được của tôi.
Điều thú vị là sau khi đạt được điểm EWEOM, tốc độ ghi băng giảm đáng kể. Nó gần như giảm một nửa từ 80MB / giây xuống còn khoảng 47MB / giây. Đây dường như không phải là vấn đề về dữ liệu vì ổ đĩa đã duy trì 80MB / giây trong nhiều giờ trước thời điểm này. Bạn có thể nghe thấy động cơ ổ đĩa chạy ở tốc độ chậm hơn và viết lại trên toàn bộ băng để phần này được viết lại không làm tăng tốc độ (vì vậy đây không phải là trường hợp ghi đầu tiên chậm hơn như lúc bắt đầu băng hoàn toàn mới.)
Tôi không thể tìm thấy bất kỳ tài liệu nào về thời điểm đánh dấu EWEOM sẽ xuất hiện trên băng, vì vậy tôi không chắc liệu nó có được chuẩn hóa hay không. Tất cả những gì tôi có thể tìm thấy là một tài liệu tham khảo mơ hồ về các ổ đĩa LTO-6/7 có tỷ lệ này tăng lên 5% không gian băng, có vẻ như rất nhiều. Có lẽ điều này là để cho phép các bộ đệm lớn được xóa do tốc độ ghi cao của băng.
Theo như API Linux, dòng có liên quan nằm trong st.c
mã nguồn trình điều khiển băng SCSI và lời giải thích về hành vi này có trong st
tài liệu trình điều khiển .