Có sự thật với triết lý mà bạn nên đồng bộ hóa; đồng bộ hóa; đồng bộ hóa; đồng bộ hóa?


27

Khi tôi lần đầu tiên được giới thiệu với Linux, làm việc tại Cisco Systems vào năm 2000, tôi đã được dạy về ưu điểm của synclệnh, được sử dụng để xóa bộ đệm vào đĩa để ngăn ngừa mất dữ liệu / hỏng hệ thống tệp. Tôi được các đồng nghiệp ở đó nói không chỉ bởi những người bạn ở trường đại học luôn luôn chạy sync"một vài" hoặc "một bó" nhiều lần, nghĩa là có thể 5 - 10 lần, thay vì chỉ một lần.

Tôi đã tiếp tục thói quen này kể từ đó, nhưng, có công đức nào cho việc này không? Có ai khác từng nghe điều này? Và quan trọng nhất, bất cứ ai cũng có thể cung cấp bằng chứng hợp lý / bằng chứng thực nghiệm tốt cho / chống lại ý tưởng rằng bạn cần phải chạy syncnhiều hơn một lần để nó có hiệu quả?

Câu trả lời:


34

Tôi nghe thấy nó (xin lỗi, tôi quên ở đâu) khi gõ synclệnh ba lần (như trong : S Y N C Return, chờ lời nhắc, lặp lại, lặp lại). Tôi cũng đọc rằng nguồn gốc là một hệ thống cụ thể trong đó sẽ mất vài giây để đĩa hoàn tất việc xóa bộ đệm của nó, ngay cả sau khi nó đã nói với hệ điều hành mọi thứ đều ổn. Gõ lệnh hai lần nữa cho đĩa đủ thời gian để giải quyết. Dường như trong nhiều năm, mục đích đã bị lãng quên và lời khuyên được viết tắt là sync; sync; syncnó sẽ không có hiệu quả mong muốn (vì đĩa đã báo cáo tất cả rõ ràng, các đồng bộ thứ hai và thứ ba sẽ hoàn thành ngay lập tức và lời nhắc sẽ trở lại quá sớm).

Tôi chưa bao giờ nghe nói về một hệ thống mà nhiều synchoạt động có bất kỳ việc sử dụng nào và tôi rất nghi ngờ bất kỳ sự tồn tại nào. Tôi coi đây là một truyền thuyết đô thị. Mặt khác, tôi thấy rất đáng tin rằng sẽ có những hệ thống mà bạn nên đợi một vài giây sau khi đồng bộ hóa và trước khi tắt nguồn.

Googling dẫn đến một vài phân tích đồng tình độc lập, ví dụ Truyền thuyết về đồng bộ hóa . Xem thêm Việc thực hiện đồng bộ hóa (8) có còn cần thiết trước khi tắt linux không? .


1
Thật sự cảm ơn! Tôi nên làm rõ, trong khi tôi đặt sync; sync; sync; synctiêu đề, và đôi khi tôi gõ nó theo cách đó, tôi cũng nghe nó giải thích cho tôi theo cách tương tự, đó là, đồng bộ hóa, chờ đợi, đồng bộ hóa lại, chờ đợi, v.v.
Josh

9

Đồng hồ bấm giờ cũ đây. Quay trở lại thời kỳ huy hoàng của TAPE, 3 lần đồng bộ hóa nhanh liên tiếp là một cách để nói với các bộ điều khiển TAPE không chỉ hủy liên kết / giải mã luồng băng, mà còn tua lại, tức là đặt đầu FD / rw-head đến 0.

"đồng bộ hóa, đồng bộ hóa, đồng bộ hóa" thực sự chỉ được sử dụng, một cách hiệu quả, bởi những người trong chúng ta đã cắt răng bằng Unix dựa trên TAPE, tức là các ứng dụng có tệp được gắn trên / var / spool, bộ nhớ rẻ nhất có thể tại thời điểm đó. ;)

Hướng dẫn vận hành MIPS Risc / OS có một trang về điều này ..


6

Chắc chắn có các hệ thống UNIX cũ hơn mà an toàn hơn khi đồng bộ hóa nhiều lần, nhưng không phải tất cả trên một dòng lệnh là "đồng bộ hóa, đồng bộ hóa, đồng bộ hóa". Vào giữa những năm 80, điều này đã được chắt lọc thành:

Khi bạn tắt hệ thống, bạn sẽ đồng bộ ba lần. Không nhiều không ít. Ba sẽ là số lượng đồng bộ hóa và số lượng đồng bộ hóa sẽ là ba. Bốn lần bạn sẽ không đồng bộ hóa, không đồng bộ hóa hai lần, ngoại trừ việc bạn tiến hành đồng bộ hóa lần thứ ba ...

Tôi thực sự không biết ba lần đến từ đâu, ngoại trừ có thể đó là niềm vui. Nhưng từ trên đường phố để làm điều đó hai lần. Không phải là "đồng bộ; đồng bộ hóa", mà là hai dòng riêng biệt trên vỏ.

Quay trở lại những ngày trước, V7 UNIX, việc sửa chữa hệ thống tệp không thú vị lắm. Bạn phải làm điều đó bằng tay, biết rất nhiều về cách hệ thống tập tin hoạt động và các đặc điểm riêng của các chương trình như dcheck, ncheck và icheck. fsck, nếu bạn có nó, không phải lúc nào bạn cũng tin tưởng.

Điều này đang bắt đầu nghe giống như một câu chuyện "chúng tôi đi qua tuyết trên cả hai chiều". Chà, chúng tôi không có các lệnh ưa thích như khởi động lại hoặc tắt máy. Khi bạn muốn khởi động lại hệ thống, bạn đã đồng bộ hóa hệ thống tệp với đồng bộ hóa và sau đó bạn nhấn Ctrl-P trên bàn điều khiển để tạm dừng hệ thống.

Khi lệnh đồng bộ hóa thoát, kernel đã lên lịch đồng bộ hóa, nhưng không phải tất cả các bộ đệm (bao gồm cả siêu khối hệ thống tập tin quan trọng) đều nhất thiết phải đưa nó vào đĩa. Vì vậy, nó khá dễ dàng để chạy đồng bộ hóa và sau đó tạm dừng mọi thứ trước khi nó an toàn.

Chạy đồng bộ lại là một việc dễ dàng, chiếm thời gian và có một sự hấp dẫn trực quan nhất định mà không cần phải hiểu tất cả, hoặc xử lý các hướng dẫn mơ hồ như "đếm đến 10" hoặc đại loại như thế.

Thậm chí còn có một phần BUG trên trang man V7 updatecũng cho biết:

Khi cập nhật đang chạy, nếu CPU bị dừng ngay khi quá trình đồng bộ hóa được thực thi, một hệ thống tệp có thể bị hỏng. Điều này một phần là do phần cứng DEC ghi số không khi yêu cầu NPR không thành công. Một sửa chữa sẽ là đồng bộ hóa (1) tạm thời tăng thời gian hệ thống ít nhất 30 giây để kích hoạt việc thực hiện cập nhật. Điều này sẽ cung cấp cho 30 giây ân sủng để ngăn chặn CPU.

(nhân tiện, đây là điều cuối cùng trong Tập 1 của hướng dẫn sử dụng V7)

Theo thời gian, các công cụ hệ thống tập tin và các chương trình để tắt và khởi động lại hệ thống trở nên tốt hơn để tránh phải đối phó với điều này. Văn hóa dân gian, voodoo và ma thuật hệ thống xâm nhập vào nó khi hệ thống hành xử một cách bí ẩn. Đồng bộ hóa hai lần khiến bạn ít phải sử dụng nhíp bit để đặt hệ thống tập tin của mình lại với nhau, vì vậy nó trở thành một phần của nghi thức. Một khi bạn đã thực hiện nó một loạt các lần, bạn làm điều đó mà không cần suy nghĩ. Sau đó, có người thông báo và hỏi tại sao. Và câu trả lời là, "Luôn luôn làm theo cách đó. An toàn hơn."

Tôi sẽ không cho rằng điều này là có thẩm quyền và tôi có thể sai về một số chi tiết. Nhưng tôi nghĩ nó khá gần với nguồn gốc.


Nghe có vẻ giống như những gì tôi học được ... nhưng đó chỉ là voodoo hay thực sự có lý do gì không? Một số câu trả lời khác đưa ra gợi ý tốt về cách mà thói quen này có thể đã hình thành trong số chúng tôi sysadins
Josh

@Josh lý do đã được đưa ra. "Khi lệnh đồng bộ hóa thoát, kernel đã lên lịch đồng bộ hóa, nhưng không phải tất cả các bộ đệm (bao gồm cả siêu khối hệ thống tập tin quan trọng) đều nhất thiết phải đưa nó vào đĩa." Xem thêm: "Theo thông số kỹ thuật tiêu chuẩn (ví dụ: POSIX.1-2001), sync () lên lịch ghi, nhưng có thể quay lại trước khi viết thực tế." man7.org/linux/man-pages/man2/sync.2.html
sourcejedi ngày
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.