Giả sử tôi có hai tập lệnh. Việc đầu tiên đặt (với lệnh mv) một số tập tin vào một thư mục, một thứ hai kiểm tra thư mục một lần trong một thời gian và xử lý các tập tin. Tình huống mà tôi quan tâm là khi tập lệnh thứ hai bắt đầu xử lý tệp chỉ được di chuyển một phần vào lúc này. Điều này có thể xảy ra trong cuộc sống thực trên hệ thống tệp XFS không?Điều kiện chủng tộc khi di chuyển tệp trên Linux
Trả lời
Tùy thuộc vào nơi bạn di chuyển tệp từ đó. mv WITHIN một hệ thống tập tin duy nhất là nguyên tử, nếu không nó phải làm một bản sao mà không phải là nguyên tử (theo sau là xóa tập tin gốc), và dễ bị loại điều kiện bạn đề cập đến.
FWIW, đây là ngữ nghĩa POSIX bình thường, không có gì đặc biệt đối với XFS.
Điều kiện chủng tộc sẽ không xảy ra trong trường hợp của bạn trong hệ thống tệp XFS. Tuy nhiên XFS cho phép nhiều quá trình đọc và ghi một tập tin cùng một lúc bằng cách sử dụng lược đồ khóa linh hoạt trái ngược với hệ thống tập tin Unix khóa inode đơn luồng. XFS không quan tâm đến việc tuần tự hóa các ghi trên cùng một vùng bằng nhiều tiến trình.
XFS sử dụng I/O trực tiếp để truy cập tệp. Trực tiếp I/O cho phép ứng dụng chỉ định dữ liệu của nó không được lưu trong bộ nhớ đệm.
Khi sử dụng I/O bình thường, đệm, nhiều người đọc có thể truy cập tệp đồng thời, nhưng chỉ một người viết duy nhất được phép truy cập vào tệp tại một thời điểm. Khi sử dụng I/O trực tiếp, nhiều người đọc và người viết có thể truy cập tập tin cùng một lúc.
- 1. điều kiện chủng tộc trong khóa chung trên hồ sơ?
- 2. Điều kiện chủng tộc (?) Khi sử dụng Swing
- 3. Điều kiện chủng tộc trong Rails first_or_create
- 4. Điều kiện chủng tộc trong glibc/NPTL/Linux mạnh mẽ mutexes?
- 5. Làm cách nào để ptrace của Linux không an toàn hoặc chứa điều kiện chủng tộc?
- 6. Kiểm tra đơn vị, deadlocks, và điều kiện chủng tộc
- 7. Điều kiện chủng tộc trong C# static constructor
- 8. PHP PDO chức năng lastInsertId và chủng tộc điều kiện
- 9. Có thể có "điều kiện chủng tộc" khi sử dụng Asp.Net MVC TempData trên chuyển hướng không?
- 10. Chiến lược giảm thiểu các điều kiện chủng tộc khi cập nhật cookie?
- 11. Kiểm tra đơn vị mã dựa trên chuỗi? Bắt buộc một điều kiện chủng tộc
- 12. Điều kiện chủng tộc với nhân viên web khi thiết lập xử lý onmessage?
- 13. Làm cách nào để đổi tên() mà không có điều kiện chủng tộc?
- 14. Chèn hàng nếu không tồn tại dẫn đến điều kiện chủng tộc?
- 15. Còn điều kiện chủng tộc trong đọc đa luồng thì sao?
- 16. Monitor.Wait/Pulse điều kiện chủng tộc trong một máy chủ đa luồng
- 17. Java Concurrency trong Thực hành: điều kiện chủng tộc trong BoundedExecutor?
- 18. Công cụ phân tích C# /. NET để tìm các điều kiện chủng tộc/deadlocks
- 19. jQuery phạm vi hoặc chủng tộc điều kiện trong AJAX/getJSON
- 20. Meteor: Điều kiện chủng tộc có thể xảy ra với Meteor.collections ở phía máy chủ không?
- 21. Làm thế nào để sử dụng SBCL cung cấp semaphore chống lại điều kiện chủng tộc
- 22. Phương pháp tối ưu hóa nội tuyến có thể gây ra điều kiện chủng tộc không?
- 23. Làm thế nào để đối phó với các điều kiện chủng tộc trong đa luồng?
- 24. Có một khung kiểm tra cho C có buộc các điều kiện chủng tộc không?
- 25. Làm thế nào để tránh điều kiện chủng tộc khi sử dụng phương thức find_or_create của DBIx :: Class :: ResultSet?
- 26. ruby tình trạng chủng tộc đơn giản câu hỏi
- 27. Cách chứng minh điều kiện chủng tộc xung quanh các giá trị không được xuất bản đúng cách?
- 28. làm thế nào để tránh các điều kiện chủng tộc với bộ sưu tập song song scala
- 29. Có thể bỏ qua các tập tin không tồn tại, không có chủng tộc?
- 30. Jquery Di chuyển điều kiện dự phòng CDN
Đạo đức của câu chuyện là bạn có thể đảm bảo bạn an toàn bằng cách đơn giản đảm bảo tập lệnh đầu tiên đưa các mục vào thư mục từ cùng một hệ thống tệp; nếu điều này là nghi ngờ bạn có thể mv chúng vào một thư mục con của thư mục đích * đầu tiên * và sau đó di chuyển chúng ra đến thư mục đích để chắc chắn rằng sự xuất hiện của chúng là nguyên tử. – zmccord