banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Có thể tự động unmount một mountpoint khi NFS server bi treo?  XML
  [Question]   Có thể tự động unmount một mountpoint khi NFS server bi treo? 24/09/2008 06:28:00 (+0700) | #1 | 152717
[Avatar]
simmy
Member

[Minus]    0    [Plus]
Joined: 25/05/2005 02:40:05
Messages: 119
Location: echo $FROM
Offline
[Profile] [PM]
Chào mọi người.

Simmy có một câu hỏi muốn tham khảo mọi người, mong mọi người trợ giúp nha.

Giả sử Simmy có 1 mạng máy tính gồm 3 máy:

1. NFS server A: có vai trò share thư mục serverA:/export/home/shareA
2. NIS server B: có nhiệm vụ tạo 1 map và inform cái serverA:/export/home/shareA thành /share/shareA có trong mạng (qua auto_share chẳng hạn) -> autofs
3. Client C: sẽ automount cái thư mục /share/shareA trên serverA:/export/home/shareA thông qua map cưa NIS server B.


Hiện tại hệ thống của Simmy hoạt động ngon lành, nhưng có một vấn đề nhỏ nảy sinh là giả sử NFS server(A) bị treo hoặc chết, thì lúc đó Client C sẽ chờ NFS server A (respond) và có thể chuyện này làm treo Client C.

Simmy muốn hỏi mọi người có cách nào config trên NFS server A hay NIS B hay C để nếu NFS server A chết (treo) thì C sẽ không mount các thư mục của A nữa (unmount) sau một khoảng thời gian nào đó ?

Cảm ơn mọi người.
Ký tên
-----------
ABCXYZ
Cộp cộp.
[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 24/09/2008 06:56:00 (+0700) | #2 | 152720
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Cách này tớ vừa nghĩ ra:
- Bạn dùng monit theo dõi nfs, khi nào nó chết thì tự động restart
- hoặc dùng một số tools nfsstat, nfswatch, ... theo dõi performance cũng như traffic để có thể unmount khi cần

PS: Chỉ là ý tưởng, không biết có thực hiện được không.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 24/09/2008 10:10:15 (+0700) | #3 | 152740
[Avatar]
simmy
Member

[Minus]    0    [Plus]
Joined: 25/05/2005 02:40:05
Messages: 119
Location: echo $FROM
Offline
[Profile] [PM]

quanta wrote:
Cách này tớ vừa nghĩ ra:
- Bạn dùng monit theo dõi nfs, khi nào nó chết thì tự động restart
- hoặc dùng một số tools nfsstat, nfswatch, ... theo dỗi performance cũng như traffic để có thể unmount khi cần

PS: Chỉ là ý tưởng, không biết có thực hiện được không. 


Cái này có lẽ sẽ hiện thực được, nhưng nếu muồn làm được điều này mình cần viết một scripts chạy nền trên Client C, như vậy sẽ tốn tài nguyên của hệ thống C (giả sử 1 phút nó sẽ check 1 lần). Đây có thể là cách cuối cùng, nó chưa là một phương án hay nếu có cách config đâu đó như Simmy nghĩ.

Ký tên
-----------
ABCXYZ
Cộp cộp.
[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 25/10/2008 13:38:09 (+0700) | #4 | 156521
compiz_tux
Member

[Minus]    0    [Plus]
Joined: 04/09/2008 13:08:09
Messages: 10
Offline
[Profile] [PM]

Hiện tại hệ thống của Simmy hoạt động ngon lành, nhưng có một vấn đề nhỏ nảy sinh là giả sử NFS server(A) bị treo hoặc chết, thì lúc đó Client C sẽ chờ NFS server A (respond) và có thể chuyện này làm treo Client C.
Simmy muốn hỏi mọi người có cách nào config trên NFS server A hay NIS B hay C để nếu NFS server A chết (treo) thì C sẽ không mount các thư mục của A nữa (unmount) sau một khoảng thời gian nào đó ?  


Có 4 NFS mount options liên quan đến blocking/non-blocking khi NFS sever un-responding (A chết/treo)
1. "hard": Khi thời gian đợi mount hết hạn, sẽ có thông báo "Server not responding" và client cố gắng tiếp tục mount. Đây là default option khi mount nfs.
2. "soft": Khi thời gian đợi mount hết hạn, client sẽ nhận thông báo lỗi I/O. Option này bị khuyến cáo không nên dùng vì nó có thể xảy ra những tình huống file trên NFS server bị corrupt (tui cũng không hiểu vì sao option hay như thế này lại bị cái lỗi nguy hiểm như vậy)
3. "intr": Được dùng chung với option "hard". Khi thời gian đợi mount hết hạn, cho phép interrupt việc yêu cầu mount bằng tổ hợp Ctrl-C.
4. "nolock": Ngăn không cho client bị block khi nó mount vào mount-point trong lúc NFS server bị chết.

Theo thông tin trên, có thể dùng (1+3) hoặc dùng 4. Nhưng cả 2 cách này đều ko tự động thực hiện việc un-mount như bạn Simmy cần mà phải có tương tác của người dùng.


nhưng nếu muồn làm được điều này mình cần viết một scripts chạy nền trên Client C, như vậy sẽ tốn tài nguyên của hệ thống C (giả sử 1 phút nó sẽ check 1 lần). Đây có thể là cách cuối cùng, nó chưa là một phương án hay nếu có cách config đâu đó như Simmy nghĩ.  

Tui nghĩ có lẽ cách tiếp cận của bạn quanta đúng. Vì theo tui biết, bất cứ cách giải quyết nonblocking hay asynchronous nào cũng hoặc là dùng interrupt, hoặc là dùng cơ chế period-checking (thường gọi là polling). Chỉ những ứng dụng cấp thấp (như driver) mới hay dùng interrupt, còn các ứng dụng cấp cao (như các service) thì thường dùng polling. NFS, nếu có config như bạn Simmy nghĩ, và config đó dùng cơ chế polling thì nó vẫn sẽ tốn tài nguyên giống như cách tiếp cận của bạn quanta.


[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 25/10/2008 14:16:50 (+0700) | #5 | 156525
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Code:
2. "soft": Khi thời gian đợi mount hết hạn, client sẽ nhận thông báo lỗi I/O. Option này bị khuyến cáo không nên dùng vì nó có thể xảy ra những tình huống file trên NFS server bị corrupt (tui cũng không hiểu vì sao option hay như thế này lại bị cái lỗi nguy hiểm như vậy)


Cái này hơi vô lí, nếu NFS server vì một lí do nào đó mà bị treo hoặc chết thì dữ liệu trên server có bị corrupt hay hư hại là do "treo hoặc chết" gây nên chứ liên quan gì tới Soft Mount?

@Simmy: Theo tớ nghĩ thì cậu nên sử dụng soft mount nếu NFS server của cậu thường xuyên gặp tình trạng up/down, còn nếu đó chỉ là một dự trù cho một ngày bão nào đó, thì viết một con shell chạy ngầm kiểm tra như anh quanta nói, dùng cronjob định kì chạy nó bao nhiêu tiếng 1 lần, không làm tốn quá nhiều tài nguyên lắm, tất nhiên là con shell đó viết và chạy được như yêu cầu smilie
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 25/10/2008 23:38:56 (+0700) | #6 | 156563
compiz_tux
Member

[Minus]    0    [Plus]
Joined: 04/09/2008 13:08:09
Messages: 10
Offline
[Profile] [PM]

mr.Bi wrote:

Cái này hơi vô lí, nếu NFS server vì một lí do nào đó mà bị treo hoặc chết thì dữ liệu trên server có bị corrupt hay hư hại là do "treo hoặc chết" gây nên chứ liên quan gì tới Soft Mount?
 


Sáng nay tìm được lý do vì sao "soft" không nên dùng:
NFS advanced mount options
Soft: retries NFS file operation n times as set by the number of retries before reporting error option; returns error if no server response in n tries. Soft mounts are recommended for filesystems whose servers are considered unreliable, or if the link is slow. Unlike spongy mounts, soft mounts may time out during read and write operations.
(Source: http://uw713doc.sco.com/en/FS_manager/nfsD.nfsopt.html)

Data bị corrupt chính là do bản chất của soft mount của NFS trong việc đọc/ghi dữ liệu: nếu vì 1 lý do nào đó mà xảy ra time-out trong quá trình đọc/ghi data lên NFS server, soft mount coi tác vụ đọc/ghi [b]kết thúc[/] và dữ liệu đọc từ/ghi lên NFS server ko đúng (trong khi đó, nếu time-out xảy ra, hard mount sẽ retry việc đọc/ghi dữ liệu để bảo đảm dữ liệu được toàn vẹn). "Soft mount phân biệt với Hard mount" giống như "download 1 file bằng cách chọn Save As... trong IE phân biệt với download 1 file bằng IDM".

mr.Bi wrote:

@Simmy: Theo tớ nghĩ thì cậu nên sử dụng soft mount nếu NFS server của cậu thường xuyên gặp tình trạng up/down
 

Nếu trong 1 hệ thống thường xuyên xảy ra up/down và yêu cầu toàn vẹn dữ liệu được đặt lên hàng đầu, dùng Soft mount theo tui nghĩ rất không nên, bởi vì dữ liệu trên NFS server sẽ có nguy cơ rất lớn bị corrupt. Hậu quả của nó sẽ lớn hơn rất nhiều so với tình trạng not-responding.

[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 26/10/2008 00:24:07 (+0700) | #7 | 156571
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Bản thân bạn có đọc và hiểu được đoạn mà bạn trích dẫn ra không vậy? Tôi nghĩ bạn cũng chưa hiểu được nghĩa là từ mount chưa chưa nói đến NFS mount.

NFS Server và NFS client là sao? Bản thân của môi trường Server/Client là sao? Đâu ra cái dụ "Dữ liệu được đọc và ghi lên server" ở đây smilie

Nếu trong 1 hệ thống thường xuyên xảy ra up/down và yêu cầu toàn vẹn dữ liệu được đặt lên hàng đầu, dùng Soft mount theo tui nghĩ rất không nên, bởi vì dữ liệu trên NFS server sẽ có nguy cơ rất lớn bị corrupt. Hậu quả của nó sẽ lớn hơn rất nhiều so với tình trạng not-responding.
 


Trích trong chính câu bạn đưa:

Soft mounts are recommended for filesystems whose servers are considered unreliable, or if the link is slow.
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 26/10/2008 12:17:39 (+0700) | #8 | 156643
LeVuHoang
HVA Friend

Joined: 08/03/2003 16:54:07
Messages: 1155
Offline
[Profile] [PM]
Hoàng nghĩ do compiz_tux trình bày chưa hoàn chỉnh lắm nên mR.Bi hiểu nhầm chăng?

Nếu trong 1 hệ thống thường xuyên xảy ra up/down và yêu cầu toàn vẹn dữ liệu được đặt lên hàng đầu, dùng Soft mount theo tui nghĩ rất không nên, bởi vì dữ liệu trên NFS server sẽ có nguy cơ rất lớn bị corrupt
 

Khi NFS client đọc dữ liệu từ trên server về, trong quá trình đọc bị timeout, hệ thống sẽ trở lại bình thường sau "n" lần thử. Như vậy, dữ liệu ở client sẽ không tải được đầy đủ (option hard sẽ cố gắng thử lại tiếp cho đến khi dữ liệu là toàn vẹn). Sẽ là không tốt cho user ở NFS client vì tưởng việc tải dữ liệu đã hoàn tất và 100% chính xác. Điều này cũng xảy ra đối với ghi dữ liệu lên NFS server.

Ngoài ra, trên tài liệu của compiz_tux có trình bày thêm 1 mode nữa:

Spongy
sets soft semantics for stat, lookup, fsstat, readlink, and readdir NFS operations and hard semantics for all other NFS operations on the filesystem. Spongy mounts are preferable to soft mounts because spongy mounts will not time out during read and write operations. They are recommended for slow, long-distance, or unreliable links, and for unreliable servers.  

Thiết nghĩ mode này là phù hợp cho simmy. Khi client lần đầu tiên request lên server, thường thì chỉ cần readdir, ls... chứ chưa phải đọc dữ liệu, lúc này có timeout cũng không quan trọng. Đến khi dùng các hình thức read/write, lúc đó mới quan tâm đến tính toàn vẹn của dữ liệu. Điều này sẽ giúp quá trình mount/boot nhanh hơn.
[Up] [Print Copy]
  [Question]   Re: Có thể tự động unmount một mountpoint khi NFS server bi treo? 27/10/2008 15:35:48 (+0700) | #9 | 156790
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Liệu khi tiến hành unmount, client của bạn có thể thoát khỏi bị treo hay không?
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
2 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|