Dịch vụ tập tin mạng. Network File System (NFS) - hệ thống tệp mạng

Mọi người đều biết rằng trên hệ thống UNIX, một hệ thống tệp về mặt logic là một tập hợp các hệ thống tệp vật lý được kết nối với một điểm duy nhất. Theo tôi, một trong những lợi thế chính của một tổ chức như vậy là khả năng sửa đổi linh hoạt cấu trúc của hệ thống tệp hiện có. Ngoài ra, nhờ nỗ lực của các nhà phát triển, ngày nay chúng ta có cơ hội kết nối hầu hết mọi loại hệ thống tệp và theo bất kỳ cách thuận tiện nào. Bằng “phương pháp”, trước hết tôi muốn nhấn mạnh khả năng của nhân hệ điều hành hoạt động với các hệ thống tệp thông qua kết nối mạng.

Nhiều giao thức mạng cung cấp cho chúng ta khả năng làm việc với các tệp từ xa, có thể là FTP, SMB, Telnet hoặc SSH. Nhờ khả năng của kernel cuối cùng không phụ thuộc vào loại hệ thống tệp được kết nối, chúng tôi có khả năng kết nối bất cứ thứ gì và theo cách chúng tôi muốn bằng cách sử dụng chương trình gắn kết.

Hôm nay tôi muốn nói về NFS - Network File System. Công nghệ này cho phép bạn kết nối các điểm hệ thống tệp riêng lẻ trên máy tính từ xa với hệ thống tệp của máy tính cục bộ. Bản thân giao thức NFS cho phép bạn thực hiện các thao tác với tệp khá nhanh chóng, an toàn và đáng tin cậy. Chúng ta cần thứ gì khác nữa? :-)

Những gì cần thiết để làm việc này

Để không nói dài dòng về chủ đề các phiên bản NFS và sự hỗ trợ của chúng trong các hạt nhân khác nhau, chúng tôi sẽ ngay lập tức đưa ra giả định rằng phiên bản hạt nhân của bạn không thấp hơn 2.2.18. Trong tài liệu chính thức, các nhà phát triển hứa hẹn hỗ trợ đầy đủ chức năng NFS phiên bản 3 trong kernel này và các phiên bản mới hơn.

Cài đặt

Để chạy máy chủ NFS trong Ubuntu 7.10 - Gutsy Gibbon, tôi cần cài đặt các gói nfs-common và nfs-kernel-server. Nếu bạn chỉ cần một máy khách NFS thì không cần cài đặt nfs-kernel-server.

Điều chỉnh máy chủ

Sau khi tất cả các gói đã được cài đặt thành công, bạn cần kiểm tra xem daemon NFS có đang chạy hay không:

trạng thái /etc/init.d/nfs-kernel-server

Nếu daemon không chạy, bạn cần khởi động nó bằng lệnh

/etc/init.d/nfs-kernel-server bắt đầu

Sau khi mọi thứ đã bắt đầu thành công, bạn có thể bắt đầu xuất hệ thống tệp. Quá trình này rất đơn giản và mất tối thiểu thời gian.

Tệp cấu hình máy chủ NFS chính nằm trong /etc/exports và có định dạng sau:

Thư mục machine1(option11,option12) machine2(option21,option22)

danh mục— đường dẫn tuyệt đối đến thư mục máy chủ FS mà bạn cần cấp quyền truy cập

máyX— Tên DNS hoặc địa chỉ IP của máy khách được phép truy cập

tùy chọnXX- Tham số xuất FS, thông số được sử dụng phổ biến nhất:

  • ro- quyền truy cập tập tin ở chế độ chỉ đọc
  • rw- quyền truy cập đọc/ghi được cung cấp
  • no_root_squash- theo mặc định, nếu bạn kết nối với tài nguyên NFS với quyền root, máy chủ, vì mục đích bảo mật, về phía nó sẽ truy cập các tệp với tư cách là người dùng không ai cả. Tuy nhiên, nếu bạn bật tùy chọn này, các tệp ở phía máy chủ sẽ được truy cập dưới dạng root. Hãy cẩn thận với tùy chọn này.
  • no_subtree_check— theo mặc định, nếu bạn xuất không phải toàn bộ phân vùng trên máy chủ mà chỉ xuất một phần của hệ thống tệp, daemon sẽ kiểm tra xem tệp được yêu cầu có nằm trên cùng một phân vùng hay không. Nếu bạn đang xuất toàn bộ phân vùng hoặc điểm gắn kết của hệ thống tệp đã xuất không ảnh hưởng đến các tệp từ các ổ đĩa vật lý khác thì bạn có thể bật tùy chọn này. Điều này sẽ giúp bạn tăng tốc độ máy chủ.
  • đồng bộ hóa— bật tùy chọn này nếu có khả năng bị mất kết nối đột ngột hoặc mất điện máy chủ. Nếu tùy chọn này không được kích hoạt, nguy cơ mất dữ liệu sẽ rất cao nếu máy chủ NFS đột ngột dừng lại.

Vì vậy, giả sử chúng ta cần cấp quyền truy cập vào thư mục /var/backups của máy tính ashep-laptop cho máy tính để bàn ashep. Cần có quyền truy cập thư mục để sao chép các tệp sao lưu từ ashep-desktop. Tập tin của tôi hóa ra như thế này:

/var/backups asep-desktop(rw,no_subtree_check,sync)

Sau khi thêm dòng vào /etc/exports, bạn phải khởi động lại máy chủ NFS để các thay đổi có hiệu lực.

/etc/init.d/nfs-kernel-server khởi động lại

Đó là tất cả. Bạn có thể bắt đầu kết nối FS đã xuất trên máy khách.

Thiết lập máy khách

Về phía máy khách, hệ thống tệp từ xa được gắn kết theo cách giống như tất cả các hệ thống khác - bằng lệnh mount. Ngoài ra, không ai cấm bạn sử dụng /etc/fstab nếu bạn cần tự động kết nối FS khi hệ điều hành khởi động. Vì vậy, tùy chọn gắn kết sẽ trông như thế này:

Mount -t nfs ashep-laptop:/var/backups/ /mnt/ashep-laptop/backups/

Nếu mọi thứ đều ổn và bạn cần tự động kết nối với FS từ xa khi khởi động, chỉ cần thêm dòng này vào /etc/fstab:

Ashep-laptop:/var/backups /mnt/ashep-laptop/backups nfs auto 0 0

Còn gì nữa

Vì vậy, chúng tôi có một cái nhìn tổng quan thực tế, nhỏ gọn về khả năng của NFS. Tất nhiên, đây chỉ là một phần nhỏ những gì NFS có thể làm được. Điều này là đủ để sử dụng ở nhà hoặc trong một văn phòng nhỏ. Nếu điều này là không đủ với bạn, tôi khuyên bạn nên đọc trước

NFS: một hệ thống tệp mạng tiện lợi và đầy hứa hẹn

Hệ thống tập tin mạng là một bản tóm tắt mạng trên hệ thống tệp thông thường, cho phép máy khách từ xa truy cập nó qua mạng giống như khi truy cập hệ thống tệp cục bộ. Mặc dù NFS không phải là hệ thống tệp mạng đầu tiên nhưng nó đã phát triển để trở thành hệ thống tệp mạng phổ biến và có khả năng nhất trong UNIX® ngày nay. NFS cho phép nhiều người dùng chia sẻ một hệ thống tệp chung và tập trung dữ liệu để giảm thiểu dung lượng ổ đĩa cần thiết để lưu trữ.

Bài viết này bắt đầu với phần tổng quan ngắn gọn về lịch sử của NFS và sau đó chuyển sang khám phá kiến ​​trúc của NFS và cách nó có thể phát triển trong tương lai.

Tóm tắt lịch sử của NFS

Hệ thống tệp mạng đầu tiên được gọi là FAL (Trình nghe truy cập tệp) và được phát triển vào năm 1976 bởi DEC (Tập đoàn thiết bị kỹ thuật số). Đó là một triển khai giao thức DAP (Giao thức truy cập dữ liệu) và là một phần của bộ giao thức DECnet. Giống như TCP/IP, DEC đã công bố thông số kỹ thuật cho các giao thức mạng của mình, bao gồm cả giao thức DAP.

NFS là hệ thống tệp mạng hiện đại đầu tiên được xây dựng dựa trên giao thức IP. Nguyên mẫu của nó có thể được coi là một hệ thống tệp thử nghiệm được phát triển tại Sun Microsystems vào đầu những năm 80. Do tính phổ biến của giải pháp này, giao thức NFS đã được giới thiệu dưới dạng đặc tả RFC và sau đó được phát triển thành NFSv2. NFS nhanh chóng trở thành một tiêu chuẩn nhờ khả năng tương tác với các máy khách và máy chủ khác.

Tiêu chuẩn sau đó đã được cập nhật lên NFSv3, được xác định trong RFC 1813. Phiên bản giao thức này có khả năng mở rộng cao hơn các phiên bản trước và hỗ trợ kích thước tệp lớn hơn (trên 2 GB), ghi không đồng bộ và TCP làm giao thức truyền tải. NFSv3 đặt ra định hướng phát triển hệ thống tập tin cho mạng diện rộng (WAN). Năm 2000, RFC 3010 (được sửa đổi thành RFC 3530) đã đưa NFS vào môi trường doanh nghiệp. Sun đã giới thiệu NFSv4 an toàn hơn với sự hỗ trợ có trạng thái (các phiên bản trước của NFS không hỗ trợ lưu trữ có trạng thái, tức là chúng được phân loại là không trạng thái). Hiện tại, phiên bản mới nhất của NFS là phiên bản 4.1, được xác định trong RFC 5661, bổ sung thêm giao thức bằng cách mở rộng pNFS hỗ trợ truy cập song song cho các máy chủ phân tán đã được thêm vào.

Lịch sử của NFS, bao gồm các RFC cụ thể mô tả các phiên bản của nó, được hiển thị trong Hình 1.


Điều đáng ngạc nhiên là NFS đã được phát triển được gần 30 năm. Nó là một hệ thống tệp mạng di động và ổn định đặc biệt với khả năng mở rộng, hiệu suất và chất lượng dịch vụ vượt trội. Khi tốc độ tăng và độ trễ giảm khi giao tiếp trong mạng, NFS tiếp tục là một cách phổ biến để triển khai hệ thống tệp trong mạng. Ngay cả trong trường hợp mạng cục bộ, ảo hóa khuyến khích lưu trữ dữ liệu trên mạng để cung cấp thêm tính di động cho các máy ảo. NFS cũng hỗ trợ các mô hình môi trường điện toán mới nhất nhằm tối ưu hóa cơ sở hạ tầng ảo.

Kiến trúc NFS

NFS sử dụng mô hình kiến ​​trúc client-server tiêu chuẩn (như trong Hình 2). Máy chủ chịu trách nhiệm triển khai hệ thống tệp chia sẻ và lưu trữ mà máy khách kết nối. Máy khách triển khai giao diện người dùng cho hệ thống tệp dùng chung được gắn trong không gian tệp cục bộ của máy khách.

Hình 2. Triển khai mô hình client-server trong kiến ​​trúc NFS

Trong Linux®, bộ chuyển đổi hệ thống tệp ảo (VFS) cung cấp phương tiện để hỗ trợ nhiều hệ thống tệp (ví dụ: hệ thống tệp ISO 9660 trên CD-ROM và hệ thống tệp ext3fs trên ổ cứng cục bộ) trên một máy chủ duy nhất . Công tắc ảo xác định ổ đĩa nào yêu cầu được thực hiện và do đó hệ thống tệp nào sẽ được sử dụng để xử lý yêu cầu. Do đó, NFS có khả năng tương thích tương tự như các hệ thống tệp khác được sử dụng trong Linux. Sự khác biệt duy nhất với NFS là thay vì được xử lý cục bộ trên máy chủ, các yêu cầu I/O có thể được gửi tới mạng để thực thi.

VFS xác định rằng yêu cầu nhận được là NFS và chuyển nó đến trình xử lý NFS nằm trong kernel. Trình xử lý NFS xử lý yêu cầu I/O và chuyển nó thành thủ tục NFS (MỞ, TRUY CẬP, TẠO, ĐỌC, ĐÓNG, XÓA, v.v.). Các quy trình này, được mô tả trong đặc tả RFC riêng, xác định hoạt động của giao thức NFS. Quy trình cần thiết được chọn tùy theo yêu cầu và được thực thi bằng công nghệ RPC (gọi thủ tục từ xa). Đúng như tên gọi của nó, RPC cho phép thực hiện các cuộc gọi thủ tục giữa các hệ thống khác nhau. Dịch vụ RPC nối một yêu cầu NFS với các đối số của nó và gửi kết quả đến máy chủ từ xa thích hợp, sau đó giám sát việc nhận và xử lý phản hồi để trả lại cho người yêu cầu.

RPC cũng bao gồm một lớp XDR quan trọng ( biểu diễn dữ liệu ngoài- biểu diễn dữ liệu độc lập), đảm bảo rằng tất cả người dùng NFS sử dụng cùng một định dạng cho cùng loại dữ liệu. Khi một nền tảng gửi yêu cầu, loại dữ liệu mà nó sử dụng có thể khác với loại dữ liệu được sử dụng trên máy chủ xử lý yêu cầu. Công nghệ XDR đảm nhiệm công việc chuyển đổi các loại thành dạng biểu diễn tiêu chuẩn (XDR) để các nền tảng sử dụng các kiến ​​trúc khác nhau có thể tương tác và chia sẻ các hệ thống tệp. XDR xác định định dạng bit cho các loại như float và thứ tự byte cho các loại như mảng có độ dài không đổi và thay đổi. Mặc dù XDR chủ yếu được biết đến nhờ sử dụng trong NFS, nhưng thông số kỹ thuật này có thể hữu ích trong mọi trường hợp bạn phải làm việc trong cùng một môi trường với các kiến ​​trúc khác nhau.

Sau khi XDR dịch dữ liệu thành biểu diễn tiêu chuẩn, yêu cầu sẽ được gửi qua mạng bằng giao thức truyền tải cụ thể. Việc triển khai NFS ban đầu sử dụng UDP, nhưng ngày nay TCP được sử dụng để có độ tin cậy cao hơn.

Một thuật toán tương tự được sử dụng ở phía máy chủ NFS. Yêu cầu di chuyển lên ngăn xếp mạng thông qua lớp RPC/XDR (để chuyển đổi các loại dữ liệu theo kiến ​​trúc máy chủ) và đến máy chủ NFS, chịu trách nhiệm xử lý yêu cầu. Ở đó, yêu cầu được chuyển đến daemon NFS để xác định hệ thống tệp đích mà nó được xử lý, sau đó lại chuyển đến VFS để truy cập hệ thống tệp đó trên đĩa cục bộ. Sơ đồ hoàn chỉnh của quá trình này được hiển thị trong Hình 3. Trong trường hợp này, hệ thống tệp cục bộ của máy chủ là hệ thống tệp Linux tiêu chuẩn, ví dụ: ext4fs. Về bản chất, NFS không phải là một hệ thống tệp theo nghĩa truyền thống của thuật ngữ này mà là một giao thức để truy cập từ xa vào các hệ thống tệp.


Đối với các mạng có độ trễ dài, NFSv4 cung cấp quy trình kết hợp đặc biệt ( thủ tục ghép). Quy trình này cho phép bạn thực hiện nhiều lệnh gọi RPC trong một yêu cầu duy nhất để giảm thiểu chi phí gửi yêu cầu qua mạng. Quy trình này cũng thực hiện cơ chế chức năng gọi lại để nhận phản hồi.

Giao thức NFS

Khi máy khách bắt đầu sử dụng NFS, hành động đầu tiên là thực hiện thao tác gắn kết, tức là gắn hệ thống tệp từ xa vào không gian hệ thống tệp cục bộ. Quá trình này bắt đầu bằng lệnh gọi thủ tục mount (một trong các chức năng của hệ thống Linux), được chuyển hướng qua VFS tới thành phần NFS. Sau đó, lệnh gọi RPC tới hàm get_port trên máy chủ từ xa sẽ xác định số cổng sẽ được sử dụng để gắn kết và máy khách sẽ gửi yêu cầu gắn kết qua RPC. Yêu cầu này ở phía máy chủ được xử lý bởi một daemon rpc.mountd đặc biệt, chịu trách nhiệm về giao thức gắn kết ( giao thức gắn kết). Trình nền kiểm tra xem hệ thống tệp được khách hàng yêu cầu có nằm trong danh sách các hệ thống có sẵn trên máy chủ nhất định hay không. Nếu hệ thống được yêu cầu tồn tại và máy khách có quyền truy cập vào nó, phản hồi từ thủ tục mount RPC sẽ chỉ định một bộ mô tả hệ thống tệp. Máy khách lưu giữ thông tin về các điểm gắn kết cục bộ và từ xa và có thể thực hiện các yêu cầu I/O. Giao thức gắn kết không an toàn từ quan điểm bảo mật, do đó, NFSv4 sử dụng các lệnh gọi RPC nội bộ để thay thế, điều này cũng có thể quản lý các điểm gắn kết.

Để đọc một tập tin, trước tiên bạn phải mở nó. Không có thủ tục MỞ trong RPC; thay vào đó, máy khách chỉ cần kiểm tra xem tệp và thư mục được chỉ định có tồn tại trên hệ thống tệp được gắn hay không. Máy khách bắt đầu bằng cách thực hiện yêu cầu GETATTR RPC tới thư mục, yêu cầu này trả về các thuộc tính của thư mục hoặc chỉ báo rằng thư mục không tồn tại. Tiếp theo, để kiểm tra sự hiện diện của tệp, máy khách đưa ra yêu cầu LOOKUP RPC. Nếu tệp tồn tại, yêu cầu GETATTR RPC sẽ được thực hiện trên đó để tìm ra các thuộc tính của tệp. Bằng cách sử dụng thông tin thu được từ các lệnh gọi LOOKUP và GETATTR thành công, máy khách sẽ tạo một trình xử lý tệp được cung cấp cho người dùng cho các yêu cầu trong tương lai.

Khi tệp đã được xác định trên hệ thống tệp từ xa, máy khách có thể đưa ra yêu cầu RPC READ. Yêu cầu này bao gồm một bộ mô tả tệp, trạng thái, phần bù và số byte cần đọc. Khách hàng sử dụng trạng thái ( tình trạng) để xác định xem thao tác có thể được thực hiện vào lúc này hay không, tức là. Tập tin có bị khóa không? Bù lại ( bù lại) cho biết vị trí bắt đầu đọc và bộ đếm byte ( đếm) xác định số byte cần đọc. Do lệnh gọi RPC READ, máy chủ không phải lúc nào cũng trả về số byte như được yêu cầu, nhưng cùng với dữ liệu trả về, nó luôn báo cáo số byte đã được gửi đến máy khách.

Đổi mới trong NFS

Hai phiên bản mới nhất của NFS được quan tâm nhiều nhất - 4 và 4.1, là ví dụ mà bạn có thể nghiên cứu các khía cạnh quan trọng nhất trong quá trình phát triển của công nghệ NFS.

Trước khi có NFSv4 để thực hiện các tác vụ quản lý tệp như gắn, khóa, v.v. có những giao thức bổ sung đặc biệt. Trong NFSv4, quy trình quản lý tệp được đơn giản hóa thành một giao thức duy nhất; Ngoài ra, bắt đầu từ phiên bản này, UDP không còn được sử dụng làm giao thức truyền tải nữa. NFSv4 bao gồm hỗ trợ ngữ nghĩa truy cập tệp UNIX và Windows®, cho phép NFS tích hợp một cách tự nhiên vào các hệ điều hành khác.

NFSv4.1 đã giới thiệu khái niệm về NFS song song(NFS song song - pNFS). Để cung cấp mức độ mở rộng cao hơn, NFSv4.1 triển khai kiến ​​trúc trong đó dữ liệu và siêu dữ liệu ( đánh dấu) được phân phối trên các thiết bị theo cách tương tự như cách nó được thực hiện trong các hệ thống tệp được phân cụm. Như được hiển thị trong , pNFS chia hệ sinh thái thành ba thành phần: máy khách, máy chủ và bộ lưu trữ. Trong trường hợp này, hai kênh xuất hiện: một kênh để truyền dữ liệu và kênh kia để truyền lệnh điều khiển. pNFS tách dữ liệu khỏi siêu dữ liệu mô tả nó, cung cấp kiến ​​trúc hai kênh. Khi khách hàng muốn truy cập một tệp, máy chủ sẽ gửi siêu dữ liệu đó cùng với "đánh dấu". Siêu dữ liệu chứa thông tin về vị trí của tệp trên thiết bị lưu trữ. Khi khách hàng có thông tin này, nó có thể truy cập trực tiếp vào bộ lưu trữ mà không cần phải tương tác với máy chủ, cải thiện khả năng mở rộng và hiệu suất. Khi máy khách làm việc xong với tệp, nó sẽ xác nhận những thay đổi được thực hiện đối với tệp và "đánh dấu" của nó. Nếu cần, máy chủ có thể yêu cầu siêu dữ liệu có đánh dấu từ máy khách.

Với sự ra đời của pNFS, một số hoạt động mới đã được thêm vào giao thức NFS để hỗ trợ cơ chế như vậy. Phương thức LayoutGet được sử dụng để truy xuất siêu dữ liệu từ máy chủ, phương thức LayoutReturn "giải phóng" siêu dữ liệu được máy khách "bắt" và phương thức LayoutCommit tải "bố cục" nhận được từ máy khách vào bộ lưu trữ để nó có sẵn cho những người dùng khác. Máy chủ có thể gọi lại siêu dữ liệu từ máy khách bằng phương thức LayoutRecall. Siêu dữ liệu "được gắn thẻ" được phân phối trên nhiều thiết bị lưu trữ để cung cấp quyền truy cập song song và hiệu suất cao.


Dữ liệu và siêu dữ liệu được lưu trữ trên các thiết bị lưu trữ. Khách hàng có thể thực hiện các yêu cầu I/O trực tiếp dựa trên đánh dấu nhận được và máy chủ NFSv4.1 lưu trữ và quản lý siêu dữ liệu. Bản thân chức năng này không phải là mới, nhưng pNFS đã bổ sung hỗ trợ cho nhiều phương pháp truy cập thiết bị lưu trữ khác nhau. Ngày nay, pNFS hỗ trợ sử dụng các giao thức khối (Kênh sợi quang), giao thức đối tượng và chính NFS (thậm chí không ở dạng pNFS).

Sự phát triển của NFS vẫn tiếp tục và vào tháng 9 năm 2010, các yêu cầu đối với NFSv4.2 đã được công bố. Một số đổi mới có liên quan đến sự chuyển dịch liên tục của công nghệ lưu trữ dữ liệu sang ảo hóa. Ví dụ: trong môi trường ảo có bộ ảo hóa, việc sao chép dữ liệu (nhiều hệ điều hành đọc/ghi và lưu vào bộ đệm cùng một dữ liệu) rất có thể xảy ra. Vì điều này, điều mong muốn là toàn bộ hệ thống lưu trữ phải hiểu được nơi xảy ra sự trùng lặp. Cách tiếp cận này sẽ giúp tiết kiệm dung lượng bộ đệm của máy khách và dung lượng lưu trữ tổng thể. NFSv4.2 đề xuất sử dụng "bản đồ khối của các khối chia sẻ" để giải quyết vấn đề này. Khi các hệ thống lưu trữ hiện đại ngày càng được trang bị sức mạnh tính toán nội bộ của riêng chúng, việc sao chép phía máy chủ đang được giới thiệu để giảm bớt gánh nặng sao chép dữ liệu qua mạng nội bộ khi việc này có thể được thực hiện một cách hiệu quả trên chính thiết bị lưu trữ. Những cải tiến khác bao gồm bộ nhớ đệm tệp phụ cho bộ nhớ flash và các đề xuất điều chỉnh I/O phía máy khách (chẳng hạn như sử dụng bản đồ).

Các lựa chọn thay thế NFS

Mặc dù NFS là hệ thống tệp mạng phổ biến nhất trong UNIX và Linux, nhưng vẫn có các hệ thống tệp mạng khác. Trên nền tảng Windows®, SMB được sử dụng phổ biến nhất, còn được gọi là CIFS; tuy nhiên, HĐH Windows cũng hỗ trợ NFS và Linux hỗ trợ SMB.

Một trong những hệ thống tệp phân tán mới nhất được hỗ trợ trên Linux, Ceph, được thiết kế ngay từ đầu để trở thành một hệ thống tệp tuân thủ POSIX có khả năng chịu lỗi. Thông tin thêm về Ceph có thể được tìm thấy trong phần này.

Cũng cần nhắc đến các hệ thống tệp OpenAFS (phiên bản Nguồn mở của hệ thống tệp phân tán Andrew, được phát triển tại Đại học Carnegie Mellon và Tập đoàn IBM), GlusterFS (một hệ thống tệp phân tán có mục đích chung để tổ chức lưu trữ dữ liệu có thể mở rộng) và Luster (một hệ thống tệp phân tán có mục đích chung để tổ chức lưu trữ dữ liệu có thể mở rộng). hệ thống tệp mạng song song cho các giải pháp cụm). Tất cả các hệ thống nguồn mở này có thể được sử dụng để xây dựng kho lưu trữ phân tán.

Phần kết luận

Sự phát triển của hệ thống tập tin NFS vẫn tiếp tục. Tương tự như hệ điều hành Linux, có thể hỗ trợ cả giải pháp cấp thấp, nhúng và cao cấp, NFS cung cấp kiến ​​trúc cho các giải pháp lưu trữ có khả năng mở rộng phù hợp cho cả cá nhân và tổ chức. Khi bạn nhìn vào hành trình mà NFS đã thực hiện và triển vọng phát triển trong tương lai của nó, bạn có thể thấy rõ rằng hệ thống tệp này sẽ tiếp tục thay đổi cách chúng ta nghĩ về cách triển khai và sử dụng các công nghệ lưu trữ tệp.

Thành phần quan trọng nhất của bất kỳ hệ thống phân tán nào là hệ thống tệp, trong trường hợp này cũng được phân phối. Giống như trong các hệ thống tập trung, chức năng của hệ thống tệp là lưu trữ các chương trình, dữ liệu và cung cấp quyền truy cập cho máy khách. Một hệ thống tệp phân tán được duy trì bởi một hoặc nhiều máy tính lưu trữ tệp. Máy chủ tệp thường chứa các hệ thống tệp phân cấp, mỗi hệ thống có một thư mục gốc và các thư mục cấp thấp hơn. Trong nhiều hệ thống tệp mạng, máy khách có thể đính kèm và gắn các hệ thống tệp này vào hệ thống tệp cục bộ của nó, cung cấp cho người dùng quyền truy cập thuận tiện vào các thư mục và tệp từ xa. Trong trường hợp này, dữ liệu của các tệp được gắn sẽ không di chuyển vật lý đi bất cứ đâu mà vẫn ở trên máy chủ.

Từ quan điểm phần mềm, hệ thống tệp phân tán (FS) là một dịch vụ mạng bao gồm các chương trình máy chủ và chương trình máy khách tương tác với nhau bằng một giao thức cụ thể. Dịch vụ tệp trong các hệ thống tệp phân tán có hai phần riêng biệt về mặt chức năng: bản thân dịch vụ tệp và dịch vụ thư mục hệ thống tệp. Phần đầu tiên xử lý các thao tác trên các tệp riêng lẻ, chẳng hạn như đọc, ghi hoặc thêm (sửa đổi) và phần thứ hai xử lý việc tạo và quản lý thư mục, thêm và xóa tệp khỏi thư mục, v.v.

Trong một hệ thống phân tán được tổ chức tốt, người dùng không biết hệ thống tệp được triển khai như thế nào (có bao nhiêu máy chủ tệp, chúng được đặt ở đâu, chúng hoạt động như thế nào). Lý tưởng nhất, đối với người dùng, hệ thống tệp mạng phải trông giống như của chính họ trên máy tính của họ, nghĩa là hoàn toàn trong suốt. Tuy nhiên, trên thực tế, các hệ thống tệp mạng vẫn chưa đáp ứng đầy đủ lý tưởng này.

Một hệ thống tệp mạng thường bao gồm các thành phần sau:

Hệ thống tập tin cục bộ;

Giao diện hệ thống tập tin cục bộ;

Máy chủ hệ thống tệp mạng;

Máy khách hệ thống tệp mạng;

Giao diện hệ thống tập tin mạng;

Hệ thống tập tin mạng giao thức client-server.

Máy khách Network FS là các chương trình chạy trên nhiều máy tính được kết nối với mạng. Các chương trình này phục vụ các yêu cầu ứng dụng truy cập các tệp được lưu trữ trên máy tính từ xa. Máy khách FS mạng truyền các yêu cầu qua mạng tới một thành phần phần mềm khác - máy chủ FS mạng đang chạy trên một máy tính từ xa. Máy chủ, khi nhận được yêu cầu, có thể tự thực thi yêu cầu đó hoặc phổ biến hơn là chuyển yêu cầu đến hệ thống tệp cục bộ để xử lý. Sau khi nhận được phản hồi từ FS cục bộ, máy chủ sẽ truyền nó qua mạng__

Máy khách và máy chủ FS của mạng tương tác với nhau qua mạng bằng một giao thức cụ thể. Nếu giao diện FS cục bộ và mạng phù hợp thì giao thức này có thể khá đơn giản. Một cơ chế được sử dụng cho mục đích này có thể là cơ chế RPC.

Trong hệ điều hành Windows, dịch vụ tệp mạng chính là giao thức SMB (Khối tin nhắn máy chủ), được Microsoft, Intel và IBM cùng phát triển. Các phiên bản mở rộng mới nhất của nó được gọi là Common Internet File System, CIFS.

Giao thức hoạt động ở lớp ứng dụng của mô hình OSI. SMB sử dụng các giao thức truyền tải khác nhau để truyền tải thông điệp của mình qua mạng. Trong lịch sử, giao thức đầu tiên như vậy là NetBIOS (và phiên bản NetBEUI sau này), nhưng hiện nay các tin nhắn SMB có thể được truyền bằng các giao thức khác (TCP/UDP và IPX).

SMB thuộc lớp giao thức hướng kết nối. Công việc của nó bắt đầu bằng việc máy khách gửi một tin nhắn đặc biệt đến máy chủ yêu cầu kết nối. Nếu máy chủ sẵn sàng thiết lập kết nối, nó sẽ phản hồi bằng thông báo xác nhận. Sau khi kết nối được thiết lập, máy khách có thể liên hệ với máy chủ bằng cách gửi lệnh cho máy chủ để thao tác với các tệp và thư mục trong tin nhắn SMB. Trong quá trình hoạt động, một số tình huống có thể phát sinh ảnh hưởng đến hiệu quả truy cập file từ xa:

1. Lỗi máy tính chạy máy chủ hệ thống tệp mạng trong phiên giao tiếp với máy khách. FS cục bộ ghi nhớ trạng thái của các hoạt động liên tiếp mà ứng dụng thực hiện trên cùng một tệp bằng cách duy trì một bảng nội bộ của các tệp đang mở (các lệnh gọi hệ thống mở, đọc, ghi sẽ thay đổi trạng thái của bảng này). Khi hệ thống gặp sự cố, bảng các tệp đang mở sẽ bị mất sau khi máy chủ khởi động lại. Trong trường hợp này, ứng dụng chạy trên máy khách không thể tiếp tục hoạt động với các tệp đã mở trước khi gặp sự cố.

Một giải pháp cho vấn đề này dựa trên việc chuyển giao chức năng duy trì và lưu trữ một bảng các tệp đang mở từ máy chủ sang máy khách. Với tổ chức này, giao thức máy khách-máy chủ được đơn giản hóa vì việc khởi động lại máy chủ chỉ dẫn đến việc tạm dừng dịch vụ.

2. Dịch vụ có độ trễ lớn do yêu cầu mạng và máy chủ tệp khởi động lại khi một số lượng lớn máy khách kết nối. Giải pháp cho vấn đề này có thể là lưu các tệp vào bộ nhớ đệm (một phần hoặc toàn bộ) ở phía máy khách. Tuy nhiên, trong trường hợp này, giao thức phải tính đến khả năng hình thành một số bản sao của cùng một tệp, có thể được sửa đổi độc lập bởi những người dùng khác nhau, tức là giao thức phải đảm bảo tính nhất quán giữa các bản sao của tệp có sẵn trên các máy tính khác nhau.

3. Mất dữ liệu và phá hủy tính toàn vẹn của hệ thống tệp trong trường hợp máy tính đóng vai trò máy chủ tệp bị lỗi. Để tăng khả năng chịu lỗi của FS mạng, bạn có thể lưu trữ một số bản sao của mỗi tệp (hoặc toàn bộ FS) trên một số máy chủ. Những bản sao như vậy của tập tin được gọi là bản sao.

Sao chép tệp không chỉ cải thiện khả năng chịu lỗi mà còn giải quyết vấn đề làm quá tải máy chủ tệp bằng cách phân phối yêu cầu tệp trên nhiều máy chủ, giúp cải thiện hiệu suất hệ thống tệp.

4. Việc xác thực được thực hiện trên một máy tính, chẳng hạn như trên máy khách, và việc ủy ​​quyền, tức là kiểm tra quyền truy cập vào các thư mục hoặc tệp, được thực hiện trên một máy tính khác, hoạt động như một máy chủ tệp. Vấn đề chung này của tất cả các dịch vụ mạng phải được tính đến bởi giao thức liên lạc giữa máy khách và máy chủ dịch vụ tệp.

Các vấn đề được liệt kê được giải quyết một cách toàn diện bằng cách tạo ra một dịch vụ để xác thực tập trung, sao chép, lưu vào bộ đệm, v.v. Các dịch vụ bổ sung này được phản ánh trong giao thức tương tác giữa máy khách và máy chủ, do đó các giao thức khác nhau thuộc loại này được tạo ra để hỗ trợ một hoặc một tập hợp các chức năng bổ sung khác. Do đó, đối với cùng một FS cục bộ có thể có các giao thức FS mạng khác nhau (Hình 5.30). Do đó, ngày nay hệ thống tệp NTFS có thể được truy cập bằng SMB, NCP (NetWare Control Protocol) và NFS (Network File System - giao thức hệ thống tệp mạng của Sun Microsystems, được sử dụng trong nhiều phiên bản khác nhau của hệ điều hành UNIX).

Mặt khác, bằng cách sử dụng cùng một giao thức, có thể thực hiện truy cập từ xa vào các hệ thống tệp cục bộ thuộc các loại khác nhau. Ví dụ: giao thức SMB được sử dụng để truy cập không chỉ các hệ thống tệp FAT mà còn cả hệ thống tệp NTFS và HPFS (Hình 5.31). Các hệ thống tệp này có thể được đặt trên các máy tính khác nhau hoặc trên cùng một máy tính.__

Câu hỏi kiểm tra Chương 5

1. Mạng có lợi thế gì so với việc sử dụng máy tính riêng biệt?

2. Cấu trúc liên kết mạng vật lý và logic có luôn giống nhau không?

3. Mạng lưới được phân loại như thế nào theo quy mô khu vực phủ sóng?

4. Máy tính nào có thể đóng vai trò là máy chủ trên mạng?

5. File server và print server là gì?

6. Máy chủ đăng ký thực hiện những chức năng gì?

7. Máy chủ truy cập từ xa thực hiện những chức năng gì?

8. Máy chủ proxy là gì?

9. Liệt kê các máy khách có thể có của mạng máy tính.

10. Máy khách “dày” và “mỏng” trong mạng máy tính là gì?

11. Bạn hiểu thuật ngữ “phân đoạn” mạng như thế nào?

12. Địa chỉ MAC là gì?

13. Hệ điều hành phân tán khác hệ điều hành nối mạng như thế nào? Các hệ thống mạng phân tán thực sự có tồn tại ngày nay không?

14. Liệt kê các thành phần chính của hệ điều hành mạng. Dịch vụ mạng là gì? Bạn có thể kể tên những dịch vụ mạng nào?

15. Một số dịch vụ mạng không nhắm đến người dùng mà nhắm đến quản trị viên. Đây là những dịch vụ gì?

16. Hệ điều hành mạng đầu tiên là gì? Những cách tiếp cận nào để tạo ra hệ điều hành mạng hiện đang được sử dụng?

17. Kể tên các đặc điểm đặc trưng của mạng ngang hàng. Đặc điểm chính của mạng đa ngang hàng là gì?

18. Hệ điều hành máy chủ là gì? Họ là ai? Hệ điều hành máy chủ khác với hệ điều hành máy khách như thế nào?

19. Có bao nhiêu biến thể của sơ đồ hai tầng được sử dụng để xử lý ứng dụng phân tán?

20. Xử lý ứng dụng hai lớp có gì tốt khi máy chủ và máy khách cộng tác?

21. Sơ đồ xử lý ứng dụng ba tầng có ưu điểm gì không?

22. Các tiến trình có thể tương tác như thế nào trong các hệ thống phân tán?

23. Các nguyên hàm chính được sử dụng trong hệ thống truyền tải OS mạng là gì?

24. Việc đồng bộ hóa các tiến trình trên mạng được tổ chức như thế nào?

25. Lời gọi thủ tục từ xa có ý nghĩa gì?

Dịch vụ mạng

Bài giảng 10

Tập hợp các bộ phận máy chủ và máy khách của HĐH cung cấp quyền truy cập vào một loại tài nguyên máy tính cụ thể qua mạng được gọi là dịch vụ mạng. Phần máy khách thực hiện các yêu cầu mạng tới phần máy chủ của một máy tính khác. Phần máy chủ đáp ứng các yêu cầu về tài nguyên máy chủ cục bộ. Phần client hoạt động, phần server thụ động.

Trong giao tiếp mạng, quyền truy cập mạng vào hệ thống tệp đóng một vai trò quan trọng. Trong trường hợp này, các phần máy khách và máy chủ, cùng với hệ thống tệp mạng, tạo thành dịch vụ tập tin

Thành phần chính của hệ điều hành phân tán là hệ thống tệp mạng. Một hệ thống tệp mạng được hỗ trợ bởi một hoặc nhiều máy tính lưu trữ tệp (máy chủ tập tin)

Khách hàng máy tính đính kèm hoặc gắn kết các hệ thống tệp này vào hệ thống tệp cục bộ của chúng

Dịch vụ tập tin bao gồm các chương trình máy chủ và chương trình máy khách tương tác qua mạng bằng giao thức.

Dịch vụ tệp bao gồm chính dịch vụ tệp (thao tác tệp) và dịch vụ thư mục (quản lý thư mục)

Mô hình dịch vụ tệp mạng bao gồm các thành phần sau:

Hệ thống tệp cục bộ (FAT, NTFS)

Giao diện hệ thống tệp cục bộ (cuộc gọi hệ thống)

Máy chủ hệ thống tệp mạng

Máy khách hệ thống tệp mạng (Windows Explorer, UNIX shell, v.v.)

Giao diện hệ thống tệp mạng (lặp lại các cuộc gọi hệ thống tệp cục bộ)

Hệ thống tệp mạng Giao thức máy khách-máy chủ (Khối thông báo máy chủ SMB cho Windows, NFS (Hệ thống tệp mạng) và FTP (Giao thức truyền tệp) cho UNIX)

Giao diện hệ thống tệp mạng

Có một số loại giao diện, được đặc trưng bởi:

Cấu trúc tập tin. Hầu hết các hệ thống tệp mạng đều hỗ trợ các tệp phẳng

Khả năng sửa đổi tệp. Hầu hết các hệ thống tệp mạng đều có khả năng sửa đổi một tệp. Một số hệ thống tập tin phân tán cấm các hoạt động sửa đổi. Chỉ có thể tạo và đọc. Đối với các tệp như vậy, việc tổ chức bộ nhớ đệm và sao chép sẽ dễ dàng hơn.

Ngữ nghĩa phân tách tập tin:

Ngữ nghĩa UNIX (tập trung). Nếu một lần đọc theo sau nhiều lần ghi, bản cập nhật mới nhất sẽ được đọc. Nguyên tắc này cũng có thể thực hiện được trong hệ thống tệp phân tán, miễn là có một máy chủ tệp và không có bộ nhớ đệm tệp trên máy khách.

Ngữ nghĩa phiên. Các thay đổi bắt đầu sau khi tệp được mở và hoàn tất sau khi tệp được đóng. Nói cách khác, đối với các quy trình khác, các thay đổi chỉ hiển thị sau khi đóng tệp. Trong trường hợp này, có vấn đề khi chia sẻ tệp. Ngữ nghĩa của các tập tin bất biến. Tập tin chỉ có thể được tạo và đọc. Bạn cũng có thể tạo lại tệp dưới một tên khác. Do đó, tệp không thể được sửa đổi nhưng có thể được thay thế bằng một tệp mới. Không có vấn đề chia sẻ.



Cơ chế giao dịch.Đây là cách làm việc với file chia sẻ sử dụng cơ chế giao dịch (các thao tác không thể phân chia)

Kiểm soát truy cập. Ví dụ, đối với Windows NT/2000 có hai cơ chế: ở cấp thư mục (đối với FAT) và ở cấp độ tệp (NTFS)

Đơn vị truy cập. Mô hình tải lên/tải xuống tệp đầy đủ (FTP). Mô hình thứ hai là việc sử dụng các thao tác trên tập tin.

Hệ thống tệp mạng (NFS) là giải pháp chia sẻ tệp dành cho các tổ chức có môi trường máy Windows và Unix/Linux hỗn hợp. Hệ thống tệp NFS cho phép bạn chia sẻ tệp trên các nền tảng được chỉ định trong khi chạy hệ điều hành Windows Server 2012 trong Windows Server 2012 bao gồm các tính năng và cải tiến sau.

1. Tìm kiếm thư mục hoạt động. Bạn có khả năng sử dụng Windows Active Directory để truy cập các tập tin. Tiện ích mở rộng lược đồ Quản lý danh tính cho Unix dành cho Active Directory chứa các trường mã định danh người dùng Unix (UID) và mã định danh nhóm (GID). Điều này cho phép Máy chủ cho NFS và Máy khách cho NFS xem ánh xạ tài khoản người dùng Windows trên Unix trực tiếp từ Dịch vụ miền Active Directory. Quản lý danh tính cho Unix giúp quản lý việc ánh xạ tài khoản người dùng Windows trên Unix sang Dịch vụ miền Active Directory dễ dàng hơn.

2. Cải thiện hiệu suất máy chủ. Các dịch vụ dành cho NFS bao gồm trình điều khiển bộ lọc tệp giúp giảm đáng kể độ trễ tổng thể khi truy cập các tệp trên máy chủ.

3. Hỗ trợ cho các thiết bị Unix đặc biệt. Các dịch vụ dành cho NFS hỗ trợ các thiết bị Unix đặc biệt (mknod).

4. Hỗ trợ Unix mở rộng. Các dịch vụ dành cho NFS hỗ trợ các phiên bản Unix sau: Sun Microsystems Solaris phiên bản 9, Red Hat Linux phiên bản 9, IBM AIX phiên bản 5L 5.2 và Hewlett Packard HP-UX phiên bản 11i, cũng như nhiều bản phân phối Linux hiện đại.

Một trong những tình huống phổ biến nhất tạo ra nhu cầu về NFS liên quan đến việc cung cấp hệ thống hoạch định nguồn lực doanh nghiệp (ERP) dựa trên Unix cho người dùng Windows. Khi ở trong hệ thống ERP, người dùng có thể tạo báo cáo và/hoặc xuất dữ liệu tài chính sang Microsoft Excel để phân tích thêm. Hệ thống tệp NFS cho phép truy cập các tệp này khi vẫn ở trong môi trường Windows, giảm nhu cầu về kỹ năng kỹ thuật chuyên biệt và thời gian xuất tệp bằng tập lệnh Unix rồi nhập chúng vào một ứng dụng Windows cụ thể.

Cũng có thể xảy ra trường hợp bạn có hệ thống Unix được sử dụng để lưu trữ tệp trên một số loại Mạng Khu vực Lưu trữ (SAN). Chạy các dịch vụ NFS trên máy Windows Server 2012 cho phép người dùng trong tổ chức truy cập các tệp được lưu trữ ở đó mà không cần sử dụng tập lệnh phía Unix.

Trước khi cài đặt Dịch vụ NFS, bạn phải xóa mọi thành phần NFS đã cài đặt trước đó, chẳng hạn như các thành phần NFS có trong Dịch vụ dành cho Unix.

Thành phần dịch vụ NFS

Hai thành phần dịch vụ NFS sau đây có sẵn.

1. Máy chủ cho NFS(Máy chủ cho NFS). Thông thường, máy tính chạy Unix không thể truy cập các tệp nằm trên máy tính chạy Windows. Tuy nhiên, một máy tính chạy Windows Server 2012 R2 và Server for NFS có thể hoạt động như một máy chủ tệp cho máy tính Windows và Unix.

2. Khách hàng cho NFS(Khách hàng cho NFS). Thông thường, máy tính chạy Windows không thể truy cập các tệp nằm trên máy tính chạy Unix. Tuy nhiên, máy tính chạy Windows Server 2012 R2 và tính năng Máy khách cho NFS có thể truy cập các tệp được lưu trữ trên máy chủ NFS dựa trên Unix.

Cài đặt máy chủ cho NFS bằng PowerShell

Hãy xem cách sử dụng PowerShell để cài đặt vai trò NFS trên máy chủ và tạo chia sẻ tệp NFS.

1. Mở cửa sổ Windows PowerShell thông qua thanh tác vụ với tư cách tài khoản quản trị viên.

2. Nhập các lệnh sau để cài đặt vai trò NFS trên máy chủ:

PS C:\> Trình quản lý máy chủ mô-đun nhập PS C:\> Tính năng bổ sung Windows FS-NFS-Dịch vụ PS C:\> Mô-đun nhập NFS

3. Nhập lệnh bên dưới để tạo chia sẻ tệp NFS mới:

PS C:\> New-NfsShare -Tên "Test" -Path "C:\Shares\Test"

4. Để xem tất cả các lệnh ghép ngắn PowerShell dành riêng cho NFS mới có sẵn trong Windows Server 2012 R2, hãy chạy lệnh sau:

PS C:\>Nhận lệnh -Module NFS

5. Nhấp chuột phải vào thư mục C:\Shares\Test, chọn “thuộc tính”, sau đó chuyển đến tab Chia sẻ NFS. Nhấp vào nút Quản lý chia sẻ NFS, trong hộp thoại xuất hiện, bạn có thể quản lý quyền truy cập thư mục, cho phép truy cập ẩn danh và định cấu hình cài đặt mã hóa tệp. Bạn có thể chia sẻ thư mục qua NFS bằng hộp thoại Chia sẻ nâng cao NFS mà không cần sử dụng PowerShell.

Đặt độ phân giải tiêu chuẩn

Bây giờ chúng ta sẽ cần mở một số cổng tường lửa để NFS hoạt động. Các cổng cần thiết để dịch vụ NFS hoạt động bình thường được trình bày trong bảng bên dưới.