<![CDATA[Latest posts for the topic "Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? /hvaonline/posts/list/38584.html#236647 /hvaonline/posts/list/38584.html#236647 GMT Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

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. ]]>
/hvaonline/posts/list/38584.html#236662 /hvaonline/posts/list/38584.html#236662 GMT
Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

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!]]>
/hvaonline/posts/list/38584.html#236664 /hvaonline/posts/list/38584.html#236664 GMT
Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?
  • 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
    ]]>
    /hvaonline/posts/list/38584.html#236666 /hvaonline/posts/list/38584.html#236666 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? /hvaonline/posts/list/38584.html#236670 /hvaonline/posts/list/38584.html#236670 GMT Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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.]]>
    /hvaonline/posts/list/38584.html#236672 /hvaonline/posts/list/38584.html#236672 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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]]>
    /hvaonline/posts/list/38584.html#236700 /hvaonline/posts/list/38584.html#236700 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? /hvaonline/posts/list/38584.html#236708 /hvaonline/posts/list/38584.html#236708 GMT Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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?]]>
    /hvaonline/posts/list/38584.html#236726 /hvaonline/posts/list/38584.html#236726 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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.]]>
    /hvaonline/posts/list/38584.html#236729 /hvaonline/posts/list/38584.html#236729 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? /hvaonline/posts/list/38584.html#236731 /hvaonline/posts/list/38584.html#236731 GMT Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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ó.]]>
    /hvaonline/posts/list/38584.html#236738 /hvaonline/posts/list/38584.html#236738 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? 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?]]> /hvaonline/posts/list/38584.html#236749 /hvaonline/posts/list/38584.html#236749 GMT Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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.]]>
    /hvaonline/posts/list/38584.html#236750 /hvaonline/posts/list/38584.html#236750 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? /hvaonline/posts/list/38584.html#236773 /hvaonline/posts/list/38584.html#236773 GMT Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống? /hvaonline/posts/list/38584.html#236861 /hvaonline/posts/list/38584.html#236861 GMT Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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.]]>
    /hvaonline/posts/list/38584.html#236863 /hvaonline/posts/list/38584.html#236863 GMT
    Tại sao lại tồn tại cả Symlink và Hard Link trong một hệ thống?

    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.  
    ]]>
    /hvaonline/posts/list/38584.html#236864 /hvaonline/posts/list/38584.html#236864 GMT