Powered by Blogger.

Tìm hiểu File System của Linux

Trong hệ điều hành Linux, những tập tin mà người sử dụng nhìn thấy được đều theo cấu trúc cây thư mục, với root nằm ở trên cùng. Từ điểm này các thư mục và tập tin mới mọc nhánh ra lan dần xuống phía dưới. Thư mục cao nhất, được ký hiệu bằng vạch /, được gọi là root directory (thư mục gốc).

Với người sử dụng bình thường thì cây thư mục này là một dải những tập tin và thư mục nối liền nhau. Trên thực tế, nhiều thư mục trong cây thư mục này nằm ở nhiều vị trí vật lý khác nhau, trên các partition khác nhau, và thậm chí trên các ổ đĩa khác nhau. Khi một trong các partition ấy được kết nối với cấu trúc cây tại một thư mục gọi là mount point (điểm kết nối, điểm lắp ráp), thì mount point này và tất cả các thư mục cấp dưới được gọi là file system. 

Hệ điều hành Linux hình thành từ nhiều thư mục và tập tin khác nhau. Các thư mục có thể lập thành nhiều file system khác nhau, tùy vào cách cài đặt bạn đã chọn. Nhìn chung, đa phần hệ điều hành nằm ở hai file system: root file system (file system gốc) được ký hiệu là /, và một file system khác được kết nối theo /usr (đọc là user).

Khi dùng lệnh cd / để chuyển về thư mục gốc và gọi hiển thị danh sách thư mục, bạn sẽ thấy nhiều thư muc. Những thư mục này tạo thành nội dung của root file system, đồng thời cung cấp mount point cho các file system khác.

Thư mục /bin chứa các chương trình thi hành được, còn gọi là các binaries (nhị phân). Chúng là chương trình hệ thống chủ yếu. Nhiều lệnh của Linux, chẳng hạn như ls, là các chương trình nằm tại các thư mục ấy.

Thư mục /sbin chứa các file nhị phân hệ thống. Hầu hết các tập tin ở đây dùng để quản trị hệ thống. (superuser-bin).

Thư mục /etc rất quan trọng vì chứa nhiều file cấu hình Linux. Chúng giúp cho hệ thống máy bạn có "cá tính". File mật khẩu passwd nằm ở thư mục này, cũng như fstab , danh sách các file system cần nạp vào khi khởi động máy. Ngoài ra thư mục còn chứa các script khởi động cho Linux, danh sách các host kèm địa chỉ IP, cùng với nhiều thông tin cấu hình khác.

Các thư viện dùng chung được chứa trong thư mục /lib. Khi dùng chung thư viện, nhiều chương trình sẽ sử dụng lại cùng loại mã, hơn nữa khi được chứa cùng chỗ, thư viện sẽ giúp giảm thiểu kích cỡ chương trình ở khía cạnh thời gian chạy.

Thư mục /dev chứa các file đặc biệt gọi là device files (file thiết bị, được hệ thống sử dụng để chạy các phần cứng. Ví dụ file /dev/mouse sẽ đọc thông tin từ chuột. Khi tổ chức sử dụng phần cứng theo cách này, Linux làm cho việc tương tác với phần cứng trông giống như một phần mềm. Điều này có nghĩa là trong nhiều trường hợp, bạn có thể dùng cú pháp như khi dùng với directory của mình trên đĩa mềm, ta có thể dùng lệnh: tar -cdf /dev/fd0 tackett .

/dev/fd0 chỉ cho lệnh tar biết phải dùng đĩa mềm. Nhiều thiết bị trong thư mục /dev được tập hợp thành nhóm logical. Bảng 1.1 Liệt kê các thiết bị phổ biến nhất trong thư mục /dev.
Bảng 1.1: Các thiết bị thường dùng chứa trong thư mục 
hư mục /proc là một file system ảo, dùng để đọc thông tin từ bộ nhớ. 

Thư mục /tmp chứa các file tạm mà chương trình tạo ra trong khi chạy. Nếu bạn biết hệ thống máy mình có chương trình tạo ra nhiều file tạm với kích cỡ lớn, bạn nên tạo thư mục /tmp thành một file system riêng thay vì đặt nó vào file system gốc như là một thư mục bình thường. Bởi vì với đà chất chứa các file tạm ngày càng nhiều, file system gốc sẽ nhanh chóng bị đầy.

Thư mục /home là thư mục cơ sở của các home directory cho các user. Quản trị viên thường đặt /home thành file system riêng rẽ nhằm tạo nhiều khoảng trống cho user sử dụng. Ngoài ra nếu hệ thống máy bạn có nhiều user, bạn nên chia thư mục /home thành nhiều file system khác nhau. Ví dụ bạn có thể tạo ra /home/vnexperts cho các thành viên của nhóm điều hành của công ty và /home/admin cho quản trị viên. Mỗi thư mục như thế sẽ là một file system riêng, bên dưới có home directory riêng cho các user tương ứng.

Thư mục /var lưu các file có thể thay đổi kích thước theo thời gian. Nhiều file đăng nhập hệ thống (system log file) thường nằm trong thư mục này. Thư mục /var/spool cùng với các thư mục con dùng để chứa dữ liệu như tin tức hoặc thư tín mới nhận được, hoặc giả đang chờ gửi đi nơi khác.

Thư mục /usr và các thư mục con rất quan trọng cho hệ thống Linux, bởi vì chứa đựng nhiều thư mục trong đó có những chương trình cần thiết nhất cho hệ thống. Những thư mục cấp dưới của /usr chứa các gói phần mềm lớn mà bạn đã cài đặt. Bảng 1.2 giới thiệu một số thư mục cấp dưới của /usr. Ở hầu hết mọi trường hợp thư mục /usr được thiết lập như là một file system riêng rẽ.

Bảng 1.2 Các thư mục thứ cấp quan trọng trong file system /usr.


File hệ thống có thể coi là 1 trong các lớp bên dưới hệ điều hành mà nhiều lúc người sử dụng chúng ta không hề nghĩ tới, trừ trường hợp phải đối mặt với rất nhiều tùy chọn về file system trong Linux. Trong bài viết dưới đây, chúng tôi sẽ giới thiệu với các bạn một số điểm cơ bản để hiểu rõ và nắm bắt kiến thức nhằm lựa chọn file system phù hợp với hệ thống...

File hệ thống có thể coi là 1 trong các lớp bên dưới hệ điều hành mà nhiều lúc người sử dụng chúng ta không hề nghĩ tới, trừ trường hợp phải đối mặt với rất nhiều tùy chọn về file system trong Linux. Trong bài viết dưới đây, chúng tôi sẽ giới thiệu với các bạn một số điểm cơ bản để hiểu rõ và nắm bắt kiến thức nhằm lựa chọn file system phù hợp với hệ thống.

Khả năng hỗ trợ của file hệ thống Linux hoàn toàn khác biệt so với Windows và Mac OS X. Cụ thể, trongWindows hoặc Mac OS X, chúng ta có thể dễ dàng tìm được các ứng dụng hỗ trợ file hệ thống non standard, nhưng cả 2 hệ điều hành trên lại chỉ được cài đặt dựa trên file system nguyên gốc. Nếu nói theo cách khác,Linux có khả năng hỗ trợ nhiều loại file hệ thống nhất hiện nay với công nghệ được tích hợp vào bên trong bộ kernel.

Journaling là gì?
Điểm trước tiên cần tìm hiểu ở đây chính là Journaling trước khi chúng ta nghiên cứu kỹ hơn về vấn đề này. Điều duy nhất các bạn cần nhớ về journaling là tất cả các loại file hệ thống ngày nay đều phải sử dụngjournaling theo nhiều dạng khác nhau trên nền tảng laptop hoặc desktop với Linux.
Journaling chỉ được sử dụng khi ghi dữ liệu lên ổ cứng và đóng vai trò như những chiếc đục lỗ để ghi thông tin vào phân vùng. Đồng thời, nó cũng khắc phục vấn đề xảy ra khi ổ cứng gặp lỗi trong quá trình này, nếu không có journal thì hệ điều hành sẽ không thể biết được file dữ liệu có được ghi đầy đủ tới ổ cứng hay chưa.

Chúng ta có thể hiểu nôm na như sau: trước tiên file sẽ được ghi vào journal, đẩy vào bên trong lớp quản lý dữ liệu, sau đó journal sẽ ghi file đó vào phân vùng ổ cứng khi đã sẵn sàng. Và khi thành công, file sẽ được xóa bỏ khỏi journal, đẩy ngược ra bên ngoài và quá trình hoàn tất. Nếu xảy ra lỗi trong khi thực hiện thì file hệ thống có thể kiểm tra lại journal và tất cả các thao tác chưa được hoàn tất, đồng thời ghi nhớ lại đúng vị trí xảy ra lỗi đó.

Tuy nhiên, nhược điểm của việc sử dụng journaling là phải “đánh đổi” hiệu suất trong việc ghi dữ liệu với tính ổn định. Bên cạnh đó, còn có nhiều công đoạn khác để ghi dữ liệu vào ổ cứng nhưng với journal thì quá trình không thực sự là như vậy. Thay vào đó thì chỉ có file metadata, inode hoặc vị trí của file được ghi lại trước khi thực sự ghi vào ổ cứng.

Các tùy chọn file system:
Như đã đề cập tới ở bên trên, có khá nhiều dạng file hệ thống trong Linux, và mỗi loại sẽ được áp dụng với từng mục đích riêng biệt. Điều này không có nghĩa rằng những file hệ thống này không thể được áp dụng trong trường hợp khác, mà tùy theo nhu cầu và mục đích của người sử dụng, chúng ta sẽ đưa ra phương án phù hợp.

- Ext – Extended file system: là định dạng file hệ thống đầu tiên được thiết kế dành riêng cho Linux. Có tổng cộng 4 phiên bản và mỗi phiên bản lại có 1 tính năng nổi bật. Phiên bản đầu tiên của Ext là phần nâng cấp từ file hệ thống Minix được sử dụng tại thời điểm đó, nhưng lại không đáp ứng được nhiều tính năng phổ biến ngày nay. Và tại thời điểm này, chúng ta không nên sử dụng Ext vì có nhiều hạn chế, không còn được hỗ trợ trên nhiều distribution.

- Ext2 thực chất không phải là file hệ thống journaling, được phát triển để kế thừa các thuộc tính của file hệ thống cũ, đồng thời hỗ trợ dung lượng ổ cứng lên tới 2 TB. Ext2 không sử dụng journal cho nên sẽ có ít dữ liệu được ghi vào ổ đĩa hơn. Do lượng yêu cầu viết và xóa dữ liệu khá thấp, cho nên rất phù hợp với những thiết bị lưu trữ bên ngoài như thẻ nhớ, ổ USB... Còn đối với những ổ SSD ngày nay đã được tăng tuổi thọ vòng đời cũng như khả năng hỗ trợ đa dạng hơn, và chúng hoàn toàn có thể không sử dụng file hệ thống không theo chuẩn journaling.

- Ext3 về căn bản chỉ là Ext2 đi kèm với journaling. Mục đích chính của Ext3 là tương thích ngược với Ext2, và do vậy những ổ đĩa, phân vùng có thể dễ dàng được chuyển đổi giữa 2 chế độ mà không cần phải format như trước kia. Tuy nhiên, vấn đề vẫn còn tồn tại ở đây là những giới hạn của Ext2 vẫn còn nguyên trong Ext3, và ưu điểm của Ext3 là hoạt động nhanh, ổn định hơn rất nhiều. Không thực sự phù hợp để làm file hệ thống dành cho máy chủ bởi vì không hỗ trợ tính năng tạo disk snapshot và file được khôi phục sẽ rất khó để xóa bỏ sau này.

- Ext4: cũng giống như Ext3, lưu giữ được những ưu điểm và tính tương thích ngược với phiên bản trước đó. Như vậy, chúng ta có thể dễ dàng kết hợp các phân vùng định dạng Ext2, Ext3 và Ext4 trong cùng 1 ổ đĩa trongUbuntu để tăng hiệu suất hoạt động. Trên thực tế, Ext4 có thể giảm bớt hiện tượng phân mảnh dữ liệu trong ổ cứng, hỗ trợ các file và phân vùng có dung lượng lớn... Thích hợp với ổ SSD so với Ext3, tốc độ hoạt động nhanh hơn so với 2 phiên bản Ext trước đó, cũng khá phù hợp để hoạt động trên server, nhưng lại không bằngExt3.

- BtrFS – thường phát âm là Butter hoặc Better FS, hiện tại vẫn đang trong giai đoạn phát triển bởi Oracle và có nhiều tính năng giống với ReiserFS. Đại diện cho B-Tree File System, hỗ trợ tính năng pool trên ổ cứng, tạo và lưu trữ snapshot, nén dữ liệu ở mức độ cao, chống phân mảnh dữ liệu nhanh chóng... được thiết kế riêng biệt dành cho các doanh nghiệp có quy mô lớn.

Mặc dù BtrFS không hoạt động ổn định trên 1 số nền tảng distro nhất định, nhưng cuối cùng thì nó vẫn là sự thay thế mặc định của Ext4 và cung cấp chế độ chuyển đổi định dạng nhanh chóng từ Ext3/4. Do vậy, BtrFS rất phù hợp để hoạt động với server dựa vào hiệu suất làm việc cao, khả năng tạo snapshot nhanh chóng cũng như hỗ trợ nhiều tính năng đa dạng khác.

Bên cạnh đó, Oracle cũng đang cố gắng phát triển 1 nền tảng công nghệ nhằm thay thế cho NFS và CIFS gọi làCRFS với nhiều cải tiến đáng kể về mặt hiệu suất và tính năng hỗ trợ. Những cuộc kiểm tra trên thực tế đã chỉ ra BtrFS đứng sau Ext4 khi áp dụng với các thiết bị sử dụng bộ nhớ Flash như SSD, server database...

- ReiserFS: có thể coi là 1 trong những bước tiến lớn nhất của file hệ thống Linux, lần đầu được công bố vào năm 2001 với nhiều tính năng mới mà file hệ thống Ext khó có thể đạt được. Nhưng đến năm 2004, ReiserFSđã được thay thế bởi Reiser4 với nhiều cải tiến hơn nữa. Tuy nhiên, quá trình nghiên cứu, phát triển củaReiser4 khá “chậm chạp” và vẫn không hỗ trợ đầy đủ hệ thống kernel của Linux. Đạt hiệu suất hoạt động rất cao đối với những file nhỏ như file log, phù hợp với database và server email.

- XFS được phát triển bởi Silicon Graphics từ năm 1994 để hoạt động với hệ điều hành riêng biệt của họ, và sau đó chuyển sang Linux trong năm 2001. Khá tương đồng với Ext4 về một số mặt nào đó, chẳng hạn như hạn chế được tình trạng phân mảnh dữ liệu, không cho phép các snapshot tự động kết hợp với nhau, hỗ trợ nhiều file dung lượng lớn, có thể thay đổi kích thước file dữ liệu... nhưng không thể shrink – chia nhỏ phân vùng XFS. Với những đặc điểm như vậy thì XFS khá phù hợp với việc áp dụng vào mô hình server media vì khả năng truyền tải file video rất tốt. Tuy nhiên, nhiều phiên bản distributor yêu cầu phân vùng /boot riêng biệt, hiệu suất hoạt động với các file dung lượng nhỏ không bằng được khi so với các định dạng file hệ thống khác, do vậy sẽ không thể áp dụng với mô hình database, email và một vài loại server có nhiều file log. Nếu dùng với máy tính cá nhân, thì đây cũng không phải là sự lựa chọn tốt nên so sánh với Ext, vì hiệu suất hoạt động không khả thi, ngoài ra cũng không có gì nổi trội về hiệu năng, quản lý so với Ext3/4.

- JFS được IBM phát triển lần đầu tiên năm 1990, sau đó chuyển sang Linux. Điểm mạnh rất dễ nhận thấy củaJFS là tiêu tốn ít tài nguyên hệ thống, đạt hiệu suất hoạt động tốt với nhiều file dung lượng lớn và nhỏ khác nhau. Các phân vùng JFS có thể thay đổi kích thước được nhưng lại không thể shrink như ReiserFS và XFS, tuy nhiên nó lại có tốc độ kiểm tra ổ đĩa nhanh nhất so với các phiên bản Ext.

- ZFS hiện tại vẫn đang trong giai đoạn phát triển bởi Oracle với nhiều tính năng tương tự như Btrfs vàReiserFS. Mới xuất hiện trong những năm gần đây vì có tin đồn rằng Apple sẽ dùng nó làm file hệ thống mặc định. Phụ thuộc vào thỏa thuận điều khoản sử dụng, Sun CDDL thì ZFS không tương thích với hệ thống nhân kernel của Linux, tuy nhiên vẫn hỗ trợ toàn bộ Linux’s Filesystem in Userspace – FUSE để có thể sử dụng được ZFS. Người sử dụng có thể gặp khó khăn khi cài đặt hệ điều hành Linux vì có yêu cầu FUSE và có thể không được hỗ trợ bởi distributor.

- Swap có thể coi thực sự không phải là 1 dạng file hệ thống, bởi vì cơ chế hoạt động khá khác biệt, được sử dụng dưới 1 dạng bộ nhớ ảo và không có cấu trúc file hệ thống cụ thể. Không thể kết hợp và đọc dữ liệu được, nhưng lại chỉ có thể được dùng bởi kernel để ghi thay đổi vào ổ cứng. Thông thường, nó chỉ được sử dụng khi hệ thống thiếu hụt bộ nhớ RAM hoặc chuyển trạng thái của máy tính về chế độ Hibernate.

Trên đây là một số thông tin cơ bản về cấu trúc file hệ thống trong Linux, hy vọng rằng có thể giúp các bạn hiểu rõ hơn về hệ điều hành mã nguồn mở này cũng như kinh nghiệm lựa chọn file system sao cho phù hợp với nhu cầu, mục đích sử dụng. Chúc các bạn thành công!

Với sự hình thành và phát triển của hệ điều hành Linux, giờ đây chúng ta có rất nhiều chọn lựa các hệ thống file (file system) cho từng loại ứng dụng. Bài viết này giới thiệu các hệ thống file tiên tiến được sử dụng trong Linux như Ext3, Reiserfs, XFS, và JFS có độ tin cậy cao và có khả năng ghi nhớ quá trình thao tác trên dữ liệu (journaling).

Thế nào là journaling file system?
Chúng ta hãy tìm hiểu sơ lược về cách làm việc mà các hệ thống Unix nói chung, Linux nói riêng, thao tác trên hệ thống file. Khi khởi động, hệ điều hành luôn luôn dùng một chương trình để kiểm tra tính toàn vẹn của hệ thống file, đó là trình fsck. Nếu nó phát hiện hệ thống file có dấu hiệu bất thường hoặc chưa được unmount do các nguyên nhân như mất điện hoặc hệ thống bị đứng đột ngột trong khi đang chạy, lúc đó fsck sẽ quét lại toàn bộ hệ thống file để cố gắng khôi phục lại dữ liệu. Quá trình kiểm tra và khôi phục dữ liệu (nếu có) nhanh hay chậm còn phụ thuộc vào dung lượng của ổ cứng, và với những hệ thống có dung lượng lưu trữ rất lớn như hiện nay (từ hàng chục đến hàng trăm gigabyte) thì phải mất hàng giờ để quét lại toàn bộ hệ thống ổ cứng. Cách làm này được áp dụng trên các hệ thống file Unix chuẩn ufs (Sun & HP) hoặc ext2 mà Linux đang sử dụng.

Nếu hệ thống file có khả năng ghi lại (log) được các hoạt động mà hệ điều hành đã và đang thao tác trên dữ liệu thì hệ thống xác định được ngay những file bị sự cố mà không cần phải quét lại toàn bộ hệ thống file, giúp quá trình phục hồi dữ liệu trở nên tin cậy và nhanh chóng hơn. Hệ thống file như vậy được gọi là journaling file system.

Hệ thống file Ext3
Được xây dựng dựa trên cơ sở của hệ thống file chuẩn ext2 mà Linux đang sử dụng, ext3 đưa vào thêm chức năng mới vô cùng quan trọng, journaling file system, giúp thao tác dữ liệu an toàn hơn. Ext3 còn sử dụng cơ chế JBD (Journaling Block Device) để bảo vệ thông tin thao tác trên dữ liệu và được đánh giá là tin cậy hơn so với các hệ thống chỉ thực hiện journaling trên chỉ mục dữ liệu (journaling of meta-data only) như Reiserfs, XFS hay JFS. Với cách bảo vệ hai lần như vậy thì hiệu suất ghi dữ liệu có phần nào chậm hơn ext2; nhưng trong một vài trường hợp, nhờ thông tin trong journal log mà đầu từ ổ cứng di chuyển hợp lý hơn, nên tốc độ thao tác dữ liệu nhanh hơn. Đối với những ứng dụng ưu tiên cho độ tin cậy của dữ liệu hơn là tốc độ ghi đơn thuần thì ext3 là lựa chọn thích hợp. Ngoài ra, ext3 còn cho phép cải thiện tốc độ thao tác trên dữ liệu bằng cách thiết lập thông số cho hệ thống chỉ thực hiện journaling đối với thao tác trên dữ liệu (mode: data=writeback và data=ordered).

Với mode data=writeback, quá trình khởi động nhanh, dữ liệu được ghi vào đĩa ngay sau khi đã ghi xong thông tin trong journal log (write back), với mode này đôi khi cũng xảy ra tình trạng dữ liệu bị hư nếu sự cố xảy ra ngay sau khi ghi journal log mà chưa kịp ghi vào đĩa, nhưng bù lại tốc độ thao tác file nhanh hơn trong một vài trường hợp. Với chế độ data=ordered, dữ liệu được ghi lên đĩa trước rồi mới đến journal log, cho phép luôn luôn bảo đảm tính toàn vẹn của dữ liệu trong mọi tình huống và đây cũng chính là chế độ mặc định của ext3. Với chế độ data=journal thì việc bảo vệ được thực hiện trên cả hai: dữ liệu và journal log; thông tin được ghi chi tiết và nhiều hơn giúp cải thiện tốc độ truy cập dữ liệu nhờ tối ưu việc di chuyển của đầu từ, hoạt động rất tốt đối với kiểu dữ liệu là database hoặc dữ liệu dùng chung trên mạng (NFS). Tuy nhiên do phải đọc lại nhiều loại thông tin trên journal log nên thời gian khởi động lại máy hơi chậm hơn so với hai chế độ trên một chút. 

Vì bản chất cấu trúc của ext3 được xây dựng hoàn toàn dựa trên cơ sở của ext2 nên ta có thể chuyển đổi dễ dàng các dữ liệu đang tồn tại trên các hệ thống ext2 sang ext3 mà dữ liệu không hề bị ảnh hưởng và thực hiện tương đối dễ dàng, đơn giản. Với kernel Linux từ 2.4.15 trở lên thì ext3 đã có sẵn mà không cần phải đưa thêm vào (patch) như các phiên bản cũ. Hiện tại hãng Linux RedHat đã đưa sẵn module ext3 vào kernel 2.4.7-10 trong bản RedHat 7.2 của mình. 

Hệ thống file Reiserfs
Ý tưởng của việc xây dựng hệ thống file Reiserfs xuất phát từ yêu cầu tối ưu việc lưu trữ các file nhỏ và tăng tốc độ truy cập đến các file này. Reiserfs sử dụng phương pháp “B * Trees” phát triển lên từ “B + Trees” để tổ chức dữ liệu, theo đó một thư mục có thể chứa đến 100.000 thư mục con và đặc biệt là có thể cấp phát động inode: mỗi đối tượng chứa trong hệ thống file được đánh dấu bằng một chỉ số duy nhất; các hệ thống file khác thực hiện cấp phát inode tĩnh. Ngoài ra, Reiserfs cũng không cấp phát cố định dung lượng theo các khối 1KB hoặc 4KB như các hệ thống file khác thường làm mà sẽ cấp chính xác kích thước khối lưu trữ cần thiết; nhờ vậy tối ưu được dung lượng khi lưu trữ các file có kích thước nhỏ.

Tóm lại, chọn Reiserfs để lưu trữ và truy cập các file nhỏ là tối ưu, với tốc độ truy cập file tăng từ 8-15 lần và dung lượng tiết kiệm được khoảng trên 5% so với hệ thống ext2 với các loại file có kích thước dưới 1 KB. Reiserfs hỗ trợ thực hiện journaling trên chỉ mục dữ liệu (journaling of meta-data only).
Muốn sử dụng Reiserfs trên Linux ta phải đưa các module này vào kernel và dùng các công cụ Reiserfs để định dạng partition. Ví dụ sau đây thực hiện chuyến đổi partition hda6 sang hệ thống file Reiserfs.
/sbin/mkreiserfs /dev/hda6
mount /dev/hda6 /squidcache –t reiserfs 
Thực tế với việc áp dụng hệ thống file Reiserfs trên squid proxy server chạy trên Linux làm cho việc truy cập internet được cải thiện đáng kể do squid truy cập các files nhỏ (*.html, *.gif, *.class...) trong cache với tốc độ cao.

Hệ thống file XFS
Được phát triển bởi công ty Silicon Graphic từ năm 1990 để khắc phục hạn chế của các hệ thống file hiện hành về kích thước và số lượng partition, directory và file. Ngày nay XFS đã sẵn sàng để sử dụng trong Linux với các tính năng vô cùng mạnh mẽ và ứng dụng trong các hệ thống có tính chuyên nghiệp cao. 

XFS là hệ thống file 64 bit, nó có thể quản lý được file có kích thước là 264-1 byte = 9 Exabyte (do sử dụng số nguyên có dấu nên 1 bit dùng để biểu thị dấu), có kèm theo công cụ Volume Manager cho phép quản lý lên tới 128 Volume, mỗi Volume có thể được ghép lên tới 100 partition đĩa cứng vật lý, hỗ trợ chức năng journaling đối với dữ liệu.

Một đặc tính quan trọng của XFS đó là khả năng bảo đảm tốc độ truy cập dữ liệu cho các ứng dụng (Guaranteed Rate I/O), cho phép các ứng dụng duy trì được tốc độ truy xuất dữ liệu trên đĩa, rất quan trọng đối với các hệ thống phân phối dịch vụ video có độ phân giải cao hoặc các ứng dụng xử lý thông tin vệ tinh đòi hỏi duy trì ổn định tốc độ thao tác dữ liệu. Kernel Linux 2.4.17 trở lên hỗ trợ rất tốt đối với hệ thống file này, để sử dụng cần phải patch lại kernel với các module của XFS.

Hệ thống file JFS
Được phát triển bởi IBM, JFS là hệ thống file 64 bit, xây dựng cho các internet file server với đặc điểm thời gian khởi động máy nhanh, dung lượng chứa dữ liệu cao. JFS hỗ trợ journaling cho dữ liệu, dựa trên phương pháp thường được sử dụng trong hệ cơ sở dữ liệu: ghi lại quá trình thao tác thay đổi file (transaction). Trong trường hợp có sự cố xảy ra thì hệ thống chỉ cần cho khôi phục lại transaction trước đó mà không cần phải đọc lại hết journal log, giúp cho quá trình phục hồi được nhanh hơn. JFS hỗ trợ tính năng Logical Volumes cho phép nối các partition vật lý thành các partition logic với dung lượng cao. Ngoài ra nó còn cho phép người dùng tuỳ biến cấp phát các khối từ 512, 1.024, 2.048 và 4.096 byte cho lưu trữ dữ liệu trên đĩa. Để sử dụng JFS trên Linux ta cũng phải patch lại kernel và cài thêm các công cụ JFS để định dạng đĩa.

Nếu như một người dùng đã sử dụng quen trên môi trường Window, thì khi chuyển sang môi trường Linux sẽ phân vân và khó hiểu về cấu trúc file system của nó. Ở bài này mình sẽ phân biệt và hiểu vai trò của các thư mục ở cấp độ cao trong linux. Hình bên dưới cung cấp cho ta cái nhìn tổng quan:
1. / – Root
- Mỗi một file và thư mục điều bắt đầu từ root directory
- Chỉ có user root có quyền trên các thư mục ở cấp bên dưới
- Còn /root là home directory của user root

2. /bin – User Binaries
- Chứa file thực thi dạng binary
- Các lệnh sử dụng thông thường trong linux được sử dụng single-user mode được đặt dưới cấu trúc thư mục này
- Các câu lệnh được sử dụng bởi tất cả các user trong hệ thống sẽ được đặt trong đây. Ví dụ một số lệnh như ps, ls, ping, grep, cp

3. /sbin – System Binaries
- Giống như /bin, bên trong /sbin cũng chứa đựng các file thực thi dạng binary. Các lệnh bên trong /sbin thường được sử dụng bởi system administrator và dùng cho các mục đích là duy trì quản trị hệ thống.
- Một số lệnh trong đây ví dụ như iptables, reboot, ifconfig...

4. /etc – Configuration Files
- Thông thường ở /etc sẽ chứa file cấu hình cho các chương trình hoạt động
- Ở /etc cũng thường chứa các scripts dùng để start, stop, kiểm tra status cho các chương trình.
- Ví dụ /etc/resolv.conf (cấu hình dns-server ), hay /etc/network dùng để quản lý dịch vụ network

5. /dev – Device Files
- Chứa các file device để đại diện các hardware
- Ví dụ /dev/tty1 hay /dev/sda


6. /proc – Process Information
- Chứa đựng thông tin về quá trình xử lý của hệ thống
- Đây là một pseudo filesystem chứa đựng các thông tin về các process đang chạy
- Đây là một virtual filesystem chứa đựng các thông tin tài nguyên hệ thống. Ví dụ: /proc/cpuinfo cung cấp cho ta thông số kỹ thuật của CPU

7. /var – Variable Files
- Chứa đựng các file có sự thay đổi trong quá trình hoạt động của hệ điều hành
- Ví dụ system log sẽ được đặt tại vị trí này
+ System log file /var/log
+ database file /var/lib
+ email /var/mail
+ Các print queue /var/spool
+ lock file /var/lock
+ Các file tạm thời cần cho quá trình reboot /var/tmp

8. /tmp – Temporary Files
- Thư mục này chứa các file được tạo ra bởi hệ thống và user
- Các file bên dưới thư mục này được xóa đi khi hệ thống reboot

9. /usr – User Programs
- Chứa các file binary, library, tài liệu, source-code cho các chương trình
- /usr/bin chứa file binary cho các chương trình của user. Nếu như một user trong quá trình thực thi một lệnh ban đầu sẽ tìm kiếm trong /bin, nếu như không có thì sẽ tiếp tục nhìn vào /usr/bin. Ví dụ một số lệnh như at. awk, cc...
- /usr/sbin chứa các file binary cho system administrator. Nếu như ta không tìm thấy các file system binary bên dưới /sbin thì ta có thể tìm ở trong /usr/sbin. Ví dụ một số lệnh như cron, sshd, useradd, userdel
- /usr/lib chứa các file libraries cho /usr/bin và /usr/sbin
- /usr/local dùng để chứa chương trình của các user, các chương trình này được cài đặt từ source. Ví dụ khi ta install apache từ source thì nó sẽ nằm ở vị trí là /usr/local/apache2

10. /home – Home Directories
- Home directory được chứa đựng thông tin cá nhân của các user
- Ví dụ /home/athena , /home/student

11. /boot – Boot Loader Files
- Chứa đưng boot loader và các file cần cho quá trình boot tùy theo các phiên bản của kernel
- Các file Kernel initrd, vmlinux, grub được đặt bên dưới /boot
- Ví dụ initrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic

12. /lib – System Libraries
- Chứa các file library hỗ trợ cho các file thực binary nằm bên dưới /bin và /sbin 
- Tên của các file library thường là ld* or lib*.so.* . Ví dụ như ld-2.11.1.so, libncurses.so.5.7

13. /opt – Optional add-on Applications
- opt đại diện cho optional
- Chứa đựng các chương trình thêm vào của các hãng khác

14. /mnt – Mount Directory
- Chứa các thư mục dùng để system admin thực hiện quá trình mount

15. /media – Removable Media Devices
- Chứa thư mục dùng để mount cho các thiết bị removable. Ví dụ như CDROM, Floppy...

16. /srv – Service Data
- srv đại diện cho service
- Chứa đựng các dịch vụ cho server, nó liên quan đến dữ liệu. Ví dụ /srv/cvs chứa đựng CVS
    Blogger Comment
    Facebook Comment