STORAGE [SS] - NFS, CIFS, SMB so sánh và phân biệt

Nguyễn Đoàn Khắc Huy

Administrator
Thành viên BQT
Trong thế giới công nghệ ngày nay, việc chia sẻ tập tin qua mạng đã trở thành một nhu cầu thiết yếu trong môi trường doanh nghiệp cũng như cá nhân. Ba giao thức được sử dụng phổ biến nhất để thực hiện việc này là Network File System (NFS), Common Internet File System (CIFS), và Server Message Block (SMB). Mỗi giao thức đều có những đặc điểm và ưu điểm riêng, phù hợp với các môi trường và nhu cầu sử dụng khác nhau. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về cách thức hoạt động, trường hợp sử dụng và so sánh giữa ba giao thức này.

I. Network File System (NFS)


1743067196251.png

NFS (Network File System) là một giao thức được phát triển bởi Sun Microsystems vào năm 1984, cho phép chia sẻ và truy cập tệp tin qua mạng như thể chúng nằm trên ổ đĩa cục bộ. NFS hoạt động theo cơ chế truy cập dạng file, không phải dạng block, giúp nó phù hợp với việc chia sẻ dữ liệu trong môi trường mạng, nơi các hệ thống cần truy cập chung vào các tệp tin và thư mục. Giao thức này sử dụng cả TCP và UDP, với port mặc định là 2049 để truyền dữ liệu, trong khi port 111 được sử dụng bởi dịch vụ RPC (Remote Procedure Call) để ánh xạ các dịch vụ NFS như mountd và nfsd đến các port động khác. NFS được tạo ra để giải quyết bài toán chia sẻ tệp tin qua mạng trong các hệ thống phân tán, chẳng hạn như chia sẻ thư mục làm việc giữa nhiều máy, truy cập dữ liệu từ xa trong trung tâm dữ liệu, hoặc tích hợp hệ thống tệp giữa các máy tính trong mạng. So với các giao thức khác, NFS có nhiều ưu điểm như tích hợp tự nhiên với Unix/Linux, hiệu suất cao trong mạng nội bộ, hỗ trợ truy cập đồng thời và không cần phần mềm bổ sung trên các hệ thống Unix/Linux. Mặc dù được thiết kế chủ yếu cho Unix/Linux, NFS vẫn có thể được sử dụng trên Windows với một số cấu hình đặc biệt. Người dùng có thể bật tính năng "Client for NFS" để kết nối đến thư mục NFS từ máy chủ hoặc bật "Server for NFS" để chia sẻ thư mục qua NFS.

II. Common Internet File System (CIFS)


1743128300845.png

CIFS (Common Internet File System) là một giao thức chia sẻ tệp qua mạng, được phát triển dựa trên SMB (Server Message Block), nhằm giải quyết bài toán chia sẻ tài nguyên như tệp, thư mục, máy in giữa các thiết bị trong mạng một cách dễ dàng và minh bạch. CIFS hoạt động theo cơ chế file-based, cho phép người dùng truy cập, đọc, ghi, và quản lý tệp từ xa như thể chúng đang nằm trên máy tính cục bộ. Giao thức này sử dụng TCP làm giao thức truyền tải chính, thường hoạt động trên port 445, và trước đây cũng có thể sử dụng port 139 khi chạy trên NetBIOS. Tuy nhiên, CIFS hiện nay ít được sử dụng vì đã lỗi thời, hiệu suất thấp và bảo mật kém so với các phiên bản SMB mới hơn như SMB 2.0 và SMB 3.0. Dù vậy, trong một số trường hợp cụ thể, CIFS vẫn được sử dụng, chẳng hạn như khi cần tương thích với các thiết bị hoặc hệ thống cũ không hỗ trợ SMB mới, trong các môi trường mạng nội bộ đơn giản không yêu cầu bảo mật cao, hoặc trong các hệ thống nhúng và công nghiệp chưa được nâng cấp. Để sử dụng CIFS trên Linux, người dùng cần cài đặt gói `cifs-utils`, tạo thư mục để gắn kết (mount), và sử dụng lệnh `mount` với cú pháp phù hợp để kết nối đến chia sẻ CIFS từ máy chủ. Nếu muốn tự động gắn kết khi khởi động, có thể thêm cấu hình vào tệp `/etc/fstab`. CIFS được tạo ra để giải quyết bài toán chia sẻ tài nguyên qua mạng một cách dễ dàng, hỗ trợ đa nền tảng, và cho phép nhiều người dùng truy cập đồng thời. Tuy nhiên, trong các hệ thống hiện đại, CIFS thường chỉ được sử dụng khi không có lựa chọn nào khác, vì các giao thức mới hơn như SMB 3.0 hoặc NFS vượt trội hơn về hiệu suất, bảo mật và tính năng.
NetBIOS (Network Basic Input/Output System) là một API cho phép các ứng dụng trên các máy tính khác nhau giao tiếp với nhau qua mạng cục bộ (LAN).

III. Server Message Block (SMB)


1743149013173.png

Trong Server Message Block (SMB), từ "block" không ám chỉ "khối dữ liệu" như trong các hệ thống lưu trữ block-based (như iSCSI hay SAN), mà mang ý nghĩa là một đơn vị giao tiếp hoặc thông điệp được trao đổi giữa các máy tính trong mạng. Cụ thể, "block" ở đây đại diện cho các thông điệp hoặc yêu cầu mà giao thức SMB sử dụng để thực hiện các tác vụ như đọc, ghi, hoặc quản lý tệp và tài nguyên từ xa.
Ví dụ, một "block" trong SMB có thể là một yêu cầu từ client đến server để mở một tệp, hoặc một phản hồi từ server gửi lại dữ liệu được yêu cầu. Do đó, "block" trong tên gọi SMB mang ý nghĩa là các khối thông điệp được truyền qua lại giữa client và server để thực hiện các chức năng chia sẻ tài nguyên.
SMB (Server Message Block) là một giao thức mạng được thiết kế để chia sẻ tài nguyên như tệp, máy in và các dịch vụ khác giữa các thiết bị trong mạng. SMB hoạt động dựa trên cơ chế file-based, cho phép truy cập và quản lý tệp từ xa như thể chúng đang ở trên máy cục bộ. Giao thức này sử dụng TCP làm giao thức truyền tải chính, với port mặc định là 445 để truyền SMB trực tiếp qua TCP/IP mà không cần NetBIOS. Trước đây, SMB cũng có thể sử dụng port 139 khi chạy qua NetBIOS over TCP/IP, nhưng hiện nay port 445 là tiêu chuẩn. Cần lưu ý rằng CIFS không phải là một tên gọi chính thức thay thế hoàn toàn cho SMB, mà là một phiên bản cụ thể của SMB (thường được gọi là SMB 1.0). Khi SMB chuyển sang sử dụng cổng 445 để hoạt động trực tiếp qua TCP/IP mà không cần NetBIOS, thuật ngữ CIFS dần ít được sử dụng và SMB trở thành tên gọi chính thức cho các phiên bản hiện đại (SMB 2.0, 3.0, v.v.). SMB được tạo ra để giải quyết bài toán chia sẻ tài nguyên trong mạng máy tính, đặc biệt trong các môi trường doanh nghiệp, nơi nhiều người dùng cần truy cập chung vào dữ liệu và thiết bị. Nó cung cấp các tính năng như chia sẻ tệp, chia sẻ máy in, giao tiếp giữa các ứng dụng và quản lý tài nguyên từ xa. So với các giao thức khác như FTP hay NFS, SMB nổi bật nhờ tính năng toàn diện, bảo mật tốt hơn với các cơ chế như mã hóa dữ liệu, xác thực người dùng và ký SMB, cùng với hiệu suất cao nhờ các tính năng như SMB Multichannel và SMB Direct. Nếu muốn sử dụng SMB trên Linux, bạn hoàn toàn có thể thực hiện được. Để Linux truy cập thư mục chia sẻ từ Windows, bạn cần cài đặt gói cifs-utils và sử dụng lệnh mount để gắn kết thư mục từ Windows vào Linux. Ngoài ra, bạn có thể cấu hình tự động mount bằng cách chỉnh sửa file /etc/fstab. Ngược lại, nếu muốn Linux chia sẻ thư mục để Windows truy cập, bạn cần cài đặt và cấu hình Samba. Sau khi cài đặt, bạn chỉnh sửa file smb.conf để định nghĩa thư mục chia sẻ, thêm người dùng Samba và khởi động lại dịch vụ. Từ Windows, bạn có thể truy cập thư mục chia sẻ trên Linux bằng cách nhập đường dẫn \IP_Linux\Share_Name trong File Explorer.

IV. So sánh


Cả ba giao thức NFS, CIFS, và SMB đều hoạt động theo cơ chế file-based, cho phép truy cập và quản lý tệp từ xa như thể chúng nằm trên máy cục bộ. Về hệ điều hành hỗ trợ, NFS tích hợp tự nhiên với Unix/Linux nhưng cần cấu hình thêm để hoạt động trên Windows, trong khi CIFS và SMB tích hợp tự nhiên với Windows và cần cài đặt thêm gói cifs-utils hoặc Samba để hoạt động trên Linux. Xét về hiệu suất, NFS có hiệu suất cao trong mạng nội bộ, đặc biệt trên các hệ thống Unix/Linux, trong khi CIFS có hiệu suất thấp hơn do thiết kế cũ. SMB, đặc biệt là các phiên bản hiện đại như SMB 2.0 và 3.0, có hiệu suất cao hơn nhờ các cải tiến như SMB Multichannel và SMB Direct. Về bảo mật, NFSv4 cải thiện đáng kể với mã hóa và xác thực tốt hơn, nhưng các phiên bản cũ phụ thuộc vào cấu hình. CIFS có bảo mật kém và dễ bị tấn công, trong khi SMB hiện đại (2.0/3.0) vượt trội với mã hóa, ký SMB, và xác thực người dùng. Trong trường hợp sử dụng, NFS phù hợp với chia sẻ tệp trong mạng nội bộ và trung tâm dữ liệu, đặc biệt trên hệ thống Unix/Linux. CIFS thường được sử dụng trong các mạng nội bộ đơn giản hoặc khi cần tương thích với các hệ thống Windows cũ, còn SMB phù hợp với môi trường doanh nghiệp, nơi cần bảo mật cao và hỗ trợ đa nền tảng. Cuối cùng, về ưu điểm, NFS tích hợp tốt với Unix/Linux, CIFS dễ sử dụng và tương thích với hệ thống cũ, trong khi SMB hiện đại có bảo mật và hiệu suất cao, phù hợp với các doanh nghiệp. Bên dưới là một bảng so sánh tổng quát.
1743149420920.png

V. Tổng kết


NFS, CIFS, và SMB đều là những giao thức quan trọng trong việc chia sẻ tệp qua mạng, mỗi giao thức có những đặc điểm và ưu điểm riêng phù hợp với các nhu cầu sử dụng khác nhau. NFS là lựa chọn lý tưởng cho các hệ thống Unix/Linux nhờ hiệu suất cao và khả năng tích hợp tự nhiên, đặc biệt trong các mạng nội bộ và trung tâm dữ liệu. CIFS, mặc dù đã lỗi thời, vẫn hữu ích trong các mạng nội bộ đơn giản hoặc khi cần tương thích với các hệ thống Windows cũ. Trong khi đó, SMB hiện đại (SMB 2.0/3.0) là giải pháp mạnh mẽ cho các doanh nghiệp, với hiệu suất cao, bảo mật tốt, và hỗ trợ đa nền tảng. Việc lựa chọn giao thức phù hợp phụ thuộc vào môi trường hệ điều hành, yêu cầu bảo mật, và hiệu suất của hệ thống, nhưng SMB hiện đại đang dần trở thành tiêu chuẩn nhờ các tính năng vượt trội của nó.​
Bài viết trên dựa vào kiến thức và ý kiến cá nhân cho nên không thể tránh khỏi thiếu sót, nếu có bất kì ý kiến hoặc thắc mắc nào vui lòng trả lời bài viết vào mục reply bên dưới. Cám ơn bạn đã xem.
 

Đính kèm

  • 1743149306973.png
    1743149306973.png
    162.6 KB · Lượt xem: 0
Sửa lần cuối:
Back
Top