Tôi đang gặp lỗi Fsync. Tại sao?


12

Tôi đã cố gắng thay đổi dấu thời gian tcp trong ví dụ Ec2 (đó là Ubuntu 12.04). Tôi mở trình soạn thảo và thay đổi giá trị 1từ 0. Và khi tôi cố lưu tập tin, tôi gặp lỗi này:

/proc/sys/net/ipv4/tcp_timestamps" E667: Fsync failed

Tôi rất mới với Ubuntu. Bất cứ ai có thể giúp tôi trong việc này?

Câu trả lời:


26

Trình chỉnh sửa của bạn có thể đang làm những điều thú vị cho tệp đó (các tệp trong / Proc không phải là các tệp thực tế, chúng là giao diện cho các cấp thấp hơn của hệ điều hành). Mặc dù thay đổi có thể hoạt động tốt, nhưng cách cập nhật thông thường trong Proc là trực tiếp với lệnh shell, như:

echo 1 | sudo dd of=/proc/sys/net/ipv4/tcp_timestamps

Nếu bạn muốn cài đặt này được áp dụng mỗi khi bạn khởi động, hãy tạo một tệp có tên /etc/sysctl.d/tcp-timestamps.conf, chứa các mục sau:

net.ipv4.tcp_timestamps = 1

3
Mẫu này (echo VALUE | sudo dd of = / path / to / file) rất hữu ích. Cảm ơn rât nhiều!
Malcolm

1
Làm việc cho tôi quá cho điều này và để thiết lập các tham số kernel khác. Điều này đã giúp thiết lập một tham số kernel khác gọi là allow_tpm. tiếng vang 1 | sudo dd của = / sys / module / libata / tham số / allow_tpm

1
Mục đích của là dd ofgì? Tất cả những gì tôi hiểu là tiếng vang và đường ống, nhưng tôi không hiểu tại sao dd lại cần thiết. Tại sao không >thay thế?
Adelin

1
@Adelin Có ddđể thực hiện ghi như root. Phần còn lại của đường ống lệnh không cần phải có đặc quyền, vì vậy dd là phần duy nhất mà chúng ta chạy theo sudo. Nếu chúng ta chạy toàn bộ hệ thống gốc, >chuyển hướng sẽ ổn. Nhưng tôi muốn giảm thiểu những gì được chạy với root private.
Jeremy Kerr

7

Đôi khi chúng tôi đã nhận được chính xác cùng một lỗi. Sau khi lãng phí vài phút trong cuộc điều tra cho thấy không còn chỗ trống trên thiết bị. Bạn có thể kiểm tra nếu nó là trường hợp cho bạn. Hãy thử giải phóng một số lưu trữ để nhanh chóng khắc phục sự cố.


2
Không biết tại sao bạn bị hạ cấp. Là kết quả đầu tiên trong google và giải quyết vấn đề của tôi, vì vậy cảm ơn bạn rất nhiều!
Julian Stadler

3

Tôi thấy điều này đã được trả lời chính xác từ lâu, nhưng có lệnh đơn giản hơn:

sudo sysctl net.ipv4.tcp_timestamps=1

Ngoài ra, bạn có thể làm tương tự với các cài đặt khác như:

sudo sysctl vm.admin_reserve_kbytes=16384

Như bạn có thể thấy, bạn có thể sửa đổi bất kỳ tệp nào trong / Proc / sys / bằng cách chỉ định phần còn lại của vị trí của nó, trong khi thay đổi dấu phân cách từ "/" thành "."

Ví dụ: "/ Proc / sys / net / ipv4 / tcp_timestamp" được chỉ định là "net.ipv4.tcp_timestamp"


1

Fsync thất bại CẢNH BÁO: Tệp gốc có thể bị mất hoặc bị hỏng không thoát khỏi trình chỉnh sửa cho đến khi tệp được ghi thành công!

Có thể là một vấn đề không gian khi xóa một vài tệp làm việc cho tôi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.