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 Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?  XML
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 04/05/2011 20:02:10 (+0700) | #1 | 236647
[Avatar]
blackholesun
Member

[Minus]    0    [Plus]
Joined: 04/08/2005 02:29:50
Messages: 57
Offline
[Profile] [PM]
Dear mọi người,

Cho mình hỏi là tại sao trên một hệ thống lại cần đến cả 2 loại link: Symbolic Link và Hard Link?
Các bạn có thể cho mình một ví dụ về sự cần thiết phải hiện diện của Hard Link được không?

Thanks all!
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 08:57:05 (+0700) | #2 | 236662
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

blackholesun wrote:

Cho mình hỏi là tại sao trên một hệ thống lại cần đến cả 2 loại link: Symbolic Link và Hard Link?
 

Bởi vì mỗi loại có những ưu điểm và nhược điểm riêng.

blackholesun wrote:

Các bạn có thể cho mình một ví dụ về sự cần thiết phải hiện diện của Hard Link được không?
 

Một ứng dụng nào đó không cho phép followsymlink ra ngoài chroot directory chẳng hạn nhưng hardlink thì OK.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 09:41:05 (+0700) | #3 | 236664
[Avatar]
blackholesun
Member

[Minus]    0    [Plus]
Joined: 04/08/2005 02:29:50
Messages: 57
Offline
[Profile] [PM]

quanta wrote:

Bởi vì mỗi loại có những ưu điểm và nhược điểm riêng.
 

Quanta giúp tôi triển khai thêm ý này nhé, thanks!
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 09:54:37 (+0700) | #4 | 236666
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Ưu điểm của hardlink:
  • Dùng chung inode, tìm kiếm sẽ nhanh hơn
  • Có thể làm việc với mọi ứng dụng
  • Source file bị xoá, hardlink vẫn OK

Hạn chế của hardlink:
  • Không hardlink sang một filesystem khác được
  • Không hardlink được directory
  • Phải dựa vào inode để biết một file có những hardlink nào

Ưu điểm của softlink:
  • Link được directory
  • Có thể dễ dàng kiểm tra một file có những softlink nào với `ls -l`

Hạn chế của softlink:
  • Một số ứng dụng không cho phép symlimk
  • Source bị xoá, symlink tèo luôn

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 11:31:46 (+0700) | #5 | 236670
[Avatar]
blackholesun
Member

[Minus]    0    [Plus]
Joined: 04/08/2005 02:29:50
Messages: 57
Offline
[Profile] [PM]
Đóng góp thêm vào hạn chế của Hard Link: Sự tồn tại của Hard Link làm cho dữ liệu lưu trên hệ thống bị "double" (thực chất là >=2 lần).
Và muốn xóa triệt để dữ liệu thì phải xóa tập tin gốc và toàn bộ Hard Link của nó? Như vậy thì cách xoá thế nào cho đúng: các Hard Link trước và tiếp theo là tập tin gốc? Hay xoá sao cũng được?
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 11:46:33 (+0700) | #6 | 236672
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

blackholesun wrote:

Và muốn xóa triệt để dữ liệu thì phải xóa tập tin gốc và toàn bộ Hard Link của nó? Như vậy thì cách xoá thế nào cho đúng: các Hard Link trước và tiếp theo là tập tin gốc? Hay xoá sao cũng được? 

Xoá cái nào trước cũng được. `find` có option -inum hoặc -samefile để tìm.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 15:24:07 (+0700) | #7 | 236700
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]

blackholesun wrote:
Đóng góp thêm vào hạn chế của Hard Link: Sự tồn tại của Hard Link làm cho dữ liệu lưu trên hệ thống bị "double" (thực chất là >=2 lần).
Và muốn xóa triệt để dữ liệu thì phải xóa tập tin gốc và toàn bộ Hard Link của nó? Như vậy thì cách xoá thế nào cho đúng: các Hard Link trước và tiếp theo là tập tin gốc? Hay xoá sao cũng được? 


Điểm này chưa chính xác lắm, hardlink không làm cho bản thân dữ liệu trên bề mặt từ của đĩa cứng bị tăng lên, mà nó chỉ tăng số record tham chiếu đến vùng dữ liệu từ tính trên bề mặt đĩa cứng trong bảng quản lý tệp tin của filesystem

Bồ có thể thử bằng cách, tạo một hardlink cho một tệp tin có kích thướng 1GB, sau khi tạo xong bồ kiểm tra lại dung lượng đã dụng trên ổ cứng có tăng thêm không là biết liền
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 16:48:03 (+0700) | #8 | 236708
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
xnohat nói đúng đó.
Hardlink không làm cho dung lượng chứa dữ liệu tăng lên, chỉ thêm tham chiếu. Kiểu như 1 người có nhiều tên, nhiều giấy chứng minh nhân dân nhưng thực ra vẫn chỉ là 1 người.

Cái này cực kỳ có lợi với ứng dụng ví dụ email. Ví dụ muốn gửi 1 mail cho toàn bộ user (ví dụ 1000) trong 1 domain (chung 1 server, 1 file system), thì ta tạo 1 bản copy email (giả sử kích thước 1M). Sau đó tạo ra 1000 cái hardlink đến cùng 1 file => dung lượng tăng lên chiếm đĩa chỉ dành cho cái link đó rất nhỏ chứ ko phải là 1M * 1000 = 1GB. Sau đó, mọi người có xoá bỏ email (xoá file), di chuyển (trong inbox của họ) thì cũng ko làm 999 người kia bị ảnh hưởng.
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 21:14:50 (+0700) | #9 | 236726
[Avatar]
blackholesun
Member

[Minus]    0    [Plus]
Joined: 04/08/2005 02:29:50
Messages: 57
Offline
[Profile] [PM]
Thanks all!

myquartz wrote:

Cái này cực kỳ có lợi với ứng dụng ví dụ email. Ví dụ muốn gửi 1 mail cho toàn bộ user (ví dụ 1000) trong 1 domain (chung 1 server, 1 file system), thì ta tạo 1 bản copy email (giả sử kích thước 1M). Sau đó tạo ra 1000 cái hardlink đến cùng 1 file => dung lượng tăng lên chiếm đĩa chỉ dành cho cái link đó rất nhỏ chứ ko phải là 1M * 1000 = 1GB. Sau đó, mọi người có xoá bỏ email (xoá file), di chuyển (trong inbox của họ) thì cũng ko làm 999 người kia bị ảnh hưởng.
 

Ví dụ bạn đưa ra rất hay!
Theo mình hiểu thế này:
Hardlink 1, hardlink 2 --> inode <-- tập tin gốc.
Symlink --> tập tin gốc (tên tập tin) --> inode.

Quay trở lại ví dụ trên: nếu 999 người xóa email này (thực chất là xóa hardlink) thì người còn lại vẫn không bị ảnh hưởng --> người cuối cùng xóa email, lúc này inode mới thực sự được xóa? --> Vậy nếu ban đầu vì 1 lý do nào đó inode bị xóa hay bị hư thì sao?
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 21:32:53 (+0700) | #10 | 236729
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]

blackholesun wrote:

Quay trở lại ví dụ trên: nếu 999 người xóa email này (thực chất là xóa hardlink) thì người còn lại vẫn không bị ảnh hưởng --> người cuối cùng xóa email, lúc này inode mới thực sự được xóa? --> Vậy nếu ban đầu vì 1 lý do nào đó inode bị xóa hay bị hư thì sao? 


Bồ đặt câu hỏi rất thông minh

Các inodes giống như các danh sách lưu trữ thông tin về mọi tập tin trong hệ thống, mỗi tập tin sẽ có một inode trong vùng lưu trữ các inode. Các inodes không được liên kết lại thành 1 bảng duy nhất mà tách rời riêng biệt để tránh việc một inode bị hư hỏng làm toàn bộ các inodes các bị ảnh hưởng. Bên cạnh đó các filesystem trên *nix ( cụ thể ở đây là họ ext,ext2,ext3,ext4 ), luôn có cơ chế mirror các inode để khôi phục khi xảy ra hư hại khiến một số inode không còn toàn vẹn. Dĩ nhiên chuyện toàn bộ các inode bị phá huỷ là chuyện có thể xảy ra ( tỷ dụ như là ổ đĩa bị format chẳng hạn ) thì việc khôi phục các inode lúc này không còn phụ thuộc vào kiến trúc của filesystem nữa mà là nhiều vấn đề vật lý khác.
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 05/05/2011 22:19:14 (+0700) | #11 | 236731
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Bổ sung thêm tí, là nếu không còn file nào tham chiếu đến inode đó nữa, tự os sẽ xoá bỏ.
Chỉ có os mới có quyền thao tác trên inode và ko có chuyện xoá nhầm ở đây.
Bạn cứ hình dung inode nó như bảng fat trong hệ thống file fat ấy.
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 06/05/2011 07:44:01 (+0700) | #12 | 236738
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

blackholesun wrote:

Theo mình hiểu thế này:
Hardlink 1, hardlink 2 --> inode <-- tập tin gốc.
Symlink --> tập tin gốc (tên tập tin) --> inode.
 

Bạn hiểu thế này là chưa đúng rồi: symlink và file gốc nó có inode khác nhau đấy. Mình nghĩ đọc cái này sẽ dễ hiểu hơn: http://linuxgazette.net/105/pitcher.html

blackholesun wrote:

Quay trở lại ví dụ trên: nếu 999 người xóa email này (thực chất là xóa hardlink) thì người còn lại vẫn không bị ảnh hưởng --> người cuối cùng xóa email, lúc này inode mới thực sự được xóa? --> Vậy nếu ban đầu vì 1 lý do nào đó inode bị xóa hay bị hư thì sao?
 

Vấn đề cần tìm hiểu là: inode (index node) nó chứa những thông tin gì và ai có thể xoá hay làm hư nó.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 06/05/2011 13:04:32 (+0700) | #13 | 236749
[Avatar]
blackholesun
Member

[Minus]    0    [Plus]
Joined: 04/08/2005 02:29:50
Messages: 57
Offline
[Profile] [PM]
Cảm ơn quanta về link rất hay: http://linuxgazette.net/105/pitcher.html

Vậy bây giờ tôi diễn đạt lại thế này:
Symlink --> inode của symlink --> đường dẫn đến tập tin thứ 2 (thực chất là tên tập tin thứ 2)--> tập tin thứ 2 (tên tập tin) --> inode của tập tin thứ 2 --> dữ liệu thực sự.
==> Như vậy có thể hiểu: khi một tiến trình gọi đến symlink, sẽ có 2 bước kiểm tra quyền. Thứ nhất là quyền quy định tại inode của symlink, thứ hai là quyền quy định tại inode của tập tin gốc. Tôi hiểu vậy chính xác chưa nhỉ?

Trở lại vấn đề của ví dụ bạn myquartz đưa ra: như vậy thì làm thế nào mà tôi phân quyền cho từng user một, khi mà tất cả hard link và tập tin gốc đều có quyền giống nhau?
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 06/05/2011 13:36:43 (+0700) | #14 | 236750
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

blackholesun wrote:

Vậy bây giờ tôi diễn đạt lại thế này:
Symlink --> inode của symlink --> đường dẫn đến tập tin thứ 2 (thực chất là tên tập tin thứ 2)--> tập tin thứ 2 (tên tập tin) --> inode của tập tin thứ 2 --> dữ liệu thực sự.
 

Mình nghĩ là vẫn hơi khó hiểu.

blackholesun wrote:

==> Như vậy có thể hiểu: khi một tiến trình gọi đến symlink, sẽ có 2 bước kiểm tra quyền. Thứ nhất là quyền quy định tại inode của symlink, thứ hai là quyền quy định tại inode của tập tin gốc. Tôi hiểu vậy chính xác chưa nhỉ?
 

Vấn đề là permission của symlink có ý nghĩa gì ở đây không?

blackholesun wrote:

Trở lại vấn đề của ví dụ bạn myquartz đưa ra: như vậy thì làm thế nào mà tôi phân quyền cho từng user một, khi mà tất cả hard link và tập tin gốc đều có quyền giống nhau?
 

Mình cũng chưa hiểu cái ví dụ này lắm, chờ myquartz vào giải thích vậy.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 07/05/2011 02:59:01 (+0700) | #15 | 236773
Mr.Khoai
Moderator

Joined: 27/06/2006 01:55:07
Messages: 954
Offline
[Profile] [PM]
Anh quanta,

hardlink chỉ là một entry point tới một inode. Có thể hiểu nôm na một file là một hard link point tới một inode. Mình có thể tạo thêm nhiều hardlink để cùng point tới một inode. inode mới có các thông tin về permissions. Do đó, nếu sử dụng hard link như myquartz ví dụ thì không thể cấp quyền cho từng trên các "links" mà phải change permission trên file gốc. Change permission trên các links cũng sẽ ảnh hưởng đến file gốc.

khoai
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 09/05/2011 12:17:23 (+0700) | #16 | 236861
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Hi all!
Riêng với hardlink, thì permission + các thông tin khác của file là giống nhau. Tuy nhiên khi ta đổi tên hoặc xoá (unlink) thì ko ảnh hưởng tới link khác.
Trường hợp tớ áp dụng, thì email là virtual user, mọi account đều map về 1 user nên làm cái việc đó được. Hệ thống mail Linux mà lưu dạng Maildir, một số thông tin + trạng thái (đọc/chưa đọc) của mail được ghi nhận ở trên file name, sẽ không ảnh hưởng tí nào nếu người dùng move mail từ IMAP folder này sang folder kia hoặc xoá bỏ nó đi.
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 09/05/2011 13:47:06 (+0700) | #17 | 236863
[Avatar]
blackholesun
Member

[Minus]    0    [Plus]
Joined: 04/08/2005 02:29:50
Messages: 57
Offline
[Profile] [PM]
Hi all!

myquartz wrote:

Trường hợp tớ áp dụng, thì email là virtual user, mọi account đều map về 1 user nên làm cái việc đó được.
 

Làm cái việc đó được, là việc gì nhỉ? Có phải là sử dụng Hard Link là giải chấp tốt, chấp nhận được?
Theo tôi thấy, sử dụng Hard Link trong trường hợp mà bạn nêu ra thì không thể phân quyền cho từng user. Tuy nhiên, nếu tất cả account đều map về 1 user như bạn nói thì mình nghĩ chúng ta có thể clear vấn đề này được rồi. Kết luận là: có lợi về mặt dung lượng lưu trữ thì không thể phân quyền cho tiết cho từng user.

quanta wrote:

Vấn đề là permission của symlink có ý nghĩa gì ở đây không?
 

Ý nghĩa như thế nào thì tôi chưa nghĩ ra, nhưng tôi suy luận như thế này: hệ thống cho phép làm như vậy, thì phải có lý do của nó, có thể chúng ta chưa hình dung ra nhưng nó chắc chắn phải tồn tại.
[Up] [Print Copy]
  [Question]   Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 09/05/2011 15:56:23 (+0700) | #18 | 236864
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

blackholesun wrote:

quanta wrote:

Vấn đề là permission của symlink có ý nghĩa gì ở đây không?
 

Ý nghĩa như thế nào thì tôi chưa nghĩ ra, nhưng tôi suy luận như thế này: hệ thống cho phép làm như vậy, thì phải có lý do của nó, có thể chúng ta chưa hình dung ra nhưng nó chắc chắn phải tồn tại. 

man 7 symlink wrote:

On Linux, the permissions of a symbolic link are not used in any operations; the permissions are always 0777 (read, write, and execute for all user categories), and can't be changed.
 
Let's build on a great foundation!
[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|