Windows

Xử lý lỗi ổ mạng không hiển thị hết thư mục con (cache-SMB)

Ngày đăng

Nhiều người dùng phản ánh khi mở ổ mạng chung (ví dụ ổ L: ánh xạ tới \\SRV01\SharedFolder), File Explorer chỉ hiển thị một phần thư mục — nhấn F5 hoặc chờ một lúc mới thấy đủ, đôi khi kèm dấu ❌ đỏ trên ổ ánh xạ. Đây là lỗi phía máy trạm (cache/phiên kết nối), không phải mất dữ liệu hay sai phân quyền.

Mọi tên máy, địa chỉ IP và tên ổ trong bài đều là giá trị mẫu; triển khai thật thì thay cho khớp.

Dấu hiệu quan trọng nhất: lỗi không cố định — tự khỏi khi F5, chờ lâu, hoặc kết nối lại. Đặc trưng này cho thấy đây là lỗi cache/phiên (client-side), không phải phân quyền. Lỗi phân quyền thì thiếu vĩnh viễn, không tự hiện lại.

🔍 Chẩn đoán nhanh — 30 giây

Bước đầu tiên luôn là xác định đây là lỗi cache/hiển thị hay lỗi phân quyền, vì hai hướng xử lý khác hẳn nhau. Trên máy đang bị lỗi, chạy lệnh liệt kê trực tiếp trên server (không đi qua cache của Explorer):

MÁY BỊ LỖI  CMD hoặc PowerShell

bash
dir \\SRV01.ntcom.local\SharedFolder

Đối chiếu kết quả để chọn hướng xử lý:

Kết quả

Kết luận

Hướng xử lý

dir hiện ĐỦ thư mục, nhưng Explorer thiếu

Lỗi cache / hiển thị (client-side)

Áp mục 5.1 – 5.3

dir cũng thiếu thư mục

Lỗi phiên / mạng / enumeration

Áp mục 5.2 – 5.4

Thiếu cố định, F5 vẫn thiếu, dir vẫn thiếu

Có thể là phân quyền NTFS

Kiểm tra quyền trên server

⚙️ Nguyên nhân — xếp theo tần suất

Mức độ

Nguyên nhân

Mô tả

🔴 Cao nhất

SMB Directory Cache

Máy trạm cache danh sách thư mục khoảng 10 giây để đỡ hỏi server liên tục, nên hiện bản cũ đến khi hết hạn — chính là hiện tượng "F5 mới đủ".

🟠 Cao

Hibernate / Fast Startup

Máy ngủ đông rồi bật lại làm treo phiên SMB tới server; 1–2 tiếng sau tự hồi phục khi phiên được thiết lập lại.

🟠 Cao

Offline Files (CSC)

Hiển thị bản cache cục bộ (cũ/thiếu) thay vì nội dung thật trên server.

🟡 Trung bình

Mạng chập / Server tải cao

Phản hồi liệt kê thư mục chậm hoặc không trọn vẹn, Explorer render thiếu.

🟡 Trung bình

Ổ ánh xạ mất kết nối

Mapped drive không tự kết nối lại sau khi mạng gián đoạn hoặc máy ngủ dậy.

❌ Điều KHÔNG phải nguyên nhân

Bỏ user khỏi nhóm Local Administrators không gây ra lỗi này. Quyền xem thư mục chia sẻ dựa trên danh tính domain của user cộng với NTFS trên server — không thay đổi khi gỡ quyền local admin (đó là quyền trên máy, không phải trên share). Nếu hiện tượng trùng thời điểm gỡ admin thì chỉ là trùng hợp; gốc lỗi vẫn là các nguyên nhân client-side ở trên.

Chỉ nghi ngờ phân quyền NTFS khi hiện tượng thiếu cố định (không tự hiện lại). Khi đó kiểm tra quyền của từng thư mục con trên server:

MÁY CHỦ  PowerShell quyền Administrator

bash
Get-ChildItem D:\SharedFolder -Directory | ForEach-Object {
"==== $($_.Name) ===="
(Get-Acl $_.FullName).Access |
Select-Object IdentityReference, FileSystemRights, AccessControlType |
Format-Table -AutoSize | Out-String
}

Thư mục nào không có nhóm BUILTIN\Users (hoặc nhóm phòng ban tương ứng) thì user đó không nhìn thấy — đó là phân quyền có chủ đích, không phải lỗi.

🛠️ Cách xử lý chi tiết

5.1 Tắt SMB Directory Cache — trị nguyên nhân số một

Buộc máy trạm luôn hỏi server thay vì dùng bản cache cũ.

MÁY TRẠM  PowerShell quyền Administrator

bash
Set-SmbClientConfiguration -DirectoryCacheLifetime 0 -FileInfoCacheLifetime 0 -FileNotFoundCacheLifetime 0 -Force
Get-SmbClientConfiguration | Select-Object *CacheLifetime* # kiem tra: tat ca phai = 0

Cách qua registry (để đẩy bằng GPO): khoá HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters, tạo ba giá trị DWORD DirectoryCacheLifetime, FileInfoCacheLifetime, FileNotFoundCacheLifetime đều bằng 0.

5.2 Tắt Hibernate và Fast Startup

Máy văn phòng nối domain không nên dùng hibernate — đây là thủ phạm treo phiên mạng của hiện tượng "hôm qua thấy, hôm nay không". Lệnh dưới tắt hibernate và kéo theo tắt Fast Startup.

MÁY TRẠM  quyền Administrator

bash
powercfg /hibernate off

5.3 Tắt Offline Files (CSC)

Cần khởi động lại máy để có hiệu lực.

MÁY TRẠM  PowerShell quyền Administrator

bash
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CSC" -Name Start -Value 4 -Force

5.4 Kết nối lại ổ mạng khi bị dấu ❌ đỏ

Ba bước đầu không cần quyền admin.

MÁY TRẠM  CMD

bash
klist purge
ipconfig /flushdns
net use * /delete /y
net use L: \\192.168.1.1\SharedFolder /persistent:yes
net use S: \\192.168.1.1\Scan /persistent:yes

🚀 Triển khai đồng loạt bằng GPO

Gộp cả ba cấu hình (SMB cache, Offline Files, Hibernate) vào một Startup Script rồi đẩy cho toàn bộ máy trạm. Startup Script chạy dưới quyền SYSTEM lúc máy khởi động, không phụ thuộc người dùng có quyền admin hay không.

MÁY CHỦ  file NTCOM_Fix_ShareView.ps1

bash
# NTCOM - Sua loi client khong hien het thu muc tren o mang
# Trien khai: GPO Startup Script (Computer Config), chay quyen SYSTEM
# 1) Tat SMB directory cache
try {
Set-SmbClientConfiguration -DirectoryCacheLifetime 0 -FileInfoCacheLifetime 0 -FileNotFoundCacheLifetime 0 -Force -ErrorAction Stop
} catch {
$p = "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters"
New-ItemProperty $p -Name DirectoryCacheLifetime -Value 0 -PropertyType DWord -Force
New-ItemProperty $p -Name FileInfoCacheLifetime -Value 0 -PropertyType DWord -Force
New-ItemProperty $p -Name FileNotFoundCacheLifetime -Value 0 -PropertyType DWord -Force
}
# 2) Tat Offline Files (can reboot)
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\CSC" -Name Start -Value 4 -Force
# 3) Tat Hibernate + Fast Startup
& powercfg /hibernate off

Các bước gắn GPO:

  • Copy file NTCOM_Fix_ShareView.ps1 vào \\ntcom.local\NETLOGON\.
  • Mở gpmc.msc, chuột phải OU máy trạm, chọn Create a GPO and Link it here, đặt tên "NTCOM - Fix Share View".
  • Edit GPO: Computer Configuration → Policies → Windows Settings → Scripts → Startup → PowerShell Scripts → Add.
  • Script Name: \\ntcom.local\NETLOGON\NTCOM_Fix_ShareView.ps1.
  • Máy áp khi khởi động lại kế tiếp (Offline Files và Hibernate cần reboot mới có hiệu lực đầy đủ).

Muốn áp ngay không chờ reboot cho máy đã bật WinRM, chạy từ máy chủ:

MÁY CHỦ  PowerShell

bash
Invoke-Command -ComputerName <ten-may> {
Set-SmbClientConfiguration -DirectoryCacheLifetime 0 -FileInfoCacheLifetime 0 -FileNotFoundCacheLifetime 0 -Force
}

👤 Công cụ cho người dùng

Đặt file "Lam moi ket noi mang.bat" lên Desktop chung (C:\Users\Public\Desktop) để người dùng tự bấm khi gặp lỗi. Ba bước đầu chạy được không cần quyền admin.

MÁY TRẠM  file Lam moi ket noi mang.bat

bash
@echo off
chcp 65001 >nul
echo Dang lam moi ket noi mang...
rem 1. Lam moi ve Kerberos + DNS
klist purge >nul 2>&1
ipconfig /flushdns >nul 2>&1
rem 2. Ket noi lai o mang
net use * /delete /y >nul 2>&1
net use L: \\192.168.1.1\SharedFolder /persistent:yes
net use S: \\192.168.1.1\Scan /persistent:yes
rem 3. Dong bo gio (neu co quyen)
w32tm /resync /force >nul 2>&1
echo XONG! Mo File Explorer va bam F5.
timeout /t 4 >nul

Đẩy file lên Desktop mọi máy bằng GPO: Computer Configuration → Preferences → Windows Settings → Files → New → File, ô Destination điền C:\Users\Public\Desktop\Lam moi ket noi mang.bat. Mọi user đăng nhập máy đều thấy file trên desktop.

✅ Kiểm chứng và phòng ngừa

Sau khi áp, kiểm chứng đủ các mục sau mới coi là xong:

  • Trên máy trạm: Get-SmbClientConfiguration | Select-Object *CacheLifetime* — tất cả phải bằng 0.
  • Mở ổ mạng — thấy đủ thư mục ngay, không phải F5 hay chờ.
  • powercfg /a — mục Hibernate nằm trong nhóm "not available".
  • w32tm /query /source — trỏ về Domain Controller (chống lệch giờ gây treo Kerberos).

Phòng ngừa lâu dài:

  • ✅ Đồng bộ giờ toàn domain (chế độ NT5DS) qua GPO.
  • ✅ Tắt hibernate mặc định cho máy trạm.
  • ✅ Ổ mạng ánh xạ dạng persistent và tự kết nối lại.
  • ✅ Tách vai trò File Server khỏi Domain Controller nếu server tải cao.
  • ✅ Kiểm tra switch và cáp mạng tới server định kỳ.

🧯 Sự cố thường gặp

Hiện tượng

Nguyên nhân

Xử lý

F5 thì đủ nhưng vừa mở lại thiếu

SMB directory cache còn bật

Mục 5.1: đặt các CacheLifetime = 0

Sau khi ngủ dậy 1–2 tiếng mới hiện đủ

Hibernate / Fast Startup treo phiên

Mục 5.2: powercfg /hibernate off

Nội dung cũ/thiếu dù server đã có

Offline Files (CSC) hiện bản cache

Mục 5.3: tắt CSC rồi reboot

dir cũng thiếu, không chỉ Explorer

Mạng chập hoặc server quá tải lúc liệt kê

Kiểm tra tải CPU/đĩa server và đường mạng tới server

Thiếu cố định, không tự hiện lại

Phân quyền NTFS trên thư mục con

Kiểm tra ACL trên server, cấp quyền cho đúng nhóm

Nguyên tắc gỡ rối: luôn tách bạch lỗi hiển thị với lỗi phân quyền bằng lệnh dir chạy ngay trên máy đang lỗi. dir hiện đủ mà Explorer thiếu thì chắc chắn là cache/phiên, xử lý ở phía máy trạm.

Tài liệu mang tính tham khảo kỹ thuật; áp dụng theo môi trường thực tế và kiểm duyệt trước khi triển khai diện rộng. Mọi tên máy, IP và tên ổ trong bài đều là giá trị mẫu.

Bài viết hữu ích?Bình luận0

Bình luận(0)

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến!

Để lại bình luận

Zalo