Sự khác biệt giữa các tùy chọn gắn kết 'đồng bộ hóa' và 'không đồng bộ'


42

Sự khác biệt giữa syncasynctùy chọn gắn kết từ quan điểm của người dùng cuối là gì? Hệ thống tập tin được gắn với một trong các tùy chọn này có hoạt động nhanh hơn so với khi được gắn với một tùy chọn khác không? Tùy chọn nào là mặc định, nếu không có tùy chọn nào được đặt?

man mountnói rằng synctùy chọn đó có thể làm giảm tuổi thọ của bộ nhớ flash, nhưng nó có thể do trí tuệ thông thường lỗi thời. Dù sao, điều này làm tôi lo lắng một chút, bởi vì ổ cứng chính của tôi, nơi đặt các phân vùng //homeđược đặt, là ổ SSD.

Cài đặt Ubuntu (14.04) đã không được xác định synccũng không asynclựa chọn cho /phân vùng, nhưng đã đặt asynccho /homebởi tùy chọn defaults. Đây là của tôi /etc/fstab, tôi đã thêm một số dòng bổ sung (xem bình luận), nhưng không thay đổi bất cứ điều gì trong các dòng được thực hiện bởi trình cài đặt:

# / was on /dev/sda2 during installation
UUID=7e4f7654-3143-4fe7-8ced-445b0dc5b742 /     ext4  errors=remount-ro 0  1
# /home was on /dev/sda3 during installation
UUID=d29541fc-adfa-4637-936e-b5b9dbb0ba67 /home ext4  defaults          0  2
# swap was on /dev/sda4 during installation
UUID=f9b53b49-94bc-4d8c-918d-809c9cefe79f none  swap  sw                0  0

# here goes part written by me:

# /mnt/storage
UUID=4e04381d-8d01-4282-a56f-358ea299326e /mnt/storage ext4 defaults  0  2
# Windows C: /dev/sda1
UUID=2EF64975F6493DF9   /mnt/win_c    ntfs    auto,umask=0222,ro      0  0
# Windows D: /dev/sdb1
UUID=50C40C08C40BEED2   /mnt/win_d    ntfs    auto,umask=0222,ro      0  0

Vì vậy, nếu tôi /dev/sdalà SSD, tôi có nên - vì mục đích giảm hao mòn - thêm asynctùy chọn cho //homehệ thống tệp? Tôi nên đặt synchoặc asynctùy chọn cho các phân vùng bổ sung mà tôi đã xác định trong /etc/fstab? Cách tiếp cận được khuyến nghị cho ổ SSD và ổ cứng là gì?



@Gnouc Điều gì là sai với crossposting? Dù sao, tôi đã xóa bài đăng từ Hỏi Ubuntu, như bạn yêu cầu.

Câu trả lời:


49

asynclà ngược lại sync, mà hiếm khi được sử dụng. asynclà mặc định, bạn không cần chỉ định rõ ràng.

Tùy chọn này synccó nghĩa là tất cả các thay đổi đối với hệ thống tệp theo ngay lập tức được xóa vào đĩa; các hoạt động viết tương ứng đang được chờ đợi. Đối với các ổ đĩa cơ có nghĩa là làm chậm rất lớn vì hệ thống phải di chuyển đầu đĩa đến đúng vị trí; với syncquá trình người dùng phải chờ cho hoạt động hoàn tất. Ngược lại, với asyncbộ đệm hệ thống, thao tác ghi và tối ưu hóa ghi thực tế; Trong khi đó, thay vì bị chặn, quá trình trong vùng người dùng tiếp tục chạy. (Nếu có lỗi xảy ra, sau đó close()quay lại -1với errno = EIO.)

SSD: Tôi không biết bộ nhớ SSD được so sánh với bộ nhớ RAM nhanh như thế nào, nhưng chắc chắn nó không nhanh hơn, do đó synccó khả năng đưa ra một hình phạt hiệu suất, mặc dù không tệ như với các ổ đĩa cơ. Cho đến hết đời, sự khôn ngoan vẫn còn hiệu lực, vì việc ghi vào ổ SSD rất nhiều "làm hao mòn" nó. Kịch bản tồi tệ nhất sẽ là một quá trình tạo ra nhiều thay đổi cho cùng một nơi; với syncmỗi trong số chúng chạm vào SSD, trong khi với async(mặc định), SSD sẽ không thấy hầu hết trong số chúng do bộ đệm kernel.

Vào cuối ngày, đừng bận tâm sync, rất có thể bạn vẫn ổn async.


trong trường hợp một ứng dụng cục bộ đang xóa và ghi vào ổ đĩa được gắn (chỉ vào hộp Windows bên ngoài); Có khả năng mặc định, chế độ async không an toàn không? Kịch bản là một ứng dụng bỏ phiếu, tìm kiếm trong một thư mục trên mount, xem nhẹ các thư mục con sau đó xóa chúng.
HellishHeat

@HellishHeat Bạn nên hỏi điều này như một câu hỏi riêng biệt với đầy đủ chi tiết về kịch bản bạn có trong đầu.
phản ứng

Tốc độ của các lớp lưu trữ khác nhau là bao nhiêu: ram là nano giây, flash là micro giây (10 giây cho ghi, khoảng 100 cho đọc), đĩa quay là mili giây (trường hợp tốt nhất 5 ms, 10 đến 100ms nếu hàng đợi đĩa được sao lưu và truy cập là ngẫu nhiên). Ghi vào một vị trí duy nhất trên thiết bị flash có thể ghi vào SRAM được tụ điện và không được ghi vào NAND. Do đó, rất khó để xác định hao mòn hoặc tác động tốc độ.
Brian Bulkowski

Điều này có nghĩa là người ta không cần phải gọi synchoặc fsynchoặc fdatasynctòa nhà trên một fs được gắn đồng bộ hóa?
CMCDragonkai

1
@ini Bạn có thể có nguy cơ mất dữ liệu với async. Tuy nhiên, nếu đây là một vấn đề, thì đó synckhông phải là câu trả lời - hình phạt về hiệu suất syncchỉ đơn giản là cấm.
phản hồi

5

Những lời cảnh báo: sử dụng tùy chọn gắn kết 'async' có thể không phải là ý tưởng tốt nhất nếu bạn có một giá treo liên tục được ghi vào (ví dụ: nhật ký có giá trị, bản ghi camera an ninh, v.v.) và bạn không được bảo vệ khỏi sự cố mất điện đột ngột . Nó có thể dẫn đến thiếu hồ sơ hoặc dữ liệu không đầy đủ (vô dụng). Ví dụ không thông minh: tưởng tượng một tên trộm vào cửa hàng và ngay lập tức cắt cáp nguồn máy ảnh. Ghi video đột nhập đã được ghi nhưng có thể không được xóa / đồng bộ hóa vào đĩa vì nó (hoặc một phần của nó) có thể đã được lưu vào bộ nhớ thay vào đó, do đó bị mất khi máy ảnh bị mất điện.


Các máy chủ hiện đại có bộ đệm đĩa được hỗ trợ bằng pin trong bộ điều khiển RAID, điều này sẽ ngăn ngừa mất dữ liệu ngay cả trong trường hợp mất điện.
tonioc

async không viết trong nhiều giây? Bao nhiêu giây xấp xỉ?
Ini

Tôi tin rằng @Ini phụ thuộc vào hệ thống tập tin đang được sử dụng.
bd1251252

Hệ điều hành dù sao cũng phải đảm bảo rằng khi bạn tắt máy, mọi thứ sẽ được ghi vào ssd / hdd. Trong trường hợp mất điện thì bạn có thể mất một số dữ liệu. Là những gì tôi đang nói đúng?
Ini

Bộ nhớ cache dựa trên pin trong một số đĩa thực sự không phải là lý do để không tối ưu hóa cho việc mất điện 1) chỉ có trong các máy chủ chuyên nghiệp đắt tiền. Không phải tất cả người dùng sẽ có 2 cái này) nó sẽ chỉ giúp bạn tiết kiệm trong trường hợp dữ liệu thậm chí đã đạt đến bộ điều khiển đĩa. Trong nhiều trường hợp, nó sẽ bị kẹt trong bộ đệm của hệ điều hành, rất lâu trước khi bộ điều khiển sẽ nhìn thấy dữ liệu đó - và nó sẽ bị mất trong trường hợp mất điện.
Cray
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.