hosithai16
Các hệ thống tập tin trên linux
Ext2
Hệ thống Linux có một đặc tính rất quan trọng khác với các hệ thống khác đó là khả năng hỗ trợ nhiều hệ thống file. Điều này khiến cho Linux trở lên rất linh động và có khả năng chung sống với các hệ thống file khác. Hiện tại, Linux đã hỗ trợ 15 hệ thống file : ext, ext2, xia, minix, umdos, msdos, vfat, proc, smb, ncp, iso9660, sysv, hpfs, affs và ufs.
Các phiên bản Linux đầu tiên sử dụng hệ thống file Minix. Hệ thống file này có rất nhiều giới hạn và còn nhiều thiếu sót. Ví dụ như hệ thống này hạn chế tên file dài nhất là 14 ký tự, kích thước tối đa của file chỉ là 64 Mbyte... Năm 1992, một hệ thống file được thiết kế dành riêng cho Linux được đưa ra đó là hệ thống file mở rộng Ext (Extended File system). Hệ thống file này đã giả quyết được rất nhiều vấn đề nhưng vẫn còn một số thiếu sót. Năm 1993, hệ thống file mở rộng thứ cấp Ext2 (Second Extended File system) được bổ xung và trở thành hệ thống file được hầu hết các hệ thống Linux dùng hiện nay.
Cũng như nhiều hệ thống file khác, trong hệ thống file Ext2 dữ liệu của các file cũng được lưu giữ trong các khối dữ liệu (data block). Các khối dữ liệu có cùng kích thước và kích thước này được quy định khi tạo ra hệ thống file (lệnh mke2fs). Mọi file đều được chứa trong một số nguyên lần các khối. Ví dụ, nếu một khối có kích thước tính theo Byte là 512 byte thì một file có kích thước 513 byte cung sẽ được chứa trong hai khối. Tuy điều này làm phung phí không gian lưu trữ nhưng đổi lại thì nó lại giúp cho CPU truy cập tới dữ liệu một cách dễ dàng.
Ext2 là loại filesystem được dùng thay thế cho ext lúc Linux vừa được ra đời. Khi hệ thống bị mất điện hay bị crash (đứng máy vì phần cứng hay lý do gì đó), ext2 sẽ không giữ được những dữ liệu theo kiểu journal mà lại bị rãi rác do đó sau khi bị crash, dữ liệu của ext2 sẽ hay bị mất/không dùng được nữa. Để khắc phục vấn đề này, ext3 đã ra đời và còn đựơc gọi là journaling filesystem vì nó sẽ giữ lại thông tin/dữ liệu theo kiểu journal, tức là nó sẽ ghi lại những thay đổi của tập tin vào nhật ký để khi cần đọc lại nó đã có sẵn trong cuốn nhật ký này, chứ không phải nằm rải rác khắp nơi như các tờ giấy nho nhỏ nếu như người dùng đang dùng ext2.
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.
Ngoài ra Linux còn có các hệ thống tập tin như : Reiserfs; Xfs; Jfs;
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ế, 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.
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.
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.
Các kiểu file trong Linux
Một số kiểu file cần thiết cho hệ điều hành và người dùng, dưới đây giới thiệu lại một số các kiểu file cơ bản.
v File người dùng (user data file): là các file tạo ra do hoạt động của người dùng khi kích hoạt các chương trình ứng dụng tương ứng. Ví dụ như các file thuần văn bản, các file cơ sở dữ liệu hay các file bảng tính.
v File hệ thống (system data file): là các file lưu trữ thông tin của hệ thống như: cấu hình cho khởi động, tài khoản của người dùng, thông tin thiết bị ... thường
được cất trong các tệp dạng văn bản để người dùng có thể can thiệp, sửa đổi
theo ý mình.
v File thực hiện (executable file): là các file chứa mã lệnh hay chỉ thị cho máy tính thực hiện. File thực hiện lưu trữ dưới dạng mã máy mà ta khó có thể tìm hiểu được ý nghĩa của nó, nhưng tồn tại một số công cụ để "hiểu" được các file đó. Khi dùng trình ứng dụng mc (Midnight Commander, chương 8), file thực hiện được bắt đầu bởi dấu (*) và thường có màu xanh lục.
v Thư mục hay còn gọi là file bao hàm (directory): là file bao hàm các file khác và có cấu tạo hoàn toàn tương tự như file thông thường khác nên có thể gọi là file. Trong mc, file bao hàm thường có màu trắng và bắt đầu bằng dấu ngã (~) hoặc dấu chia (/). Ví dụ: /, /home, /bin, /usr, /usr/man, /dev ...
v File thiết bị (device file): là file mô tả thiết bị, dùng như là định danh để chỉ ra thiết bị cần thao tác. Theo quy ước, file thiết bị được lưu trữ trong thư mục /dev. Các file thiết bị hay gặp trong thư mục này là tty (teletype - thiết bị truyền thông), ttyS (teletype serial - thiết bị truyền thông nối tiếp), fd0, fd1, ... (floppy disk- thiết bị ổ đĩa mềm), hda1, hda2, ... hdb1, hdb2, ... (hardisk - thiết bị ổ cứng theo chuẩn IDE; a, b,... đánh số ổ đĩa vật lý; 1, 2, 3... đánh số ổ logic). Trong mc, file thiết bị có màu tím và bắt đầu bằng dấu cộng (+).
v File liên kết (linked file): là những file chứa tham chiếu đến các file khác trong hệ thống tệp tin của Linux. Tham chiếu này cho phép người dùng tìm nhanh tới file thay vì tới vị trí nguyên thủy của nó. Hơn nữa, người ta có thể gắn vào đó các thông tin phụ trợ làm cho file này có tính năng trội hơn so với tính năng nguyên thủy của nó. Ta thấy loại file này giống như khái niệm shortcut trong MS-Windows98.
Không giống một số hệ điều hành khác (như MS-DOS chẳng hạn), Linux quản lý thời gian của tệp tin qua các thông số thời gian truy nhập (accesed time), thời gian kiến tạo created time) và thời gian sửa đổi (modified time).
Hệ thống tập tin của Linux
Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng vạch chéo “/” (root directory). Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều được nhận dạng như các tập tin, kể cả những linh kiện như ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tất cả các tập tin và thư mục đều nằm dưới thư mục gốc, ngay cả những tập tin biểu tượng cho các ổ đĩa cứng.
Các hãng phân phối Linux hầu như thống nhất với nhau về tên các thư mục chuẩn trên Linux. Trong đó thư mục gốc bao giờ cũng là “/“. Bạn chú ý vì dấu “/” vừa là dấu biểu thị thư mục gốc vừa là dấu phân cách tên các thư mục với nhau trong đường dẫn tập tin (Linux không dùng dấu “\” như trong Windows để phân cách tên thư mục). Nếu đường dẫn không có dấu “/” thì chương trình sẽ tìm ở các thư mục mặc định và thư mục hiện tại.
Nằm dưới thư mục gốc (/) có một loạt các thư mục quan trọng của hệ thống tập tin được công nhận ở tất cả các bản phân phối Linux khác nhau. Sau đây là danh sách các thư mục thông thường được nhìn thấy dưới thư mục gốc (/) :
v /bin – chứa các ứng dụng quan trọng (binary applications),
v /boot – các tập tin cấu hình cho quá trình khởi động hệ thống (boot configuration files),
v /dev – chứa các tập tin là chứng nhận cho các thiết bị của hệ thống (device files)
v /etc – chứa các tập tin cấu hình của hệ thống, các tập tin lệnh để khởi động các dịch vụ của hệ thống...
v /home – thư mục này chứa các thư mục cá nhân của những người có quyền truy cập vào hệ thống (local users' home directories),
v /lib – thư mục này lưu các thư viện chia sẻ của hệ thống (system libraries)
v /lost+found – thư mục này được dùng để lưu các tập tin không có thư mục mẹ mà được tìm thấy dưới thư mục gốc (/) sau khi thực hiện lệnh kiểm tra hệ thống tập tin (fsck).
v /media – thư mục này được dùng để tạo ra các tập tin gắn (loaded) tạm thời được hệ thống tạo ra khi một thiết bị lưu động (removable media) được cắm vào như đĩa CDs, máy ảnh kỹ thuật số...
v /mnt – thư mục này được dùng để gắn các hệ thống tập tin tạm thời (mounted filesystems),
v /opt – thư mục dùng dể chứa các phần mềm ứng dụng (optional applications) đã được cài đặt thêm,
v /proc – đây là một thư mục đặc biệt linh động để lưu các thông tin về tình trạng của hệ thống, đặc biệt về các tiến trình (processes) đang hoạt động,
v /root – đây là thư mục nhà của người quản trị hệ thống (root),
v /sbin – thư mục này lưu lại các tập tin thực thi của hệ thống (system binaries)
v /sys – thư mục này lưu các tập tin của hệ thống (system files),
v /tmp – thư mục này lưu lại các tập tin được tạo ra tạm thời (temporary files),
v /usr – thư mục này lưu và chứa những tập tin của các ứng dụng chính đã được cài đặt cho mọi người dùng (all users),
v /var – thư mục này lưu lại tập tin ghi các số liệu biến đổi (variable files) như các tập tin dữ liệu và tập tin bản ghi (logs and databases).
Ngoài ra còn một vài thư mục khác như /media, /mnt là nơi lấy chỗ “mount” (kết nối) cho những thiết bị lưu trữ khác như USB, CDROM,… Thư mục /proc lại chứa những tập tin ứng với những tiến trình “process” đang hoạt động (bạn sẽ thấy cái tương tự trong Task manager của Windows).
Phần mềm trên Linux khi cài đặt không có một thư mục chuẩn nào như thư mục Program Files trên Windows, thay vào đó từng phần của chúng được lưu trong các thư mục khác nhau.
Thư mục quan trọng nhất với người dùng chỉ có thư mục /home/[tên người dùng] mà thôi. Thư mục này chính là nơi bạn sẽ lưu trữ tất cả những file dữ liệu của bạn, những file cấu hình, thiết lập, tùy chỉnh của bạn cũng được lưu ở đây. Thư mục nhà có thể được đại diện bởi kí tự “~”. Ví dụ ~/docs là chỉ thư mục docs nằm trong thư mục home của người dùng đó .
mount
Mount” là một lệnh có nhiệm vụ gán một phân vùng trên đĩa cứng, hoặc một thiết bị lưu trữ nào đó vào một thư mục trên máy. Sau khi mount, nội dung thư mục chính là nội dung có trên đĩa. Vì trên Linux chỉ có thư mục, không có khái niệm ổ đĩa A, B, C, D… như trên Windows, nên khi muốn sử dụng một thiết bị lưu trữ nào đó (như ổ USB chẳng hạn) thì phải kết nối nó vào “một chỗ nào đó” để có thể truy cập nội dung trên thiết bị từ chỗ đó. Và trên Linux thì “cái chỗ đó” tốt nhất là một thư mục.
1. Ổ đĩa và các Partition
v /dev/hda Ổ đĩa cứng IDE đầu tiên (chính)
v /dev/hdb Ổ đĩa cứng IDE thứ hai (thứ cấp)
v /dev/sda Ổ đĩa cứng SCSI đầu tiên
v /dev/sdb Ổ đĩa cứng SCSI thứ hai
v /dev/fd0 Ổ đĩa mềm đầu tiên
v /dev/fd1 Ổ đĩa mềm thứ hai
Bạn đang đọc truyện trên: Truyen2U.Com