Tìm kiếm trang web

Truy cập chậm vào các thư mục dùng chung và ổ đĩa mạng trong Windows


Người dùng của chúng tôi phàn nàn về hiệu suất mạng rất chậm khi mở hoặc lưu tệp vào thư mục dùng chung mạng trong Windows. Khi người dùng mở thư mục dùng chung qua đường dẫn UNC hoặc qua ký tự ổ đĩa (nếu thư mục dùng chung được ánh xạ dưới dạng ổ đĩa mạng), nội dung của nó chỉ được hiển thị sau 10-60 giây. Khi tạo các tệp mới trong thư mục mạng, chúng cũng không được hiển thị ngay lập tức mà có độ trễ dài sau 3-4 phút (ngay cả khi bạn cập nhật nội dung thư mục bằng

F5

chìa khóa). Tuy nhiên, nếu bạn chỉ định tên tệp đầy đủ theo cách thủ công qua đường dẫn UNC (

\\lon-file-srv1\public\new_file.docx

), nó sẽ mở ra, mặc dù nó sẽ không hiển thị trong File Explorer.

Windows sử dụng thành phần Bộ chuyển hướng mạng đặc biệt khi truy cập các tệp được chia sẻ và các tài nguyên mạng khác trên máy tính từ xa. Bắt đầu với SMB v2.x (xem bảng với các phiên bản giao thức Khối tin nhắn máy chủ), Bộ chuyển hướng mạng sử dụng cơ chế lưu vào bộ nhớ đệm khi truy cập các thư mục và tệp được chia sẻ qua mạng. Điều này làm giảm lưu lượng và số lượng yêu cầu SMB giữa máy khách và máy chủ (đặc biệt hiệu quả trong các mạng chậm và không đáng tin cậy). Theo mặc định, bộ đệm này sẽ bị xóa sau mỗi 10 giây.

Nếu bạn đang gặp phải tình trạng truy cập chậm vào mạng chia sẻ trên thiết bị máy khách Windows, bạn có thể thử tắt bộ nhớ đệm siêu dữ liệu SMB ở phía máy khách hoặc trong cài đặt thư mục dùng chung.

Bạn có thể tắt bộ nhớ đệm SMB trong cài đặt thư mục dùng chung. Mở các thuộc tính của thư mục được chia sẻ và chuyển đến tab Chia sẻ -> Chia sẻ nâng cao -> Bộ nhớ đệm. Chọn tùy chọn thứ hai “Không có tệp hoặc chương trình nào từ thư mục dùng chung khả dụng ngoại tuyến”.

Hoặc sử dụng lệnh PowerShell từ mô-đun SMBShare tích hợp:

Set-SMBShare -Name MySharedDocs -CachingMode None

Thao tác này sẽ vô hiệu hóa cả truy cập bộ nhớ đệm và truy cập ngoại tuyến vào thư mục dùng chung này (xem bài viết về cách sử dụng tệp ngoại tuyến trong Windows).

Có ba tham số đăng ký quản lý cài đặt bộ đệm ẩn thư mục dùng chung mạng ở phía máy khách SMB. Microsoft tuyên bố rằng các giá trị mặc định cho các tùy chọn đăng ký này mang lại hiệu suất tốt nhất cho hầu hết các môi trường. Cài đặt bộ đệm ẩn SMB nằm trong khóa đăng ký HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters.

  • DirectoryCacheLifetime là thời gian tồn tại của bộ nhớ đệm siêu dữ liệu thư mục dùng chung (10 giây theo mặc định);

  • FileNotFoundCacheLifetime - “Không tìm thấy tệp ” bộ nhớ đệm phản hồi (5 giây);

  • FileInfoCacheLifetime - thời gian lưu bộ nhớ cache với thông tin tệp (10 giây).

Bạn có thể tìm thông tin về các cài đặt đăng ký này trong bài viết về tối ưu hóa cài đặt máy chủ tệp Windows: https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/role/file-server/

Theo mặc định, thời gian tồn tại của bộ đệm ẩn cho thư mục chia sẻ SMB chỉ là 10 giây. Khi máy khách làm mới nội dung của thư mục dùng chung, kết quả của lần cập nhật cuối cùng được máy khách lưu trữ trong 10 giây. Khi truy cập mạng chia sẻ này, trước tiên tất cả các ứng dụng sẽ cố gắng sử dụng bộ đệm này.

Trong một số trường hợp, cơ chế lưu dữ liệu vào bộ nhớ đệm trong các thư mục SMB không hoạt động chính xác (điều này thường xảy ra với các thư mục/ổ đĩa mạng chứa hàng nghìn tệp và thư mục). Trong trường hợp này, người dùng có thể gặp phải sự chậm trễ đáng kể khi mở, xem và tạo tệp trong thư mục dùng chung.

Bạn có thể tắt bộ nhớ đệm cho các thư mục SMB. Để thực hiện việc này, hãy tạo tham số DWORD mới trong khóa đăng ký HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters với tên DirectoryCacheLifetime và giá trị 0 . Đồng thời đặt giá trị của tham số FileInfoCacheLifetime và FileNotFoundCacheLifetime thành 0. Bạn có thể tạo tham số đăng ký này bằng cách sử dụng

regedit.exe

hoặc với lệnh ghép ngắn New-ItemProperty PowerShell:

$regpath= "HKLM:\System\CurrentControlSet\Services\LanmanWorkstation\Parameters"
$Name1 = "DirectoryCacheLifetime"
$Name2 = "FileInfoCacheLifetime"
$Name3 = "FileNotFoundCacheLifetime"
New-ItemProperty -Path $regpath -Name DirectoryCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileInfoCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileNotFoundCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null

Bạn phải khởi động lại máy tính để cài đặt có hiệu lực. Nếu các tham số này cần được áp dụng cho nhiều máy tính miền, bạn có thể sử dụng GPO để triển khai cài đặt sổ đăng ký.

Vô hiệu hóa bộ nhớ đệm thư mục mạng làm tăng lưu lượng mạng và giảm hiệu suất của máy chủ tệp.

Bạn cũng có thể sử dụng lệnh ghép ngắn Set-SmbClientConfiguration để tinh chỉnh ứng dụng khách SMB:

Set-SmbClientConfiguration -DirectoryCacheLifetime 0
Set-SmbClientConfiguration -FileInfoCacheLifetime 0
Set-SmbClientConfiguration -FileNotFoundCacheLifetime 0

Bạn có thể liệt kê các cài đặt bộ nhớ đệm hiện tại cho máy khách Windows SMB bằng PowerShell:

Get-SmbClientConfiguration| select *cache*
DirectoryCacheEntriesMax : 16
DirectoryCacheEntrySizeMax : 65536
DirectoryCacheLifetime : 0
FileInfoCacheEntriesMax : 64
FileInfoCacheLifetime : 0
FileNotFoundCacheEntriesMax : 128
FileNotFoundCacheLifetime : 0

Sau đó, tất cả các thay đổi trong phần chia sẻ sẽ được hiển thị ngay lập tức trên máy khách (nội dung của thư mục được làm mới mỗi khi nó được truy cập và bộ đệm cục bộ không được sử dụng).

Có một số lý do khác khiến hiệu suất mạng của các thư mục được chia sẻ kém hoặc khi nội dung của các thư mục có thể xuất hiện chậm:

  • Việc bật tùy chọn “Liệt kê dựa trên quyền truy cập (ABE) ” trong cài đặt thư mục dùng chung có thể dẫn đến cập nhật chậm danh sách tệp trong thư mục dùng chung có nhiều đối tượng;

  • Bạn có thể gặp tốc độ mạng chậm trên các máy ảo Hyper-V chạy trên Windows Server 2019 (so với Windows Server 2016/2012R2);

  • Cố gắng tắt giao thức NetBIOS kế thừa trong thuộc tính của kết nối TCP/IPv4 của bạn trên các thiết bị đã tham gia miền (

    ncpa.cpl

    -> mở cài đặt TCP/IPv4 của bộ điều hợp mạng và chọn Tắt NetBIOS qua TCPIP trên tab THẮNG);

  • Hãy thử đặt lại cài đặt ngăn xếp mạng và TCP/IP trên thiết bị máy khách Windows. Trên Windows 10+, bạn có thể sử dụng tùy chọn Đặt lại mạng trong bảng Cài đặt hoặc sử dụng lệnh:

    netsh int ip reset

Bài viết liên quan