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 [Bài viết] Mô hình Thin client - diskless với FreeBSD  XML
  [Article]   [Bài viết] Mô hình Thin client - diskless với FreeBSD 14/12/2007 05:49:26 (+0700) | #1 | 103754
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Bài viết này tổng hợp những gì thu lượm được sau khoảng 1 tháng làm việc với FreeBSD và thin client của FaL, nên chắc chắn còn nhiều sai sót, mong được sự góp ý của mọi người.
Tham khảo handbook cùa http://www.freebsd.org, /etc/rc.initdiskless, với sự giúp đỡ của fet.
I. Mô hình Thin client là gì?
- Thin client là client computer trong mô hình client-server network, phục vụ cho việc giao tiếp giữa người dùng vào server. Mô hình Thin client rất thích hợp cho những công sở không chuyên về CNTT - những nơi không đòi hỏi cấu hình máy tính làm việc cao, và chạy một số chương trình cụ thể (thư viện, quầy giao dịch, ...). Thin client đơn giản thường được trang bị ổ flash (khoảng 512Mb, hay 1Gb - tùy chủng loại), RAM (256Mb, 512Mb,...), VGA, NIC,... Cấu hình này thấp hơn 1 computer bình thường, giá cả phải chăng. Giá trị kinh tế nâng cao với 1 hệ thống khoảng 20, 30 clients...

Một bức ảnh về Thin client để mọi người tham khảo:



II. Giới thiệu hệ thống:
1. Server: FreeBSD 6.2. Tạm gọi là Diskless Server mang IP 192.168.0.2. Trên server này, ngoài những Partition căn bản như: /, /usr, /tmp, /var,... Ta sẽ tạo thêm 1 partition /Diskless. Partition này sẽ chứa tất cả data cung cấp cho client.

Ghi chú: Ở đây FaL sẽ không đề cập đến việc cài đặt FreeBSD, các bạn có thể tham khảo thêm trên forum, đây là một bài viết về /hvaonline/posts/list/12488.html.

2. Client: thông qua Etherboot sẽ nhận từ server tất cả data. Để có thể thực hiện boot qua ethernet, ít nhất bạn phải có server DHCP cấp IP và boot path cho client. Bạn có thể cấu hình bản thân Diskless server thành DHCP server, hoặc có thể sử dụng DHCP server sẵn có.
Trong phần thiết lập của DHCP, cần thiết phải chỉ rõ bootpath cho client:

Code:
next-server 192.168.0.2;
   filename "pxeboot";
   option root-path "192.168.0.2:/Diskless";


Trên DHCP server này client sẽ nhận file pxeboot. Sau đó sẽ tiếp tục quá trình boot (nhận kernel và mount partitions từ Diskless server). File pxeboot này phải là file boot được lấy từ Diskless server tại:
Code:
/boot/pxeboot
và copy vào thư mục /tftpboot trên DHCP server. (Nếu thư mục này chưa có, bạn có thể tự tạo). Sau đó chỉ rõ đường dẫn của pxeboot trên DHCP server bằng cách chỉnh sửa file /etc/inetd.conf trên DHCP server:
Code:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot


Enable inetd trong /etc/rc.conf thêm dòng:
Code:
inetd_enable="YES"

(còn tiếp)




Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Article]   [Bài viết] Mô hình Thin client - diskless với FreeBSD [2] 14/12/2007 08:38:41 (+0700) | #2 | 103787
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
III. Thiết lập Diskless server
Trong phần này, mỗi mục ta sẽ edit 1 file ở phía Diskless server
1. /etc/rc.conf:
Để client có thể mount các partition từ Diskless server, bản thân Diskless server phải đóng vài trò là NFS server. Thêm những dòng sau vào /etc/rc.conf:
Code:
nfs_server_enable="YES"
rpcbind_enable="YES"

rpcbind quản lý liên lạc giữa NFS server và clients.

2. /etc/exports:
Chỉ định và cấp quyền cho clients có thể mount partition:
Code:
/Diskless -alldirs -maproot=root -network=192.168.0.0 -mask 255.255.255.0


Lưu ý: Mask phải ứng với mask của network, ở đây của FaL là 255.255.255.0

3. Copy vào /Diskless: Đến đây /Diskless vẫn đang còn trống. Nội dung của /Diskless sẽ được cung cấp toàn bộ cho clients. Để đảm bảo client làm việc ta tiến hành copy /bin, /boot, /etc, /lib, /src, /usr, .. vào /Diskless

Sau khi thực hiện công việc copy các thư mục vào /Diskless ta ... tiếp tục công việc smilie:


4. Tạo thư mục: /Diskless/conf:
Thư mục này sẽ chứa các file thiết lập quyền và cơ chế hoạt động ở phía client.
Trong thư mục này tạo tiếp 2 thư mục: /Diskless/conf/base/Diskless/conf/default.
- /Diskless/conf/base sẽ chứa bản sao của root file system của Diskless server. Ở đây ta đã copy thẳng vào /Diskless nên chỉ cần copy /etc vào /Diskless/conf/base/etc là ok.
-/Diskless/conf/default chứa những file sẽ được "đè" (thay thế) những file ở phía root file system của Diskless server. Tác dụng của những file trong thư mục này là để thiết lập cơ chế làm việc ở phía client. Những file này là /etc/fstab, /etc/rc.conf, /etc/ttys, /etc/group, /etc/master.passwd, /etc/passwd, /etc/pwd.db, /etc/spwd.db. Vì vậy trong /Diskless/conf/default ta tạo thư mục /Diskless/conf/default/etc, và copy tất cả những file đó vào thư mục này.

5. Chỉnh sửa các file trong: /Diskless/conf/default:
- File /etc/fstab chỉ ra các mount point cho client:
Code:
192.168.0.2:/Diskless     /         nfs      rw              0 0
192.168.0.2:/Diskless     /usr     nfs      rw              0 0
192.168.0.2:/Diskless     /home  nfs      rw              0 0
md                               /tmp     mfs     -s=30m,rw  0 0 
md                               /var     mfs      -s=30m,rw  0 0 
proc                             /proc    procfs  rw               0 0


- File /etc/rc.conf, file này hiện đang mang trên mình config của Diskless server (như dòng nfs_server_enable="YES", và rpcbind_enable="YES"), xóa những dòng này, sau đó thêm vào những thiết lập phù hợp cho phía clients, cụ thể ở đây là:
Code:
nfs_client_enable="YES"
mountd_enable="YES"


- Những file chứa password của users được copy vào đây để phân biệt những user trên phía server và clients (phần này sẽ bàn sau).

- File /etc/ttys:
Trong mô hình FaL thiết lập, client sau khi thực hiện quá trình boot sẽ request xdm từ server, sau khi login xdm sẽ chạy những ứng dụng cụ thể. Bởi thế thiết lập file này sẽ bàn sau.

Sau khi config xong các file này, bạn có thể xóa các file tương ứng trong /Diskless/etc và trong /Diskless/conf/base/etc/.

Đến đây quá trình thiết lập để clients có thể boot và mount các partition cơ bản hoàn tất.
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Article]   [Bài viết] Mô hình Thin client - diskless với FreeBSD [3] 14/12/2007 09:35:39 (+0700) | #3 | 103790
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Trao đổi giữa clients và server:

Cho đến hết phần III ở trên, client có thể boot và nhận tất cả data có trong /Diskless. Sau khi boot xong clients có thể chạy các ứng dụng được cài đặt (trong thư mục /Diskless ở phía server). Có một điểm đáng lưu ý là những ứng dụng này được chạy ở phía client và tốn khá nhiều tài nguyên của clients (ví dụ: kde, gnome, ...). Điều này không khả thi khi Thin clients không có cấu hình cao. Vì vậy trong mô hình của mình, FaL config để clients có thể login và chạy các ứng dụng ngay trên server với sự trợ giúp của xdm.

Config các file của xdm để clients có thể nhận màn hình login từ phía server:
Thư mục thực hiện các điều chỉnh: /usr/X11R6/lib/X11/xdm/

- File Xaccess: điều khiển tất cả truy cập đến server. Để cho phép tất cả clients có thể request xdm, bỏ comment dòng sau:

Code:
*                                       #any host can get a login window


- File xdm-config: để cho phép xdm có thể quản lý X, đưa dòng sau vào comment: (lưu ý, trong file này, comment được xác định bởi dấu chấm than "!"):

Code:
!DisplayManager.requestPort:   0


- File Xstartup: sẽ được chạy sau khi login vào xdm. Ở đây bạn có thể thiết lập để tự chạy các ứng dụng. Ví dụ:
Code:
#!/bin/sh
/usr/local/bin/gnome-session

Ở đây FaL cho gnome tự động start sau khi đăng nhập xdm.

+ Phần thiết lập xdm ở phía server đã xong, bây giờ ta quay trở lại phía client. Trở lại với file: /Diskless/conf/default/etc/ttys. File này sẽ quy định thiết lập các consoles và displays ở phía clients. Ở đây clients nhận các ứng dụng từ phía server thông qua xdm nên không cần thiết mở các vitual console. Ta có thể comment để tắt tất cả, chỉ để lại 1 console:
Code:
ttyv0   "/usr/X11R6/bin/X -query 192.168.0.2" xterm on secure


X -query 192.168.0.2 sẽ request xdm đến server. Sau khi login, Xstartup sẽ được gọi thực thi.

Lưu ý: Để X có thể "chạy" trên clients, file /Diskless/etc/X11/xorg.conf phải được config phù hợp với clients. Còn làm sao để phù hợp??? Có trời mới biết được cái client của các bạn như thế nào để mà config smilie smilie
-------------------------------

Khuyến cáo: Các bạn nên compile kernel riêng cho client để tiết kiệm tài nguyên. Việc compile được tiến hành đơn giản như sau:

1. Bạn có thể ngồi vào 1 cái client, đăng nhập bằng root, sau đó edit /usr/src/sys/ỉ86/conf/GENERIC - comment tất cả những thứ "vớ vẩn" không cần thiết smilie sau đó:
Code:
make buildkernel
make installkernel


Rồi ngồi uống trà, ăn bánh, chat chít....

2. Ngồi vào cái server: Lúc này bạn phải sử dụng chroot để tạo môi trường làm việc cho mình. Nhưng trước khi sử dụng chroot để build kernel, bạn phải mount 2 thằng quái quỷ /dev, và /proc trước:
Code:
mount -t devfs / /Diskless/dev
mount -t procfs / /Diskless/proc

sau đó:
Code:
chroot /Diskless

Bây giờ bạn có thể thực hiện build kernel. Và kernel này sẽ được lưu trong /Diskless (để cho client dùng).
-----------------------------------

Quản lý Users:
Ở trên kia FaL có đề cập đến những file password ở trong /Diskless/conf/default. Khi một user đăng nhập ở phía client, sẽ được kiểm tra bởi những file này. Vì thế khi
Code:
adduser

user này sẽ được add ở phía clients. Và chắc chắn những user này sẽ khôgn đăng nhập được trên server. Điều này sẽ hạn chế tuyệt đối truy cập trực tiếp đến server.
-----------------------------------

Đến đây bài viết tạm dừng. Quá trình sử dụng, quản lý hệ thống này có điều gì phát sinh FaL sẽ bổ sung, sửa chữa thêm.
Bài viết có thể có thiếu sót, hoặc chưa chuẩn, mong mọi người góp ý thêm.
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

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