Giáo trình An toàn hệ thống thông tin
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình An toàn hệ thống thông tin", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_an_toan_he_thong_thong_tin.pdf
Nội dung text: Giáo trình An toàn hệ thống thông tin
- tr×nh ®é ®µo t¹o cc GIÁO TRÌNH AN TOÀN HỆ THỐNG THÔNG TIN 1
- MỤC LỤC ĐỀ MỤC TRANG 1. LỜI TỰA 3 2. GIỚI THIỆU VỀ MÔ ĐUN MÔN HỌC 5 3. SƠ ĐỒ QUAN HỆ THEO TRÌNH TỰ HỌC NGHỀ 6 4.CÁC HÌNH THỨC HỌC TẬP CHÍNH TRONG MÔ ĐUN/MÔN HỌC 8 5. BÀI 1: PHÂN TÍCH CÁC NGUYÊN NHÂN DẪN ĐẾN MẤT AN TOÀN TRONG HỆ THỐNG THÔNG TIN 9 6.BÀI 2: LƢU TRỮ HỆ THỐNG THÔNG TIN TRÊN CÁC THIẾT BỊ LƢU TRỮ 17 7.BÀI 3: VIRUS TIN HỌC VÀ CÁCH PHÒNG CHỐNG 49 8.BÀI 4: MỘT SỐ BIỆN PHÁP AN TOÀN CHO CÁC HỆ THỐNG MÁY TÍNH 58 9.BÀI 5: MỘT SỐ PHƢƠNG THỨC MÃ HOÁ VÀ GIẢI MÃ DỮ LIỆU 68 10.BÀI 6: XÂY DỰNG KẾ HOẠCH BẢO VỆ HỆ THỐNG THÔNG TIN TRÊN MÁY TÍNH 80 11.TÀI LIỆU THAM KHẢO 100 2
- BÀI 1 Tên bài: PHÂN TÍCH CÁC NGUYÊN NHÂN DẪN ĐẾN MẤT AN TOÀN TRONG HỆ THỐNG THÔNG TIN Giới thiệu : Khi nói đến an toàn thông tin (ATTT), điều đầu tiên ngƣời ta thƣờng nghĩ đến là xây dựng tƣờng lửa (Firewall) hoặc một cái gì đó tƣơng tự để ngăn chặn các cuộc tấn công và xâm nhập bất hợp pháp. Cách tiếp cận nhƣ vậy không hoàn toàn đúng vì bản chất ATTT không đơn thuần chỉ là sử dụng một số công cụ hoặc một vài giải pháp nào đó mà để đảm bảo ATTT cho một hệ thống cần có một cái nhìn tổng quát và khoa học hơn. Mục tiêu thực hiện: - Xác định tất cả những nguyên nhân dẫn đến dữ liệu trên máy tính bị mất - Phân tích những nguyên nhân đƣa đến việc rò rỉ thông tin Nội dung chính: 1.1 Vai trò quan trọng của thông tin trong một đơn vị. Vậy an toàn thông tin là gì? Không thể đảm bảo an toàn 100%, nhƣng ta có thể giảm bớt các rủi ro không mong muốn dƣới tác động từ mọi phía của các lĩnh vực hoạt động kinh tế xã hội . Khi các tổ chức, đơn vị tiến hành đánh giá những rủi ro và cân nhắc kỹ những biện pháp đối phó về ATTT, họ luôn luôn đi đến kết luận: những giải pháp công nghệ (kỹ thuật) đơn lẻ không thể cung cấp đủ sự an toàn. Những sản phẩm Anti-virus, Firewalls và các công cụ khác không thể cung cấp sự an toàn cần thiết cho hầu hết các tổ chức. ATTT là một mắt xích liên kết hai yếu tố: yếu tố công nghệ và yếu tố con ngƣời. 1. Yếu tố công nghệ: bao gồm những sản phẩm nhƣ Firewall, phần mềm phòng chống virus, giải pháp mật mã, sản phẩm mạng, hệ điều hành và những ứng dụng nhƣ: trình duyệt Internet và phần mềm nhận Email từ máy trạm. 2. Yếu tố con ngƣời: Là những ngƣời sử dụng máy tính, những ngƣời làm việc với thông tin và sử dụng máy tính trong công việc của mình. Hai yếu tố trên đƣợc liên kết lại thông qua các chính sách về ATTT. Theo ISO 17799, An Toàn Thông Tin là khả năng bảo vệ đối với môi trƣờng thông tin kinh tế xã hội, đảm bảo cho việc hình thành, sử dụng và phát triển vì lợi ích của mọi công dân, mọi tổ chức và của quốc gia. Thông qua các chính sách về ATTT , lãnh đạo thể hiện ý chí và năng lực của mình trong việc quản lý hệ thống thông tin. ATTT đƣợc xây dựng trên nền tảng một hệ thống các chính sách, quy tắc, quy trình và các giải pháp kỹ thuật nhằm mục đích đảm bảo an toàn tài nguyên thông tin mà tổ chức đó sở hữu cũng nhƣ các tài nguyên thông tin của các đối tác, các khách hàng trong một môi trƣờng thông tin toàn cầu. Nhƣ vậy , với vị trí quan trọng của mình , có thể khẳng định vấn đề ATTT phải bắt đầu từ các chính sách trong đó con ngƣời là mắt xích quan trọng nhất. 3
- Con ngƣời – khâu yếu nhất trong toàn bộ quá trình đảm bảo an toàn thông tin . Hầu nhƣ phần lớn các phƣơng thức tấn công đƣợc hacker sử dụng là khai thác các điểm yếu của hệ thống thông tin và đa phần các điểm yếu đó rất tiếc lại do con ngƣời tạo ra. Việc nhận thức kém và không tuân thủ các chính sách về ATTT là nguyên nhân chính gây ra tình trạng trên. Đơn cử là vấn đề sử dụng mật khẩu đã đƣợc quy định rất rõ trong các chính sách về ATTT song việc tuân thủ các quy định lại không đƣợc thực hiện chặt chẽ. Việc đặt một mật khẩu kém chất lƣợng, không thay đổi mật khẩu định kỳ, quản lý mật khẩu lỏng lẻo là những khâu Phƣơng pháp đánh giá chất lƣợng hệ thống ATTT Có lẽ không một vị lãnh đạo nào dám khẳng định nội bộ công ty là thực sự an toàn và tin cậy. Trong bối cảnh nền kinh tế thị trƣờng nhƣ hiện nay, sự canh tranh diễn ra gay gắt thậm chí giữa các nhân viên trong nội bộ công ty: tranh dành khách hàng , mục đích thăng tiến hoặc các mục đích không lành mạnh khác. Ở một số tổ chức, lợi dụng sự lỏng lẻo trong quản lý về ATTT, nhân viên đã có những hành vi bất lƣơng nhƣ lấy cắp thông tin mật, chiếm đoạt tài khoản khách hàng , ăn cắp tiền thông qua hệ thống tín dụng Theo thống kê, khoảng 70% các rủi ro về ATTT là xuất phát từ nội bộ trong tổ chức. Một trong những câu hỏi luôn đƣợc đặt ra trƣớc các nhà lãnh đạo và các nhà quản trị thông tin là: “Hệ thống thông tin của tổ chức an toàn đến mức độ nào?” Câu hỏi này là mối quan tâm lớn nhất và cũng là vấn đề nhạy cảm nhất trong các khâu quản lý hệ thống thông tin. Trả lời câu hỏi này thật không đơn giản nhƣng không phải là không có câu trả lời. Để giải đáp vấn đề trên, chủ yếu dựa vào hai phƣơng pháp đánh giá ATTT nhƣ sau: + Phƣơng pháp đánh giá theo chất lƣợng ATTT của hệ thống bằng cách cho điểm.Ví dụ: hệ thống đạt 60/100 điểm hoặc 60% + Phƣơng pháp đánh giá theo số lƣợng thiết bị - công nghệ bảo mật. Trong thực tế , phƣơng pháp đánh giá theo chất lƣợng là phƣơng pháp duy nhất để đánh giá mức độ an toàn của các tài nguyên trong hệ thống thông tin. Ở Việt Nam, việc đánh giá ATTT theo chất lƣợng là hoàn toàn mới. Ngƣời ta dễ ngộ nhận việc trang bị một công cụ ATTT nhƣ (Firewall, Anti-virus ) là đảm bảo đƣợc ATTT cho hệ thống. Chất lƣợng ATTT phải đƣợc đánh giá trên toàn bộ các yếu tố đảm bảo tính an toàn cho hệ thống từ tổ chức, con ngƣời, an ninh vật lý, quản lý tài nguyên đến việc sử dụng các công cụ kỹ thuật. Nói cách khác, chất lƣợng ATTT đƣợc đánh giá trên cơ sở thực thi các chính sách về ATTT trong hệ thống. Các chính sách này đƣợc chuẩn hoá và đƣợc công nhận là các tiêu chuẩn về ATTT áp dụng trên phạm vi toàn thế giới. Phƣơng pháp đánh giá theo số lƣợng không đƣợc sử dụng. Tiêu chuẩn đánh giá về chất lƣợng ATTT. Việc đánh giá mức độ ATTT của các tổ chức thƣờng đƣợc tiến hành theo kinh nghiệm và dựa trên các quy định mang tính cảm tính , cục bộ của tổ chức đó mà không tính đến các tiêu chuẩn đã đƣợc thế giới công nhận . Vài năm trƣớc đây, Viện Tiêu chuẩn của Anh (BSI) cùng với một số tổ chức thƣơng mại khác nhƣ Shell, National Westminster Bank, Midland Bank đã nghiên cứu và đề xuất một tiêu chuẩn về ATTT. Đến năm 1995, tiêu chuẩn này đƣợc công nhận là tiêu chuẩn quốc gia về quản lý ATTT - BS7799. Tiêu chuẩn này độc lập với mô hình hoạt động của các công ty. Lãnh đạo công ty, các CSO/CIO đã dựa trên cơ sở các tiêu chuẩn này để thiết lập các chính sách ATTT cho đơn vị mình. Ngay sau khi ra đời, BS7799 đã đƣợc sử dụng ở 27 nƣớc bao gồm các nƣớc thuộc khối liên hiệp Anh cũng 4
- nhƣ một số quốc gia khác nhƣ Thụy Sỹ, Hà Lan Đến năm 2000, Tổ chức tiêu chuẩn thế giới ISO trên cơ sở BS7799 đã xây dựng tiêu chuẩn ISO 17799 và tiêu chuẩn này trở thành tiêu chuẩn quốc tế về quản lý chất lƣợng ATTT (ISO/IEC 17799). Tính đến tháng 2/2005 đã có khoảng hơn 1000 tổ chức đã nhận chứng chỉ ISO 17799 trong đó có Hitachi, Nokia, Những phần cơ bản của ISO 17799: 1. Chính sách chung 2. An ninh nhân sự (Personel Security) 3. Xác định, phân cấp và quản lý tài nguyên (Asset Identification, Classification & Control). 4. An ninh vật lý (Physical Security). 5. An ninh tổ chức (Security Organization). 6. Quản trị IT và mạng (IT operations and network management). 7. Quản lý truy cập và các phƣơng pháp (Access control & methods). 8. Phát triển HT và bảo trì (System development & maintenance). 9. Tính liên tục trong kinh doanh và kế hoạch phục hồi sau sự cố (Bussiness Continuty & Disaster Recovery Planning) 10. Phù hợp hệ thống với các yếu tố về luật pháp, đạo đức (Low, Inestigation and Ethics). Hình 1.1 Những phần cơ bản của ISO 17799 Chính sách về an toàn thông tin đƣợc tổ chức theo mô hình kim tự tháp.Cách tổ chức này giúp cho các nhà lãnh đạo quản lý chất lƣợng an toàn thông tin một cách khoa học và hiệu quả. Trên đỉnh kim tự tháp mô tả các chính sách đƣợc áp dụng trong tổ chức .Tại sao ta phải thiết lập chính sách này ? Phạm vi và đối tƣợng tác động của chính sách? . Không có một chính sách áp dụng chung cho mọi đơn vị. Trong một tổ chức có nhiều bộ phận , từng bộ phận lại có chức năng nhiệm vụ khác nhau, tính chất và cách tổ chức thông tin cũng khác nhau .Bộ phận kinh doanh có mô hình thiết kế hệ thống riêng với cơ sở dữ liệu mang đặc thù kinh doanh , bộ phận sản xuất ,bộ phận nghiên cứu cũng có cấu trúc hệ thống và cơ sở dữ liệu của riêng mình .Trình độ nhận thức về an toàn thông tin cũng rất chênh lệch . Chính vì vậy khi thiết lập các chính sách ,nhà quản lý cần xác định rõ mục đích của chính sách đƣợc thiết lập , đối tƣợng thực thi , phạm vi tác động Lớp thứ hai trên mô hình mô tả các quy tắc ,quy định thực thi các chính sách . Để thực hiện các chính sách ta phải làm gì ? Hệ thống các quy tắc ATTT đƣợc thể hiện trên 10 lĩnh vực lớn bao hàm các quy định từ tổ chức , con ngƣời , an ninh vật lý đến các công cụ kỹ thuật an toàn thông tin .Các quy tắc đƣợc xây dựng trên mô hình IT chuẩn của tổ chức và thể hiện 5
- đƣợc tính đặc thù của tổ chức đó.Thông qua việc thực thi các quy tắc , có thể đánh giá chất lƣợng an toàn thông tin của một tổ chức thông qua kiểm toán (Audit) . Lớp thứ ba là lớp cuối cùng của mô hình . Đây là các quy trình , các giải pháp hỗ trợ thực thi các quy tắc , quy định trên.Nó trả lời cho câu hỏi làm nhƣ thế nào để thực thi các quy định trên ? Các nhà quản trị an toàn thông tin (CSO) cùng các quản trị IT thiết lập các quy trình này và phổ biến đến mọi nhân viên trong tổ chức ,ví dụ “Quy trình thay đổi mật khẩu”,”Quy trình cài đặt các chƣơng trình diệt virut ,chống các chƣơng trình độc hại ” v.v.Các quy trình này có thể liên quan đến nhiều chính sách và đối tƣợng sử dụng khác nhau. Việc áp dụng ISO 17799 đem lại lợi ích gì cho tổ chức? Việc áp dụng các tiêu chuẩn về ATTT theo ISO 17799 làm tăng nhận thức cho đội ngũ cán bộ nhân viên về ATTT. Xây dựng một môi trƣờng an toàn, có khả năng miễn dịch trƣớc các rủi ro, giảm thiểu các nguy cơ do con ngƣời gây ra. Tiêu chuẩn ISO 17799 đề ra những nguyên tắc chung trong quá trình thiết kế , xây dựng hệ thống thông tin một cách khoa học, giúp cho việc quản lý hệ thống trở nên sáng sủa, an toàn, minh bạch hơn. Chúng ta xây dựng một “bức tƣờng ngƣời an toàn” (Secure People Wall) trong tổ chức. Một môi trƣờng thông tin an toàn, trong sạch sẽ có tác động không nhỏ đến việc giảm thiểu chi phí vật chất đầu tƣ cho ATTT vốn dĩ rất tốn kém. Về lâu dài, việc nhận đƣợc chứng chỉ ISO 17799 là một lời khẳng định thuyết phục với các đối tác, các khách hàng về một môi trƣờng thông tin an toàn và trong sạch . Tạo điều kiện thuận lợi cho sự hội nhập một môi trƣờng thông tin lành 1.1 Vấn đề đào tạo nguồn nhân lực Theo IDG vào khoảng năm 2006 sẽ bùng nổ một nghề mới trong lĩnh vực IT – nghề an toàn thông tin.Chức danh CSO (Chief Security Officer) trở nên quen thuộc trong lĩnh vực IT. Cập nhật và nâng cao kiến thức về ATTT và nhận thức về vai trò của nó trong hệ thống IT là một điều rất quan trọng và cấp bách vì xét cho cùng hành động của con ngƣời là yếu tố quyết định . Mặc dù ATTT đƣợc biết đến rộng rãi nhƣng yếu tố con ngƣời thƣờng ít đƣợc các tổ chức quan tâm đến. Đối với những nhà quản trị, họ cần một chính sách an toàn và một chƣơng trình nhận thức cũng nhƣ đánh giá chất lƣợng về ATTT nhƣng tiếc rằng hiện nay chƣa có nhiều giải pháp thực sự quan tâm vào vấn đề làm sao để tăng cƣờng sự vững chắc cho mối liên kết vốn dĩ rất yếu ớt này trong mắt xích ATTT Hiện nay, một số doanh nghiệp tại Việt Nam đã có sự chuyển biến tích cực trong vấn đề nhận thức về ATTT. Họ sẵn sàng đầu tƣ ngân sách đào tạo nguồn nhân lực nhằm tạo nền tảng vững chắc về nhận thức và kiến thức ATTT cho đội ngũ nhân viên của doanh nghiệp. Điển hình là nhƣ: Sở Khoa học và Công nghệ Đồng Nai, Công ty Bảo hiểm Bảo Minh, Fujitsu Vietnam, Ngân hàng Á Châu Bên cạnh đó vẫn còn nhiều doanh nghiệp nhất là các doanh nghiệp vừa và nhỏ vẫn chƣa tiếp cận và hiểu hết tầm quan trọng của việc thiết lập các chính sách về ATTT và quản lý tiêu chuẩn chất lƣợng ATTT theo ISO 17799 thực sự vẫn còn xa lạ và mới mẻ đối với họ. 1.2 Phân tích những nguyên nhân đƣa đến thông tin trên đĩa bị mất 6
- -RAID controller bị hỏng.( Redundant Array of Independent Disks) -Ngƣời dùng vô ý hoặc không lƣu ý thay ổ đĩa mới khi ổ đĩa đó bị hƣ,gây ra sự hƣ hỏng của ổ đĩa khác trong cùng một RAID. -Dữ liệu RAID registry trong bộ nhớ bị hỏng. -Tăng và tụt điện áp đột ngột, thảm họa tự nhiên. -Lỗi do ngƣời sử dụng, vô tình xóa thông tin hoặc lỗi phần mềm của đĩa cứng. -Ngƣời sử dụng reconfigure dung lƣợng đĩa cứng sai. -Virus tấn công hoặc ngƣời sử dụng vô tình định dạng sai một đĩa cứng trong hệ thống RAID. RAID là chữ viết tắt của Redundant Array of Independent Disks. Ban đầu, RAID đƣợc sử dụng nhƣ một giải pháp phòng hộ vì nó cho phép ghi dữ liệu lên nhiều đĩa cứng cùng lúc. Về sau, RAID đã có nhiều biến thể cho phép không chỉ đảm bảo an toàn dữ liệu mà còn giúp gia tăng đáng kể tốc độ truy xuất dữ liệu từ đĩa cứng. Tuy nhiên việc mất dữ liệu từ RAID không phải là chuyện không có, vì ngƣời sử dụng thƣờng cảm thấy chủ quan về RAID nên thiếu sự sao lƣu dữ liệu cần thiết. Các loại RAID: RAID 0: Còn đƣợc gọi là "Striped Volume", nó đƣợc sử dụng để gia tăng sự truy cập dữ liệu. Trong cấu hình RAID 0 này nó có thể hổ trợ từ 2 disks cho đến 32 physical disks, dữ liệu đƣợc chia đều ra trên các disks, và nó làm việc nhƣ là một logical khối (Volume). Mặc dù nó đƣợc gọi là RAID (Redundancy Array of Inexpesive Disk), nhƣng thật sự trong cấu hình này nó không có "Redundancy". Với cấu hình RAID này, nếu một trong hai disk của khối RAID này rớt thì sự truy cập dử liệu vào khối này sẽ bị mất hết. RAID 1: Cấu hình RAID này còn đƣợc gọi là cấu hình "Khối Phản Chiếu" (Mirrored Volume), trong cấu hình này dữ liệu đƣợc mirrored giữa hai physical disks cho mục đích redundancy. Với RAID 1 tất cả những dữ liệu đƣợc viết vô volume thứ nhất trong khối mirrored thì nó sẽ đƣợc viết vô volume thứ hai trong khối này bởi fault tolerant driver ftdisk.sys. Dữ liệu vì vậy đƣợc đảm bảo an toàn hơn Raid 0. RAID 1+0: Là sự kết hợp của Raid 0 và Raid 1 với sự hiện diện của Fault Tolerance đƣa ra một hệ thống hoàn hảo có ƣu điểm của cả hai loại Raid,sự nhanh nhạy của Raid 0 và sự an toàn của Raid 1.Tuy nhiên chi phí cho một hệ thống này khá đắt vì phải cần ít nhất 4 đĩa cứng để có thể thiết lập. RAID 5: RAID 5 thƣờng đƣợc biết nhƣ là "Stripe set with parity". Trong cấu hình RAID này, nó sử dụng ít nhất là 3 và nhiều nhất là 32 physical disks, không chỉ riêng dữ liệu đƣợc phân phối đều trên các disk mà những thông tin liên kết cũng đƣợc phân phối trên các disks, để chắc chắn rằng dử liệu sẽ đƣợc cấu thành lại nếu một trong những disk độc lập bị rớt. Nói đúng hơn là nếu bất kì disk nào trong khối này bị rớt thì bạn có thể thay đổi một disk mới và nó sẽ tự động cấu hình lại (Rebuild) tất cả những dử liệu đã bị mất. Các loại RAID khác: Ngoài các loại đã đƣợc đề cập ở trên, bạn còn có thể bắt gặp nhiều loại RAID khác nhƣng chúng không đƣợc sử dụng rộng rãi mà chỉ giới hạn trong các hệ thống máy tính phục vụ mục đích riêng, có thể kể nhƣ: Level 2 (Error-Correcting Coding), Level 3 (Bit-Interleaved Parity), Level 4 (Dedicated Parity Drive), Level 6 (Independent Data Disks with Double Parity), Level 10 (Stripe of Mirrors, ngƣợc lại với RAID 0+1), Level 7 (thƣơng hiệu của tập đoàn Storage Computer, cho phép thêm bộ đệm cho RAID 3 và 4), RAID S (phát minh của tập đoàn EMC và đƣợc sử dụng trong các hệ thống lƣu trữ Symmetrix của họ). Bên cạnh đó còn một số biến thể khác, ví dụ nhƣ Intel Matrix Storage cho phép chạy kiểu RAID 0+1 với chỉ 2 ổ cứng hoặc RAID 1.5 của DFI trên các hệ BMC 865, 875. Chúng tuy có nhiều điểm khác biệt nhƣng đa phần đều là bản cải tiến của các phƣơng thức RAID truyền thống. 1.3 Phân tích những nguyên nhân đƣa đến rò rỉ thông tin trên máy tính 7
- Rò rỉ thông tin trong doanh nghiệp qua thẻ nhớ: Thông thƣờng, mọi ngƣời có thể dùng những thiết bị kiểu này tự do trong giờ làm việc mà không cần sự cho phép của cấp trên. Thẻ nhớ đƣợc nhân viên mang đi khắp phòng và cắm vào cổng USB để sao chép bài hát có sẵn trong máy tính của ngƣời khác. Tuy nhiên, sự lỏng lẻo này sẽ tiếp tay cho bất cứ ai cũng có thể lƣu toàn bộ thông tin trên máy tính nào đó vào trong thẻ nhớ dung lƣợng lớn một cách có chủ ý hết sức nhanh chóng. Rõ ràng, trong khi nhiều hãng đã tiêu tốn cả núi tiền để bảo vệ mình thoát khỏi nguy cơ từ virus, spyware, spam , thì họ lại quên lời cảnh báo muôn thuở của các chuyên gia bảo mật rằng hiểm họa lớn nhất bao giờ cũng nằm chính bên trong mỗi công ty. Một số hãng đã thực hiện nhiều biện pháp để ngăn cản việc sao chép dữ liệu từ máy tính vào thẻ nhớ và máy nghe nhạc, nhƣng cấm dùng những thiết bị này là vô lý và sẽ không thể thực hiện đƣợc trên thực tế. Do đó, các công ty cần trang bị những công cụ, ứng dụng tinh vi có thể ghi lại hoạt động của ngƣời trong mạng nội bộ để tránh thất thoát dữ liệu, rò rỉ thông tin hoặc nhiễm virus Rò rỉ thông tin trong doanh nghiệp qua máy tính xách tay: Trong nhiều trƣờng hợp, nhân viên đã mang thông tin của công ty ra khỏi văn phòng bằng chiếc laptop. Tuy nhiên, họ không bảo vệ sự an toàn cho chúng và tỏ ra ngại ngần khi dùng các cơ chế mã hóa nhƣ cài password cho máy và các tập tin. Alan Paller, Giám đốc Học viện SANS chuyên nghiên cứu vấn đề bảo mật máy tính, giải thích lý do là nếu họ quên mật khẩu thì sẽ không mở đƣợc tập tin và các thao tác này có vẻ làm chậm công việc của họ. Điều này đã khiến các nhà sản xuất máy tính lƣu tâm và bắt đầu tích hợp cơ chế mã hóa vào sản phẩm. Ví dụ nhƣ hệ điều hành Windows Vista của Microsoft sẽ giúp ngƣời sử dụng dễ dàng mã hóa dữ liệu của mình hơn. Các công ty có lƣợng lớn nhân viên di động cũng bắt đầu quan tâm đến điều này. Ví dụ nhƣ hãng tƣ vấn tài chính Ernst & Young với 30.000 máy tính xách tay phục vụ cho công ty đang mã hóa tất cả nội dung trên máy sau vụ thông tin về 243.000 khách hàng của họ chứa trong một chiếc laptop bị đánh cắp, bao gồm tên, địa chỉ, thông tin thẻ tín dụng. 1.4 Một số biện pháp khắc phục. Các chuyên gia đưa ra lời khuyên với các bước sau: 1. Phải kiểm soát dữ liệu Chắc chắn bạn không thể nào kiểm soát đƣợc thông tin nhạy cảm hay thông tin bản quyền trên mạng nếu ngay cả vị trí của chúng nằm ở đâu bạn cũng không biết. Dữ liệu nhạy cảm của một tổ chức thƣờng đƣợc phân phối rộng rãi qua mạng nội bộ. Dữ liệu quan trọng thƣờng không chỉ nằm trong cơ sở dữ liệu (CSDL) mà có khi cả trong thƣ điện tử, máy tính cá nhân và đôi khi đóng vai trò nhƣ kiểu đối tƣợng dữ liệu trong cổng Web. Thông tin nhạy cảm cũng có nhiều kiểu khác nhau, nhƣ mã số thẻ tín dụng, mã số bảo mật xã hội (CMT, thẻ sinh viên ). Các bí mật thƣơng mại có thể đƣợc tìm thấy trong nhiều loại file, văn bản khác nhau theo kiểu thông tin liên hệ khách hàng, hợp đồng, chi tiết kỹ thuật phát triển sản phẩm. Triển khai quy định kiểm soát cho tất cả các loại dữ liệu thƣờng không mang lại hiệu quả và không thực tế. Thay vào đó, hãy phân loại từng lớp dữ liệu và chọn ra quy định kiểm soát phù hợp nhất cho mỗi loại. Bạn cũng có thể sử dụng một số công cụ rà soát mạng tự động và xác định vị trí dữ liệu nhạy cảm. Nhiều hãng cung cấp các loại công cụ này nhƣ Reconnex, Tablus, Websense. Số lƣợng sản phẩm của các hãng ngày càng phong phú. Nhiều trong số đó có thể phân tách dữ liệu thành nhiều loại khác nhau, dựa trên quy định do công ty đặt ra. 2. Giám sát nội dung di động Khi các công ty sử dụng Website trong giao dịch thƣơng mại và liên kết với nhiều mạng 8
- thuộc về đối tác, nhà cung cấp hay khách hàng thì vấn đề sống còn là phải theo dõi đƣợc cái gì đang diễn ra, đang trôi nổi qua các mạng. Giám sát nội dung là “phần cơ sở” cốt lõi trong chiến lƣợc bảo vệ dữ liệu của nhiều công ty. Với quá nhiều “điểm ra” mạng cho dữ liệu, điều quan trọng nhất là phải giám sát đƣợc lƣu lƣợng mạng. Tất cả các hãng sản xuất nhƣ Vericept Corp., Vontu Inc., Oakley Networks Inc., Reconnex và Websense đều bán một loạt sản phẩm có chức năng kiểm tra, rà soát e-mail, trình tin nhắn tức thời (Instant Messaging), hệ thống chia sẻ file peer-to-peer, quá trình post Web và cả các website FTP nhằm phát hiện và tìm kiếm hoạt động xâm phạm dữ liệu hay vi phạm quy tắc đặt ra trong công ty. Các công cụ này đƣợc đặt gần cổng vào mạng và đƣợc thiết kế để đƣa ra cảnh báo khi phát hiện gói dữ liệu đáng ngờ. Nhiều sản phẩm có thể đƣợc dùng để thúc ép các hoạt động nhƣ loại bỏ hay mã hoá dữ liệu khi dữ liệu đƣợc truyền ra ngoài. Ví dụ, một trong số đó là các công cụ lọc nội dung, cho phép bạn thấy đƣợc tất cả những gì đang đến hoặc đang ra ngoài mạng. Nhƣ Bowers của công ty hàng đầu Wyeth nhận xét: “Chúng tôi giám sát được tất cả các cổng và tất cả giao thức truyền tải nội dung” khi hãng này triển khai công cụ lọc nội dung. 3. Hãy để mắt đến cơ sở dữ liệu có chứa những thông tin quý báu của công ty Đừng dừng lại ở việc biết ai đang truy cập cơ sở dữ liệu. Bạn còn cần phải phải biết khi nào, ở đâu, nhƣ thế nào và tại sao họ lại thực hiện truy cập này. Nhiều công cụ hỗ trợ đƣợc xây dựng, cho phép các công ty giám sát truy cập hay các hoạt động trên cơ sở dữ liệu. Bạn có thể dùng sản phẩm của Imperva Inc., Guardium Inc., Application Security Inc. và Lumigent Technologies Inc. Chúng đƣợc thiết kế nhằm mục đích giúp bạn biết ngƣời dùng hay admin nào đang làm việc trên cơ sở dữ liệu với đặc quyền truy cập, hay chỉnh sửa, copy, xoá, download số lƣợng lớn tập hợp các file, hoặc đƣa ra các cảnh báo khi ai đó cố gắng thực hiện một trong các hoạt động trên. Các sản phẩm này cũng cung cấp dấu vết kiểm tra khá rõ ràng theo dõi khi có ngƣời vi phạm quy định của doanh nghiệp. Mã hoá dữ liệu nhạy cảm trong cơ sở dữ liệu là một phƣơng pháp khác đáng xem xét. 4. Giới hạn đặc quyền ngƣời dùng Hầu hết các công ty đều cung cấp nhiều đặc quyền cho ngƣời dùng hơn so với cần thiết. Đó là nhận định của Amichai Shulman, giám đốc công nghệ của Imperva. Giám sát truy cập dữ liệu cực kỳ quan trọng của ngƣời dùng và theo dõi truy cập không xác định với dữ liệu ở mức nguy hiểm cao là những bƣớc không thể thiếu. Tạo quy định truy cập nhằm giới hạn đặc quyền mạng của ngƣời dùng một cách chặt chẽ. Chỉ cho phép truy cập lớp dữ liệu tƣơng ứng cần thiết cho công việc của từng kiểu ngƣời dùng, đồng thời thiết lập các điều khiển nhằm bắt buộc nhân viên trong công ty phải tuân thủ quy định nội bộ đã xây dựng. Ví dụ, đƣa ra cảnh báo khi ai đó vốn bình thƣờng chỉ làm việc với 10 tập tài liệu mỗi ngày, đột nhiên bắt đầu truy cập số với lƣợng lớn hơn. Việc đƣa ra quyết định điều khiển truy cập cho thành viên nội bộ và ngƣời ngoài là khá đơn giản, Matt Kesner - giám đốc công nghệ của Fenwick & West LLC, hãng luật có trụ sở tại Califoocnia (Mỹ) khẳng định. Nhƣng đôi khi ngƣời bên ngoài lại cần truy cập hợp pháp dữ liệu của doanh nghiệp với số lƣợng ngang bằng hoặc thậm chí lớn hơn nhu cầu của nhân viên nội bộ. Ví dụ, các mạng Extranet client của Fenwick & West đang đƣợc sử dụng thƣờng xuyên bởi khách hàng hợp tác với nhân viên uỷ quyền của hãng. Đôi khi, ngƣời dùng bên 9
- ngoài hứng thú với dữ liệu của doanh nghiệp hơn nhiều so với ngƣời trong nội bộ công ty. 5. Quan tâm tới các điểm cuối Sự phát triển nhanh chóng của thị trƣờng thiết bị di động nhƣ laptop, các máy xách tay khác, thẻ nhớ USB hay máy nghe nhạc iPod ngày càng tạo điều kiện cho những kẻ có ý đồ xấu trong nội bộ công ty ăn cắp dữ liệu dễ dàng hơn. Các công ty cần phải phát triển hoạt động điều khiển và giám sát tập trung hoá. Trong đó, thiết bị phải đƣợc gắn vào mạng và hệ thống doanh nghiệp, quy định rõ dữ liệu nào đƣợc download, upload hay lƣu trữ tại đâu. Thực hiện đƣợc các công việc này là cả một thách thức. Nhƣng bạn không cần quá lo lắng, vì một số sản phẩm của các hãng nhƣ Code Green Networks Inc., ControlGuard Inc. và SecureWave SA sẽ giúp bạn dễ dàng hơn khi tiến hành các hoạt động mong muốn. “Trước đây, có rất ít công ty đặt các kiểm soát hiệu quả vào đúng nơi cần thiết để cho phép họ giám sát hệ thống nội bộ một cách chặt chẽ và theo dõi được quá trình di chuyển hay truyền vận của dữ liệu”, Alex Bakman - giám đốc điều hành của Ecora Software Corp khẳng định. Điều đó có nghĩa là hoạt động phá hoại đã từng diễn ra “không kèn không trống” trong suốt thời gian dài. 6. Tập trung hoá dữ liệu bản quyền trí tuệ Đối với một công ty lớn, việc bảo vệ bản quyền trí tuệ rải rác trên nhiều hệ thống là điều không thể. Do đó, lƣu trữ các dữ liệu này trong một hệ thông thƣ viện tài nguyên tập trung hoá bất cứ khi nào có thể là biện pháp an toàn và tiện lợi trong trong bảo mật cũng nhƣ chia sẻ thông tin. “Thông thường, người ta đặt tất cả trứng vào trong một rổ”, Ira Winkler - chuyên viên tƣ vấn bảo mật tự do và phụ trách chuyên mục Computerworld.com ví von. “Nhưng trong trường hợp này, bảo vệ một hệ thống sẽ dễ dàng hơn là bảo vệ vô số hệ thống con nằm rải rác của nó”. Câu hỏi và bài tập: 1. Trình bày các phƣơng pháp đánh giá chất lƣợng hệ thống ATTT. 2. Phân tích những nguyên nhân đƣa đến thông tin trên đĩa bị mất ? Nêu các biện pháp khác phục. 3. Phân tích những nguyên nhân đƣa đến rò rỉ thông tin trên máy tính? Trình bày các biện pháp khắc phục. 10
- BÀI 2 Tên bài : LƢU TRỮ HỆ THỐNG THÔNG TIN TRÊN CÁC THIẾT BỊ LƢU TRỮ Mã bài : ITPRG03-19.2 Giới thiệu : Lƣu trữ dữ liệu an toàn và khoa học là việc rất quan trọng trong lĩnh vực công nghệ thông tin. Bài học cung cấp các kiến thức cơ sở về hình thức, cách thức và thiết bị lƣu trữ, phục hồi bảo vể hệ thống dữ liệu. Mục tiêu thực hiện: - Sử dụng đƣợc các thiết bị lƣu trữ thông dụng - Sao lƣu dữ liệu dƣới nhiều hình thức. - Phục hồi dữ liệu trong một số trƣờng hợp - Sử dụng đƣợc một số phần mềm tiện ích và phần mềm công cụ để phục hồi, bảo vệ cho hệ thống thông tin. Nội dung chính: I. Cấu trúc của thƣ mục và tập tin trên máy đơn và trên hệ thống mạng máy tính. 1. Tổ chức đĩa Tổ chức đĩa là một trong những đặc trƣng cơ bản của hệ điều hành. Đĩa mới mua hoặc đĩa đã sử dụng với một điều hành khác không tƣơng thích với hệ điều hành đang sử dụng thì không thể dùng đƣợc. Lúc này ta phải tiến hành tổ chức đĩa cho có cấu trúc mà hệ điều hành hiện đang dùng hiểu đƣợc. Tổ chức đĩa cho phép quản lý đƣợc các dữ liệu đƣợc ghi trên đĩa nhƣ các tập tin, quản lý vùng nhớ, đọc/ghi thông tin, Việc tổ chức đĩa thƣờng đƣợc tiến hành bằng chƣơng trình định dạng đĩa: FORMAT. Khi gọi chƣơng trình này bằng lệnh FORMAT chƣơng trình sẽ tự động thi hành các bƣớc cần thiết để tổ chức đĩa (định dạng đĩa). Chƣơng trình này tổ chức đĩa nhƣ sau : - Tạo ra các rãnh (track) trên bề mặt đĩa, chia số sector trên 1 rãnh, định số Byte trên mỗi sector. - Sao chép tạo tập tin mồi (boot record) - Tạo bảng cấp phát đĩa cho tập tin: bảng FAT - Tạo thƣ mục gốc (root directory) - Xác định vùng ghi tên, vùng lƣu trữ dữ liệu. Đĩa trƣớc khi sử dụng phải đƣợc định dạng (format) mới có thể lƣu trữ dữ liệu lên đƣợc. Mỗi hệ điều hành có cách tổ chức đĩa riêng. HĐH Windows 98 tổ chức cấu trúc đĩa theo dạng FAT (file allocation table). Khi định dạng đĩa, HĐH sẽ chia mỗi mặt đĩa ra thành những đƣờng tròn đồng tâm (track) đƣợc đánh số từ ngoài vào trong và bắt đầu từ 0. 11
- Mỗi track đƣợc chia thành nhiều đoạn nhỏ gọi là cung từ (sector), các cung từ đƣợc đánh số bắt đầu từ 1. Mỗi cung từ thƣờng chứa 512 bytes. Dữ liệu sẽ đƣợc lƣu trên từng cung từ. Sector Track Hình 1 .2: cách phân chia mỗi mặt đĩa khi đƣợc định dạng. 2. Thƣ mục và tập tin 2.1 Tập tin: a) Tập tin (file) :Tập tin là hình thức, đơn vị lƣu trữ thông tin trên đĩa của hệ điều hành. Nội dung của tập tin là thông tin cần lƣu trữ. Tập tin (viết tắt cho tập thông tin; còn đƣợc gọi là tệp, tệp tin, file) là một tập hợp của thông tin đƣợc đặt tên. Thông thƣờng thì các tập tin này chứa trong các thiết bị lƣu trữ nhƣ đĩa cứng, đĩa mềm, CD, DVD cũng nhƣ là các loại chip điện tử dùng kĩ thuật flash có thể thấy trong các ổ nhớ có giao diện USB. Nói cách khác, tập tin là một dãy các bit có tên và đƣợc chứa trong các thiết bị lƣu trữ dữ liệu kỹ thuật số. b) Đặc điểm . Một tập tin luôn luôn kết thúc bằng 1 ký tự đặc biệt (hay dấu kết thúc) có mã ASCII là 255 ở hệ thập phân. Ký tự này thƣờng đƣợc ký hiệu là EOF ( End Of File). . Một tập tin có thể không chứa một thông tin nào ngoại trừ tên và dấu kết thúc. Tuy nhiên, điều này không hề mâu thuẫn với định nghĩa vì bản thân tên của tập tin cũng đã chứa thông tin. Những tập tin này gọi là tập tin rỗng hay tập tin trống. . Độ dài (kích thƣớc) của tập tin có thể chỉ phụ thuộc vào khả năng của máy tính, khả năng của hệ điều hành cũng nhƣ vào phần mềm ứng dụng dùng nó. Đơn vị nhỏ nhất dùng để đo độ dài của tập tin là byte. Độ dài của tập tin không bao gồm độ dài của tên tập tin và dấu kết thúc. c) Thuộc tính Những đặc tính và giới hạn của tập tin gọi là thuộc tính của tập tin. Các loại thuộc tính Tùy theo hệ thống tập tin mà các thuộc tính này có thể khác nhau. Thí dụ các thuộc tính trên hệ thống tập tin FAT bao gồm: Archive: lƣu trữ. Trên các hệ điều hành DOS thì thuộc tính này đƣợc định khi mỗi khi tập tin bị thay đổi, và bị xóa khi thực hiện lệnh backup để sao lƣu dữ liệu. Hidden: ẩn. Khi một tập tin có thuộc tính này thì các chƣơng trình liệt kê các tập tin theo mặc định sẽ bỏ qua, không liệt kê tập tin này. Ngƣời sử dụng vẫn có thể làm việc trên tập tin này nhƣ bình thƣờng. Read-only: chỉ đọc. Khi một tập tin có thuộc tính này thì các chƣơng trình xử lý tập tin theo mặc định sẽ không cho phép xóa, di chuyển tập tin hoặc thay đổi nội dung 12
- tập tin. Còn các thao tác khác nhƣ đổi tên tập tin, đọc nội dung tập tin vẫn đƣợc cho phép. System: thuộc về hệ thống. Một tập tin có thuộc tính này sẽ chịu các hạn chế bao gồm các hạn chế của thuộc tính Hidden và các hạn chế của thuộc tính Read-only, nghĩa là không bị liệt kê, không thể xóa, di chuyển, thay đổi nội dung. Thuộc tính này chủ yếu dùng cho các tập tin quan trọng của hệ điều hành. Sub-directory (hay directory): thƣ mục con. Những tập tin có thuộc tính này đƣợc xử lý nhƣ là thƣ mục. Thƣ mục là tập tin ở dạng đặc biệt, nội dung không chứa dữ liệu thông thƣờng mà chứa các tập tin và các thƣ mục khác. Ngoài ra, còn rất nhiều thuộc tính khác của các tập tin mà tùy theo hệ điều hành sẽ đƣợc định nghĩa thêm vào. Thí dụ đối với hệ điều hành Linux các tập tin có thể có thêm các thuộc tính nhƣ các quyền sử dụng tập tin, đặc điểm của tập tin, và thông tin về các loại tập tin nhƣ là các loại tập tin liên kết mềm, các socket, các pipe Lƣu ý: Các thuộc tính của một tập tin thƣờng không ảnh hƣởng đến nội dung thông tin của tập tin đó nhƣng lại ảnh hƣởng rất nhiều đến chức năng và việc xử dụng tập tin. Thí dụ các tập tin không có thuộc tính cho phép thi hành thì không thể xem là một phần mềm khả thi đƣợc mặc dù nội dung của nó có thể chỉ chứa các chỉ thị máy tính. Cách để làm tập tin trở nên khả thi là thay đổi thuộc tính khả thi của nó hay là phải thay đổi phần đuôi của tên tập tin (nhƣ là trƣờng hợp của hệ điều hành Windows - DOS) d) Định dạng Cấu trúc của một tập tin định nghĩa cách thức mà tập tin đó đƣợc chứa, đƣợc thực thi, và thể hiện trên các thiết bị (nhƣ màn hình hay máy in) gọi là định dạng của tập tin. Định dạng này có thể đơn giản hay phức tạp. Định dạng của tập tin phụ thuộc vào nhiều yếu tố trong đó quan trọng nhất bao gồm: Hệ điều hành khác nhau và kiến trúc máy tính khác nhau có thể đòi hỏi các định dạng cho tập tin một cách khác nhau. Thí dụ: Trên cùng một kiến trúc Intel, tập tin văn bản dạng đơn giản nhất tạo nên bởi hệ điều hành Linux cũng có sự khác nhau với tập tin văn bản của Windows (hay DOS). Dĩ nhiên, các tập tin văn bản này lại càng không thể đọc đƣợc trên các máy dùng hệ điều hành Mac OS (chúng khác nhau hoàn toàn về mặt kiến trúc máy tính) nếu không có các tiện ích đặc biệt để chuyển đổi định dạng. Tập tin dùng cho các mục tiêu khác nhau cũng sẽ có các định dạng khác nhau. Ngoài sự ràng buộc về định dạng của hệ điều hành, các tập tin dùng trong các ứng dụng hay các phần mềm khác nhau cũng sẽ khác nhau và sự khác nhau này tùy thuộc vào kiến trúc của các ứng dụng xử dụng các tập tin đó. Thí dụ dễ hiểu nhất là định dạng của mật tập tin văn bản phải khác với định dạng của một tập tin hình ảnh hay tập tin âm thanh. Các tập tin dùng cho cùng một mục tiêu cũng có thể có định dạng khác nhau tuỳ theo nhà sản xuất nào đã thiết kế ra nó. Thí dụ: Trong các tập tin hình vẽ đồ họa thì các tập tin kiểu Bitmap (các tệp hình có đuôi là .bmp) có định dạng hoàn toàn khác với các tập tin kiểu Tagged Image File Format (đuôi của lọai tập tin này là .tif) và cũng khác với tập tin kiểu Joint Photographic Experts Group (với các đuôi có dạng .jpg hay .jpeg). e) Tên Tùy theo hệ điều hành mà có thể có các qui ƣớc về tên tập tin. Độ dài của tên tập tin tùy thuộc vào hệ thống tập tin. Tùy thuộc vào hệ thống tập tin và hệ điều hành mà sẽ có một số ký tự không đƣợc dùng cho tên tập tin. Thí dụ: Trên hệ điều hành Microsoft Windows, không đƣợc dùng các ký tự sau trong tên tập tin: \ / : * ? " | Theo truyền thống cũ của hệ thống DOS và Windows, tên tập tin thƣờng bao gồm hai phần: phần tên và phần mở rộng (còn gọi là phần đuôi). Tuy nhiên, tên của một tập tin không nhất thiết phải có phần mở rộng này. 13
- Thí dụ về cấu trúc bit của tập tin ASCII Hình 1.3 : cấu trúc bit của tập tin ASCII Trong hình trên là hai tập tin văn bản dạng đơn giản dùng mã ASCII. Tập tin "hoso.txt" là tập tin soạn ra bằng lệnh edit của hệ điều hành Windows. Tập tin thứ nhì, "hoso2.txt", lại đƣợc soạn thảo bằng lệnh vi trong hệ điều hành Linux. Hãy lƣu ý qui ƣớc xuống hàng của tập tin trong Windows sẽ bao gồm hai byte: dấu CR (cariage return) có giá trị ASCII là 0x0D và dấu LF (line feed) có giá trị 0x0A; trong khi đó, Linux chỉ cần dấu LF là đủ. Điều này cho thấy sự khác nhau về định dạng. 2.2 Thƣ mục Thƣ mục (Directory, FOLDER) : Khi số lƣợng tập tin trên đĩa nhiều đến hàng trăm, hàng ngàn tập tin thì việc tìm lại một hay một nhóm các tập tin nào đó sẽ khó khăn. Để dễ dàng tìm kiếm, cần tạo các thƣ mục để chứa các tập tin cùng chủ đề, chức năng vào trong một thƣ mục. Thƣ mục là hình thức, đơn vị quản lý tập tin của hệ điều hành. Nội dung của thƣ mục là các tập tin mà nó quản lý. Các thƣ mục trên đĩa đƣợc tổ chức theo dạng phân cấp, các thƣ mục xuất phát từ một thƣ mục chính trên đĩa gọi là thƣ mục gốc (root directory). Vì cách tổ chức thƣ mục trên đĩa giống nhƣ một cái cây nên sơ đồ thƣ mục trên đĩa gọi là cây thƣ mục (directory tree). Thƣ mục gốc đƣợc ký hiệu \ do chƣơng trình định dạng đĩa tạo ra. Các thƣ mục đƣợc tạo trong quá trình làm việc gọi là các thƣ mục con (subdirectory). Trên đĩa không có sẵn cây thƣ mục của nó. Khi định dạng đĩa hệ điều hành tạo ra thƣ mục gốc. Sau đó ngƣời sử dụng sẽ tạo ra các thƣ mục con khi cần. Một số thƣ mục đƣợc các chƣơng trình tạo ra trong lúc cài đặt. Các tập tin nên đƣợc đặt trong thƣ mục con, đừng đặt ngay vào thƣ mục gốc. Một khi số lƣợng tập tin đƣợc lƣu trữ trên bộ nhớ ngoài đã lên tới 1 con số khá lớn thì nhất thiết phải đƣa ra khái niệm thƣ mục. Khái niệm này cũng gần giống nhƣ hệ thống thƣ mục trong thƣ viện (khi đó mỗi tập tin có thể ví nhƣ 1 cuốn sách). Nếu số sách khổng lồ trong thƣ viện không đƣợc tổ chức theo một trật tự hợp lý mà cứ để chung vào một chỗ thì khi muốn tìm 1 cuốn sách (theo 1 chủ đề nào đó mà ta chƣa biết tên của cuốn sách đó chẳng hạn), ta phải nhìn vào từng cuốn một, và không phải thì nhìn tiếp qua cuốn khác cho đến khi tìm đƣợc. Cách làm đó có thể khiến ta phải mất 1 khoảng thời gian rất kinh khủng, nhất là khi cuốn sách muốn tìm không có trong thƣ viện đó thì ta vẫn phải xem hết tất cả mọi cuốn sách trong thƣ viện mới biết đƣợc là không có! Để khắc phục trở ngại đó ngƣời ta đã tổ chức hệ thống thƣ mục: danh mục tên sách đƣợc liệt kê theo từng chủ đề, trong mỗi chủ đề lại có thể có nhiều chủ đề con. Việc tổ chức phân cấp dạng cây nhƣ vậy chắc chắn sẽ giúp cho thời gian tìm kiếm 1 cuốn sách theo 1 chủ đề nào đó dù chƣa biết tên sách cũng sẽ rất nhanh. Nội dung các tập tin còn đa dạng hơn nội dung của các quyển sách (không chỉ là tài liệu văn bản bình thƣờng mà còn có thể là hình ảnh, âm thanh, nhạc, phim, trò chơi, chƣơng trình các loại ), và số lƣợng tập tin trên bộ nhớ ngoài cũng rất nhiều khiến cho việc tìm kiếm & sử dụng chúng cũng sẽ rất khó khăn nếu nhƣ ta cũng để chung vào 1 chỗ mà không tổ chức 14
- theo một trật tự hợp lý. Do đó tổ chức hệ thống thƣ mục phân cấp trên bộ nhớ ngoài là rất cần thiết, để giải quyết nhu cầu trên. Tóm lại, khái niệm thƣ mục cũng đƣợc đƣa ra bởi hệ điều hành, để việc tìm kiếm & sử dụng tập tin đƣợc hiệu quả. Mỗi thƣ mục có thể chứa các tập tin và các thƣ mục con bên trong (dĩ nhiên trong mỗi thƣ mục cũng có thể chỉ chứa toàn tập tin, hoặc chỉ chứa toàn thƣ mục con, hoặc đang là thƣ mục rỗng – không chứa gì cả). II. Cách lƣu trữ dữ liệu qua hệ thống bảng FAT (FAT 16, FAT 32, FAT NTFS ) Tổ chức hệ thống tập tin trên đĩa 1. Các nhận xét & phân tích cần thiết: Để có thể lƣu trữ đƣợc thông tin /dữ liệu vào đĩa & truy xuất, sử dụng đƣợc các dữ liệu trên đĩa một cách hiệu quả thì cần phải đƣa ra những phân tích, nhận xét sau: i) Phải xác định các vị trí còn trống (để có thể lưu dữ liệu vào đĩa) ii) Mỗi sector (hoặc tổng quát hơn là mỗi block) chỉ thuộc tối đa 1 tập tin, tức nếu sector đã chứa nội dung của 1 tập tin thì trong sector đó sẽ không có nội dung của tập tin khác (để dễ quản lý, không bị nhầm lẫn thông tin giữa 2 tập tin) iii) Tên & các thuộc tính của tập tin cần được lưu riêng vào 1 vùng (để tốc độ truy xuất dữ liệu nhanh hơn) iv) Phải có thông tin vị trí bắt đầu của nội dung tập tin (do phân tích trên) v) Nội dung tập tin không bắt buộc phải liên tục (phải cho phép được lưu trữ vào các vùng khác nhau khi cần – phân mảnh) vi) Phải biết các vị trí chứa nội dung tập tin (do phân tích trên) vii) Phải biết các vị trí bị hư viii) Nội dung tập tin nên lưu trữ theo đơn vị là CLUSTER (là dãy N sector liên tiếp – để dễ quản lý & việc truy xuất được nhanh hơn) 2. Cluster 2.1. Khái niệm Đơn vị đọc ghi trên đĩa là sector, nhƣng đơn vị lƣu trữ nội dung tập tin không phải là một sector mà là một cluster gồm N sector liên tiếp ỗi vị trí để lƣu giữ nội dung tập tin trong các phân tích trên sẽ ỉ tồn tại trên vùng dữ liệu (vùng DATA) – nơi chứa nội dung tập tin. 2.2. Lý do phát sinh khái niệm Cluster i) Nếu sector trên vùng dữ liệu quá nhiều thì có thể sẽ khó hoặc không quản lý đƣợc, khi đó quản lý trên cluster sẽ dễ dàng hiệu quả hơn. ii) Nội dung tập tin thƣờng chiếm nhiều sector và có thể không liên tục, và thời gian đọc ghi một lần n sector liên tiếp thƣờng nhanh hơn nhiều so với thời gian đọc ghi n lần mà mỗi lần chỉ 1 sector. Do đó để tối ƣu thời gian truy xuất tập tin thì cần chọn đơn vị truy xuất là một khối nhiều sector. 2.3. Hình thức tổ chức Đĩa sẽ đƣợc chia thành 2 vùng: vùng dữ liệu (DATA) chứa nội dung tập tin và vùng hệ thống (SYSTEM) chứa các thông tin quản lý. Vùng SYSTEM có kích thƣớc nhỏ hơn nhiều so với vùng DATA và phải truy xuất mỗi khi sử dụng Đĩa nên thƣờng nằm ngay đầu Đĩa, phần còn lại thuộc về vùng DATA. Trên vùng DATA là một dãy các Cluster liên tiếp đƣợc đánh chỉ số theo thứ tự tăng dần (bắt đầu từ 0, 1 hay 2 tùy theo Hệ Điều Hành). Nhƣ vậy nếu vùng DATA có SD sector & bắt đầu tại sector SS, mỗi Cluster chiếm SC sector, Cluster đầu tiên đƣợc đánh chỉ số là FC, thì Đĩa sẽ có tổng cộng SD/Sc Cluster và Cluster C sẽ bắt đầu tại sector: SS + (C – FC ) * SC Ví dụ, nếu Đĩa có kích thƣớc 4014 sector, vùng SYSTEM chiếm 11 sector, mỗi cluster chiếm 4 sector, Cluster đầu tiên đƣợc đánh chỉ số là 2; thì phân bố Cluster trên Đĩa sẽ nhƣ sau: Cluster 2 Cluster 3 Cluster 4 Cluster 1001 15
- 0 1 10 11 12 13 14 15 16 17 18 19 20 21 22 DATA AREA 4007 4008 4009 SYSTEM AREA 4010 Hình 1.4 : phân bố Cluster trên Đĩa ( 3 sector 4011, 4012, 4013 sẽ không thuộc cluster nào và không đƣợc sử dụng) 2.4. Kích thước Cluster Số sector trên 1 cluster nên là lũy thừa của 2 và có giá trị lớn hay nhỏ là tùy theo đĩa. Nếu ta chọn kích thƣớc cluster càng lớn thì sẽ càng lãng phí đĩa vì một tập tin có kích thƣớc nhỏ vẫn phải dùng một cluster – gồm nhiều sector để lƣu, nhƣng khi đó sẽ hạn chế đƣợc sự phân mảnh của tập tin và vì vậy tập tin có thể an toàn hơn & truy xuất nhanh hơn. Kích thƣớc của Cluster phụ thuộc vào khá nhiều yếu tố: dung lƣợng đĩa, tốc độ truy xuất 1 dãy sector trên đĩa, kích thƣớc của đa số tập tin sẽ lƣu vào đĩa, số cluster tối đa mà hệ thống có thể quản lý, nhu cầu của ngƣời sử dụng, Trên các đĩa cứng hiện tại thì Cluster thƣờng có kích thƣớc 4, 8 hoặc 16 sector. Ví dụ: -Với đĩa mềm 1.44 MB bình thƣờng (có 2880 sector), nếu ta cho 1 cluster chiếm 1000 sector thì sẽ rất không hợp lý. Vì khi đó ta chỉ có thể chép đƣợc tối đa 2 tập tin vào đĩa, dẫu mỗi tập chỉ có kích thƣớc là 1byte! Tuy nhiên nếu ta chỉ toàn chép vào đĩa các tập tin có kích thƣớc gần 1000 sector thì sẽ không còn sự lãng phí nữa. -Với hệ thống chỉ có thể quản lý tối đa M Cluster, nếu vùng DATA của Đĩa có 100M sector thì ta phải cho mỗi Cluster tối thiểu 100 sector mới có thể quản lý đƣợc toàn bộ vùng DATA 3. Bảng quản lý Cluster 3.1. Khái niệm Là 1 dãy phần tử, mỗi phần tử thƣờng là 1 con số nguyên đƣợc dùng để quản lý 1 cluster trên vùng dữ liệu. Việc quản lý ở đây cụ thể là cho biết cluster tƣơng ứng đang ở trạng thái trống, hƣ, hay đang chứa nội dung của 1 tập tin, và cho phép xác định danh sách các cluster chứa nội dung của tập tin. Có thể dùng 1 bảng để đáp ứng các nhu cầu trên, nhƣng cũng có thể tổ chức nhiều bảng – mỗi bảng phục vụ cho 1 nhu cầu. 3.2 Lý do phát sinh Để đƣa nội dung tập tin vào đĩa thì phải xác định các cluster còn trống (phân tích (i)), để đọc nội dung tập tin trên đĩa thì phải xác định đƣợc danh sách các cluster chứa nội dung tập tin đó (phân tích (vi)), tuy có thể lƣu thông tin quản lý ngay trên cluster nhƣng khi đó truy xuất rất chậm nên nhất thiết phải lập ra bảng này để quản lý truy xuất nhanh hơn. 3.3. Hình thức tổ chức Để xác định các cluster trống, hƣ, hay thuộc trạng thái luận lý đặc biệt nào đó (những trạng thái chỉ mang 1 trong 2 giá trị: Có – Không) ta có thể quản lý theo dạng chỉ mục: mỗi phần tử của bảng quản lý là 1 con số nói lên trạng thái của cluster mang chỉ số tƣơng ứng. Ở mức đơn giản ta chỉ cần quản lý 2 trạng thái luận lý là cluster trống & cluster hƣ. Danh sách các cluster hƣ có thể lƣu trực tiếp (có bao nhiêu cluster hƣ thì danh sách có bấy nhiêu phần tử), vì số cluster hƣ trên đĩa sẽ rất ít. Việc quản lý cluster trống có thể dùng hình thức bitmap (mỗi bit quản lý 1 cluster tƣơng ứng): nếu muốn biết cluster K là trống hay không ta xem giá trị của bit K là 0 hay 1. Ta cũng có thể quản lý vùng trống bằng cách lƣu 1 danh sách các phần tử, mỗi phần tử chứa vị trí bắt đầu & kích thƣớc của vùng trống tƣơng ứng. Việc xác định một trạng thái luận lý của cluster có thể thiết kế khá đơn giản, vấn đề chủ yếu là hình thức tổ chức để có thể xác định chuỗi các cluster chứa nội dung của 1 tập tin, có một số hình thức cơ bản nhƣ sau: 1. 3.3.1 Lưu trữ nội dung tập tin trên dãy cluster liên tiếp 2. 3.3.2 Sử dụng cấu trúc danh sách liên kết 3. 3.3.3 Sử dụng cấu trúc danh sách liên kết kết hợp chỉ mục: 16
- Ta tổ chức 1 bảng các phần tử nguyên (dãy số nguyên), mỗi phần tử đƣợc dùng để quản lý 1 cluster trên vùng dữ liệu theo dạng chỉ mục (phần tử K quản lý cluster K). Với qui định: . • Nếu phần tử K trên bảng có giá trị là FREE thì cluster K trên vùng dữ liệu đang ở trạng thái trống. . • Nếu phần tử K trên bảng có giá trị là BAD thì cluster K trên vùng dữ liệu sẽ đƣợc hệ thống hiểu là ở trạng thái hƣ. . • Nếu phần tử K trên bảng có giá trị khác FREE và khác BAD thì cluster K trên vùng dữ liệu đang chứa nội dung của 1 tập tin. Khi này ta còn biết đƣợc cluster kế tiếp chứa nội dung của tập tin: nếu phần tử K của ba?ng có giá trị L và L = EOF thì cluster K đã là cluster cuối cùng của tập tin, nếu L ≠ EOF thì phần kế tiếp của nội dung tập tin nằm tại cluster L (quản lý theo dạng danh sách liên kết). Như vậy hình thức tổ chức này có thể đáp ứng được tất cả các nhu cầu quản lý cluster: xác định cluster trống, hư, hay đang chứa nội dung tập tin, và chuỗi các cluster chứa nội dung của một tập tin (khi biết cluster bắt đầu). Ví dụ, nếu nội dung bảng quản lý Cluster của Đĩa trên nhƣ sau: Hình 2.4: Bảng quản lý Cluster trên Đĩa 0 1 2 3 4 5 6 7 8 9 10 11 12 13 1001 (các phần tử từ 13 đến 1001 đều có giá trị là FREE) thì từ đây có thể xác định lúc này trên đĩa đang có 2 cluster hƣ, 990 cluster trống, 8 cluster chứa nội dung tập tin. Cụ thể là: -Các cluster hƣ: 4, 10 -Các cluster trống: 8, 13, 14, 15, , 1001 -Các cluster chứa nội dung tập tin: 2, 3, 5, 6, 7, 9, 11, 12. Trong đó có 3 tập tin: . + tập tin I chiếm 3 cluster theo đúng thứ tự là: 2, 3, 5. . + tập tin II chiếm 1 cluster duy nhất là: 6. . + tập tin III chiếm 4 cluster theo đúng thứ tự là: 9, 7, 11, 12. Lưu ý: Phần tử đầu tiên của bảng có chỉ số là 0 nên nếu Cluster đầu tiên của vùng DATA đƣợc đánh chỉ số là FC > 0 thì FC phần tử đầu tiên của bảng (từ 0 FC -1) sẽ không đƣợc dùng để quản lý Cluster, để đảm bảo tính chất chỉ mục (phần tử mang chỉ số K quản lý trạng thái của Cluster mang chỉ số K). Khi này không gian bị lãng phí hoàn toàn không đáng kể, nhƣng việc quản lý truy xuất thì tiện lợi hơn, ta cũng có thể tận dụng phần không gian tƣơng ứng với FC phần tử đầu bảng này để lƣu 1 thông tin quản lý nào đó. Giá trị của các phần tử trên bảng: Ta cần phải đặt ra 3 giá trị hằng đặc biệt là FREE, BAD và EOF tƣơng ứng với 3 trạng thái cluster: trống, hƣ, hoặc là cluster cuối của nội dung tập tin, ta cũng có thể đặt thêm 1 số giá trị đặc biệt nữa cho những trạng thái đặc biệt khác của cluster (nếu có) hoặc 1 số giá trị dành riêng để phục vụ cho những nhu cầu trong tƣơng lai. Những giá trị còn lại sẽ tƣơng ứng với trạng thái cluster đang chứa nội dung tập tin và lúc đó giá trị của phần tử cũng chính là chỉ số của cluster kế tiếp. Các hằng đặc biệt (và dành riêng – nếu có) phải khác với các giá trị có thể có trên chỉ số cluster thì cluster tƣơng ứng mới có thể sử dụng đƣợc. Ví dụ, với hình trên, nếu ta đặt hằng EOF = 7 thì tập tin III sẽ bị hiểu lầm là chỉ chiếm đúng mỗi cluster 9 chứ không phải chiếm 4 cluster! Mỗi phần tử trên bảng nên là 1 con số nguyên dƣơng để có thể quản lý đƣợc nhiều cluster hơn, khi này các hằng đặc biệt nêu trên sẽ không thể là số âm mà phải chiếm những giá trị lớn nhất có thể biểu diễn đƣợc, và chỉ số của cluster cuối cùng trên vùng DATA buộc 17
- phải nhỏ hơn những giá trị hằng đặc biệt này. Trong trƣờng hợp cluster đầu tiên đƣợc đánh chỉ số là FC và FC > 0 thì cũng có thể sử dụng các giá trị 0 FC-1 cho những hằng đặc biệt trên. 3.4. Kích thước của bảng quản lý Cluster Mỗi phần tử trên bảng là 1 con số nguyên nên phát sinh vấn đề phải lƣu trữ mỗi số nguyên bằng bao nhiêu bit. Ta có thể căn cứ vào chỉ số cluster cuối cùng trên vùng DATA để xác định giá trị tối đa cần biểu diễn đƣợc của mỗi phần tử và giá trị của các hằng đặc biệt để suy ra số bit tối thiểu của mỗi phần tử, để đơn giản có thể dùng 16bit hoặc 32bit cho mỗi phần tử tùy theo đĩa có kích thƣớc nhỏ hay lớn. Vấn đề phức tạp nằm ở chỗ làm sao để xác định số phần tử của bảng, cũng nhƣ số cluster trên vùng DATA. Vì khi tạo (định dạng) đĩa thì ta chỉ có kích thƣớc của đĩa, chứ không có kích thƣớc vùng DATA, và không thể tự đặt ra kích thƣớc cho nó nhƣ với những thành phần khác. Ta có thể giải quyết bằng cách giả định kích thƣớc của bảng là 1 sector & kiểm chứng lại xem có hợp lý hay không, nếu không thì tăng dần kích thƣớc của bảng cho đến khi hợp lý. 3.5. Tổ chức quản lý cluster trên hệ điều hành DOS & Windows 9x Bảng quản lý cluster trên DOS & Windows 9x đƣợc gọi là FAT (File Allocation Table), đƣợc tổ chức theo hình thức danh sách liên kết kết hợp chỉ mục. Trên DOS mỗi phần tử của bảng FAT đƣợc biểu diễn bằng 1 con số nguyên 12bit hoặc 16bit (bảng FAT tƣơng ứng có tên là FAT12 hoặc FAT16). Trên Windows cũng có 2 loại FAT trên và có thêm loại FAT32 (mỗi phần tử đƣợc lƣu bằng 32bit). Nếu phần tử K của FAT có giá trị L thì trạng thái của Cluster K là: Giá trị của L Trạng thái của Cluster K FAT12 FAT16 FAT32 Trống 0 0 0 Hƣ FF7 FFF7 FFFFF7 Cluster cuối của tập tin FFF FFFF FFFFFF Chứa nội dung tập tin – và 2 FEF 2 FFEF có cluster kế sau là L 2 FFFFEF Hình 1.5 : Trạng thái của Cluster K Có một số giá trị tuy vẫn thuộc phạm vi biểu diễn nhƣng không thể có với L (ví dụ, với FAT12 là các giá trị 1, FF0 FF6, FF8 FFE), đây là các giá trị dành riêng đƣợc dự phòng để có thể sử dụng cho những trạng thái đặc biệt khác của cluster trong những phiên bản sau của hệ điều hành, khi đó sẽ vẫn có đƣợc sự tƣơng thích giữa các phiên bản cũ & mới. Chính vì giá trị 0 đƣợc dùng để biểu diễn trạng thái cluster trống nên sẽ không thể tồn tại cluster mang chỉ số 0 trên vùng dữ liệu, DOS & Windows đánh chỉ số của cluster đầu tiên trên vùng dữ liệu là 2 (FC = 2) Cũng từ những giá trị tƣơng ứng với trạng thái cluster chứa nội dung tập tin ở bảng trên, ta có thể suy ra số cluster tối đa mà bảng FAT12 có thể quản lý đƣợc là FEE (tức 4078d, 12 chứ không phải là 2 = 4096), và FAT16 là FFEE (tức 65518d). Nhƣ vậy nếu số cluster trên DATA không quá 4078 thì hệ thống sẽ dùng FAT12 để quản lý, nếu số cluster lớn hơn 4078 nhƣng không quá 65518 thì sẽ dùng FAT16, và lớn hơn 65518 thì sẽ dùng FAT32. Tuy nhiên đó là qui ƣớc mặc định của hệ điều hành, ta cũng có thể chỉ định loại FAT cần sử dụng, ví dụ vùng DATA có 2004 cluster thì dùng FAT16 quản lý vẫn đƣợc. Bảng quản lý cluster rất quan trọng nên DOS & Windows thƣờng lƣu thêm N bảng backup để phòng tránh hƣ hỏng (N≥0, thƣờng là 1). Các bảng FAT đƣợc lƣu trữ kế tiếp nhau trên 1 vùng gọi là vùng FAT. 18
- Với bảng FAT12, việc truy xuất một phần tử hơi phức tạp: đơn vị truy xuất trên RAM là 1 byte nhƣng mỗi phần tử lại có kích thƣớc 1.5 byte. Ta có thể xác định 2 byte tƣơng ứng chứa giá trị của phần tử, lấy giá trị số nguyên không dấu 2byte tại đó rồi dùng các phép toán xử lí trên bit để truy xuất đƣợc con số 1.5 byte tƣơng ứng. Ví dụ, nội dung 12 byte đầu của bảng FAT là: F0 FF FF 03 40 00 FF 7F FF AB CD EF offset 0 1 2 3 4 5 6 7 8 9 A B thì 8 phần tử đầu tƣơng ứng của bảng FAT là: FF0 FFF 003 004 FFF FF7 DAB EFC phầntử 0 1 2 3 4 5 6 7 Vì kích thƣớc bảng FAT12 là khá nhỏ (tối đa 12 sector) nên để việc truy xuất 1 phần tử đƣợc đơn giản ngƣời ta thƣờng đọc toàn bộ các sector trên bảng FAT vào 1 vùng đệm rồi từ vùng đệm này xây đựng ra 1 mảng số nguyên 2byte mà mỗi phần tử của mảng mang giá trị của phần tử tƣơng ứng trên bảng FAT. Khi cần lƣu bảng FAT vào đĩa thì lại thực hiện thao tác ngƣợc lại: từ mảng số nguyên 2 byte tạo ra dãy byte tƣơng ứng của FAT đƣa vào vùng đệm và lƣu vùng đệm vào các sector chứa FAT trên đĩa. 4. Bảng thƣ mục 4.1 Khái niệm về RDET (Root Directory Entry Table): Là 1 dãy phần tử (entry), mỗi phần tử chứa tên & các thuộc tính của 1 tập tin trên thƣ mục gốc của đĩa (hoặc là phần tử trống – chƣa thuộc về 1 tập tin nào hết). Ví dụ, nếu mô hình thuộc tính tập tin đƣợc thiết kế chỉ gồm các thành phần: tên chính (chuỗi tối đa 4 ký tự), tên mở rộng (chuỗi tối đa 2 ký tự), kích thƣớc tập tin (số nguyên 2 byte) thì RDET sẽ nhƣ sau: Offset Hình 1.6 : RDET 4.2 Lý do phát sinh khái niệm RDET Từ phân tích (iii). 4.3 Kích thước RDET Số entry trên RDET đƣợc qui định bởi chƣơng trình định dạng (format) đĩa, con số này sẽ lớn hay nhỏ là tùy theo dung lƣợng của đĩa (nhƣng chắc chắn là sẽ không quá lớn vì số tập tin trên đĩa dù rất nhiều thì số tập tin ở thƣ mục gốc cũng không nên quá nhiều, sẽ gây khó khăn cho việc quản lý của ngƣời sử dụng). Số entry trên RDET không bắt buộc phải là 1 giá trị chính xác mà cho phép dao động một ít, vì vậy ta có thể điều chỉnh để hạn chế lãng phí không gian lƣu trữ trên sector. Ví dụ, nếu mỗi entry có kích thƣớc 32 byte & ta dự định tổ chức 50 entry cho RDET thì không hay lắm, có thể điều chỉnh lại thành 48 entry hoặc 64 entry. 19
- 4.4 Cấu trúc Entry của DOS ArchiveDirectoryĐĩaLabelSystemHidden ReadOnly . + ReadOnly: thuộc tính chỉ đọc, khi tập tin có thuộc tính này hệ thống sẽ không cho phép sửa hoặc xóa. . + Hidden: thuộc tính ẩn, ở trạng thái mặc định hệ thống sẽ không hiển thị tên của các tập tin này khi liệt kê danh sách tập tin. . + System: thuộc tính hệ thống, cho biết tập tin có phải thuộc hệ điều hành không . + Đĩa Label: thuộc tính nhãn đĩa, trên RDET chỉ có tối đa 1 entry có thuộc tính này, khi đó entry không phải tƣơng ứng với tập tin mà đƣợc dùng để chứa nhãn của đĩa là 1 chuỗi tối đa 11 ký tự đƣợc lƣu ở 11 byte đầu tiên của entry . + Directory: thuộc tính thƣ mục, nếu entry có thuộc tính này thì tập tin tƣơng ứng không phải là một tập tin bình thƣờng mà là một tập tin thƣ mục. Mỗi thƣ mục trên DOS đƣợc lƣu trữ giống nhƣ một tập tin bình thƣờng, nội dung của tập tin thƣ mục này là danh mục những tập tin và thƣ mục con của nó. . + Archive: thuộc tính lƣu trữ, cho biết tập tin đã đƣợc backup hay chƣa (bằng lệnh backup của hệ điều hành), đây là thuộc tính hầu nhƣ không đƣợc sử dụng – vì ít khi có nhu cầu backup tất cả các tập tin mà chỉ cần lƣu những tập tin cần thiết. Khi ta xóa tập tin, entry tƣơng ứng phải đƣợc chuyển sang trạng thái trống, nhƣng 20
- trạng thái trống lúc này không phải là 32 byte của entry đƣợc chuyển sang giá trị 0 mà chỉ có byte đầu tiên đƣợc đổi thành E5. Vì tất cả các ký tự của tên tập tin đều không thể có mã là 0 hoặc E5 nên để biết 1 entry có trống hay không ta chỉ cần nhìn giá trị byte đầu tiên của entry: nếu khác 0 và E5 thì đó không phải là entry trống. Mỗi khi tìm entry trống để sử dụng hệ thống tìm theo thứ tự từ đầu trở đi nên nếu ta gặp 1 entry trống có byte đầu là 0 thì tất cả các entry phía sau cũng là những entry trống ở dạng chƣa từng đuợc sử dụng (32 byte trên entry đều là 0) 4.5 Bảng thư mục con SDET (Sub Directory Entry Table): 4.5.1 Khái niệm: Mỗi thƣ mục trên DOS đƣợc lƣu trữ giống nhƣ một tập tin bình thƣờng. Nội dung của tập tin thƣ mục này là một dãy entry, mỗi entry chứa tên & thuộc tính của những tập tin và thƣ mục con thuộc thƣ mục đang xét giống y nhƣ các entry trên RDET, dãy entry này đƣợc gọi là SDET. Có thể nói một cách đơn giản rằng SDET là nội dung của tập tin thƣ mục. SDET có cấu trúc tổ chức giống nhƣ RDET nhƣng đƣợc lƣu trữ ngay trên vùng DATA (vì là nội dung tập tin). Trên đĩa có đúng 1 RDET nhƣng có thể có rất nhiều SDET – và cũng có thể không có bảng SDET nào. 4.5.2 Lý do phát sinh Nếu số tập tin trên đĩa có thể nhiều thì nhất thiết phải đƣa ra khái niệm thƣ mục để tránh chuyện tất cả mọi tập tin trên đĩa phải lƣu chung vào 1 nơi rất khó quản lý. Vì các thuộc tính của thƣ mục khá giống với các thuộc tính của tập tin bình thƣờng nên có thể đặt ra khái niệm thƣ mục là một tập tin đặc biệt và tổ chức lƣu trữ nhƣ một tập tin bình thƣờng, không cần phải đƣa ra một thiết kế khác cho việc tổ chức lƣu trữ hệ thống thƣ mục. 4.5.3 Kích thước SDET Số entry trên SDET có thể rất nhỏ mà cũng có thể rất lớn, phụ thuộc vào số lƣợng tập tin & thƣ mục con bên trong thƣ mục đang xét chứ không bị qui định 1 con số cố định nhƣ trên RDET. Vì SDET nằm trên vùng DATA nên để tối ƣu số entry của SDET thƣờng đƣợc đặt sao cho không bị lãng phí không gian trên cluster. Ví dụ, nếu entry có kích thƣớc 32 byte và cluster có có kích thƣớc 32 sector thì số entry của SDET sẽ là bội của 512. 4.5.4 Bảng SDET trên DOS Luôn có 2 entry „.„ và „ „ ở đầu bảng mô tả về chính thƣ mục này và thƣ mục cha của nó. Cấu trúc mỗi entry trên SDET cũng giống nhƣ entry trên RDET, chỉ khác ở số lƣợng entry & vị trí lƣu giữ nội dung entry trên SDET là không cố định. Vì SDET luôn chiếm trọn cluster nên thuộc tính kích thƣớc tập tin trên entry tƣơng ứng với thƣ mục sẽ không cần sử dụng và luôn đƣợc DOS gán là 0. Nhƣ vậy khi tạo 1 thƣ mục thì số entry trong SDET của thƣ mục sẽ là SC/32 (SC là kích thƣớc cluster), trong đó entry đầu tiên có phần tên là „.„ và phần còn lại lƣu các thông tin về thƣ mục này, entry thứ hai có phần tên là „ „ (2 byte đầu của entry lƣu kí tự „.„ và 9 byte kế sau lƣu khoảng trắng) và phần còn lại lƣu các thông tin về thƣ mục cha của thƣ mục này, từ entry thứ ba trở đi đều là entry trống (32byte đều mang giá trị 0). Nếu chép vào trong thƣ mục con này nhiều hơn (SC/32 -2) tập tin thì bảng SDET hiện tại không đủ số entry để quản lí, khi này kích thƣớc bảng SDET sẽ đƣợc hệ thống cho tăng thêm bằng cách tìm cluster trống trên vùng DATA và lƣu nội dung các entry phát sinh thêm vào cluster mới này (và phần còn lại của cluster nếu có cũng đƣợc lƣu các entry trống nhƣ trên cluster đầu tiên). 1. 5. Boot Sector 2. 5.1 Khái niệm Là sector đầu tiên của đĩa, chứa một đoạn chƣơng trình nhỏ để nạp hệ điều hành khi khởi động máy và các thông số quan trọng của đĩa: kích thƣớc cluster, kích thƣớc bảng thƣ mục, kích thƣớc bảng quản lý cluster, 5.2 Lý do phát sinh Các bảng quản lý cluster & bảng thƣ mục đã đủ đáp ứng các phân tích nêu trên, nhƣng để thật sự có thể thực hiện đƣợc các thao tác truy xuất đĩa ta cần phải biết đƣợc vị trí & kích thƣớc của từng thành phần trên đĩa. Vì đĩa có thể đƣợc kết nối vào một hệ thống khác nên thông tin về các thành phần của đĩa phải đƣợc lƣu ngay trên chính đĩa đó để bất 21
- cứ hệ thống nào cũng có thể hiểu. Sector đầu tiên của đĩa là nơi thích hợp nhất để chứa các thông tin quan trọng này. 5.3 Hình thức tổ chức Các thông số quan trọng chỉ chiếm 1 kích thƣớc nhỏ nên ta có thể qui ƣớc một vùng nhỏ trên sector dùng để chứa các thông số của đĩa (phần còn lại là đoạn chƣơng trình nạp hệ điều hành khi khởi động), mỗi thông số đƣợc qui định nằm tại một offset cụ thể cố định nào đó. Trong trƣờng hợp tổng kích thƣớc các thông số và phần chƣơng trình nạp hệ điều hành lớn hơn 512byte thì có thể dùng tiếp những sector kế sau để lƣu 5.4 Tổ chức thông tin trong BootSector của DOS & Windows 5.4.1 Boot Sector của hệ điều hành DOS Offset Số byte Ý nghĩa 0 (0h) 3 Lệnh nhảy đến đầu đoạn mã Boot (qua khỏi vùng thông số) 3 (3h) 8 Tên công ty /version của HĐH 11 (0Bh) 2 Số byte của sector 13 (0Dh) 1 Số sector của cluster 14 (0Eh) 2 Số sector trƣớc bảng FAT 16 (10h) 1 Số lƣợng bảng FAT 17 (11h) 2 Số Entry của RDET 19 (13h) 2 Số sector của đĩa 21 (15h) 1 Kí hiệu loại đĩa 22 (16h) 2 Số sector của FAT 24 (18h) 2 Số sector 1 track (tính theo sector) 26 (1Ah) 2 Số lƣợng đầu đọc (head) 28 (1Ch) 4 Khoảng cách từ nơi mô tả đĩa đến đầu đĩa 32 (20h) 4 Kích thƣớc đĩa (nếu số 2 byte tại offset 13h là 0) 36 (24h) 1 Kí hiệu vật lí của đĩa chứa đĩa (0 : mềm, 80h: cứng) 37 (25h) 1 Dành riêng 38 (26h) 1 Kí hiệu nhận diện HĐH 39 (27h) 4 SerialNumber của Đĩa 43 (2Bh) 11 Đĩa Label 54 (36h) 8 Dành riêng 62 (3Eh) 448 Đoạn chƣơng trình Boot nạp tiếp HĐH khi khởi động máy 510 (1FDh) 2 Dấu hiệu kết thúc BootSector /Master Boot (luôn là AA55h) Hình 1.7 : Boot Sector của hệ điều hành DOS Ví dụ, với đĩa có nửa đầu của Boot Sector nhƣ sau: EB 3C 90 4D 53 57 49 4E-34 2E 31 00 02 10 01 00 .<.MSWIN4.1 02 00 02 00 00 F8 FF 00-3F 00 FF 00 3F 00 00 00 ? ? C2 EE 0F 00 80 00 29 DE-1C 49 15 20 20 20 20 20 ) I.20 20 20 20 20 20 46 41-54 31 36 20 20 20 33 C9 FAT16 3. 8E D1 BC F0 7B 8E D9 B8-00 20 8E C0 FC BD 00 7C { |38 4E 24 7D 24 8B C1 99-E8 3C 01 72 1C 83 EB 3A 8N$}$ <.r :66 A1 1C 7C 26 66 3B 07-26 8A 57 FC 75 06 80 CA f |&f;.&.W.u 02 88 56 02 80 C3 10 73-EB 33 C9 8A 46 10 98 F7 V s.3 F 66 16 03 46 1C 13 56 1E-03 46 0E 13 D1 8B 76 11 f F V F v. 60 89 46 FC 89 56 FE B8-20 00 F7 E6 8B 5E 0B 03 `.F V ^ C3 48 F7 F3 01 46 FC 11-4E FE 61 BF 00 00 E8 E6 .H F N.a 00 72 39 26 38 2D 74 17-60 B1 0B BE A1 7D F3 A6 .r9&8-t.` } 61 74 32 4E 74 09 83 C7-20 3B FB 72 E6 EB DC A0 at2Nt ;.r FB 7D B4 7D 8B F0 AC 98-40 74 0C 48 74 13 B4 0E 22
- .}.} @t.Ht BB 07 00 CD 10 EB EF A0-FD 7D EB E6 A0 FC 7D EB } }.E1 CD 16 CD 19 26 8B 55-1A 52 B0 01 BB 00 00 E8 &.U.R thì ta có thể suy ra thông tin về các thành phần nhƣ sau: . • 2 byte tạ ố byte trên mỗi sector của đĩa là: 0200h = 512d (byte) . • Giá trị của byte tạ ố sector trên mỗi cluster của đĩa là: 10h = 16d (sector) . • 2 byte tạ ố sector trƣớc vùng FAT là: 0001h = 1d (sector) . • Giá trị của byte tạ ố bảng FAT của đĩa là: 02h = 2d (bảng) . • 2 byte tạ ố entry trên bảng RDET là: 0200h = 512d (entry) Kích thƣớc bảng RDET là 512*32/512 = 32 (sector). . • 2 byte tạ ớc bảng FAT là: 00FFh = 255d (sector) . • 4 byte tạ ổng số sector trên đĩa là: 000FEEC2h = 1044162d (vì 2 byte tại offset 13 đều là 00 nên kích thƣớc đĩa đƣợc lấy ở 4 byte tại offset 20) Từ các thông số trên ta có thể tính ra đƣợc kích thƣớc của vùng hệ thống là: Số sector trước FAT + Số FAT * Kích thước FAT + Kích thước RDET = 1 + 2*255 + 32 = 543 (sector) Vậy sector đầu tiên của vùng dữ liệu có chỉ số là 543, mà mỗi cluster chiếm 16 sector, nên cluster 2 sẽ chiếm 16 sector từ 543 đến 558, cluster 3 sẽ chiếm 16 sector từ 559 đến 574. Tổng quát, cluster k sẽ chiếm 16 sector bắt đầu tại sector có chỉ số 543 + 16*(k-2) 6. Tổng kết Mô hình tổ chức tập tin trên một đĩa file của hệ điều hành tổng quát luôn bao gồm các thành phần chính là: vùng dữ liệu chứa nội dung tập tin, thƣờng đƣợc tổ chức dƣới đơn vị khối (cluster) gồm nhiều sector để hệ thống hoạt động tối ƣu; vùng hệ thống chứa các thông tin quản lý, bao gồm bảng quản lý cluster để quản lý các khối trên, bảng thƣ mục để quản lý các tập tin & các thuộc tính liên quan, ngoài ra thƣờng có một hoặc một số sector chứa các thông tin quản lý các vùng trên. Với các Đĩa đƣợc tổ chức theo dạng FAT của hệ điều hành DOS & Windows, các thành phần đƣợc tổ chức theo thứ tự nhƣ sau: BootSector FAT Area RDET DATA Area Area Hình 2.8 : Thứ tự tổ chức của các thành phần Trên thực tế có rất nhiều hệ điều hành khác nhau, không chỉ là các hệ điều hành trong máy tính PC mà còn có những hệ điều hành trong máy ảnh số, máy quay phim, máy thu âm, điện thoại di động, Mỗi hệ điều hành có thể tổ chức hệ thống tập tin trên đĩa theo những kiến trúc khác nhau, nhƣng với những thiết bị lƣu trữ có kích thƣớc không lớn thì quản lí cluster theo phƣơng pháp danh sách liên kết kết hợp chỉ mục là thích hợp, và để tƣơng thích nhau đa số hệ điều hành đều có cấu trúc đĩa đƣợc thiết kế theo dạng FAT nhƣ trên. Cụ thể là đĩa mềm, đĩa cứng bỏ túi & các loại thẻ nhớ (Flash Memory) thƣờng đƣợc định dạng dạng FAT và có thể sử dụng trên các loại máy tính & hệ điều hành khác nhau mà không cần định dạng lại theo cấu trúc trên hệ thống mới. Với đĩa mềm 1.44MB bình thƣờng thì các thành phần đƣợc phân bố cụ thể nhƣ sau: Sector 23
- Hình 2.9 Các thành phần phân bố của đĩa mềm 1.44MB bình thƣờng III. Định dạng đĩa cứng, đĩa mềm, đĩa Flash 1. Các phân tích cần thiết Để có thể lƣu trữ đƣợc thông tin /dữ liệu vào hệ thống lƣu trữ & truy xuất, sử dụng đƣợc các dữ liệu trên hệ thống lƣu trữ một cách hiệu quả thì cần phải tuần tự thực hiện các công đoạn: 1. Đƣa ra khái niệm tập tin, thƣ mục, đĩa. 2. Xây dựng mô hình thuộc tính & chức năng trên tập tin & thƣ mục. 3. Tổ chức đƣợc hình thức lƣu trữ tập tin /thƣ mục & các hình thức quản lý cần thiết khác trên đĩa. 4. Viết thuật giải & chƣơng trình thực hiện các chức năng cần thiết với các tập tin /thƣ mục trên đĩa. Công đoạn thứ tƣ có thể nói ngắn gọn là “cài đặt các chức năng trên đĩa”, những chức năng cơ bản phải có trƣớc tiên là: định dạng đĩa, chép tập tin vào đĩa, liệt kê danh sách tập tin trên đĩa, đọc nội dung tập tin, xóa tập tin. 2. Định dạng Đĩa 2.1 Khái niệm Để đĩa có thể sử dụng đƣợc thì thao tác đầu tiên phải tiến hành chính là định dạng (format) đĩa. Chức năng này có thể do ngƣời sử dụng thực hiện cũng có thể do nhà sản xuất hoặc ngƣời phân phối làm giùm tùy theo loại thiết bị. Bởi vì khi chƣa thi hành chức năng định dạng thì đĩa chỉ là một dãy sector có nội dung rác (những giá trị ngẫu nhiên không đúng với những giá trị cần thiết theo qui định), do đó không thể thực hiện đƣợc các thao tác truy xuất tập tin trên đĩa vì không biết trên đĩa đang có những tập tin nào, nằm tại đâu, chỗ nào còn trống, kích thƣớc cluster là bao nhiêu, Nhƣ vậy việc định dạng đĩa chính là xác định các thông số của từng thành phần trên đĩa (vị trí, kích thƣớc của cluster, bảng quản lý cluster, bảng thƣ mục, ) và đƣa các giá trị thích hợp vào những thành phần đó. Để chƣơng trình hệ điều hành có thể truy xuất đƣợc 1 đĩa bất kỳ thì hệ điều hành phải căn cứ vào những thông số này mà “hiểu” đƣợc tổ chức tập tin trên đĩa, từ đó mới thực hiện đƣợc các chức năng chép, xóa, xem, sửa, Muốn có 1 đĩa trắng để có thể sử dụng bình thƣờng thì sau khi xác định vị trí & kích thƣớc của các thành phần quản lý, ta cần phải lƣu các thông số quan trọng đó vào BootSector, sau đó lƣu vào các entry trên bảng thƣ mục các giá trị tƣơng ứng với trạng thái trống, các phần tử trên bảng quản lý cluster cũng vậy – trừ các phần tử tƣơng ứng với các cluster bị hƣ (dĩ nhiên nếu hệ thống có quản lý đến trạng thái cluster hƣ – và khi này các phần tử quản lý cluster hƣ cũng phải đƣợc gán cho các giá trị phù hợp). Vấn đề có vẻ lớn nhất trong chức năng định dạng chính là việc xác định kích thƣớc bảng quản lý cluster. Vì khi thực hiện chức năng này thì hệ thống chỉ có kích thƣớc Đĩa & kích thƣớc sector - các thông số còn lại phải tự xác định. Các thông số khác có thể tự phán quyết không đƣợc chính xác lắm cũng không gây ảnh hƣởng lớn, nhƣng kích thƣớc của bảng quản lý cluster phải đƣợc tính chính xác – mà để tính đƣợc thì phải qua những bƣớc lý luận nhất định chứ không thể tính trực tiếp. Với một đĩa đã đƣợc định dạng ta cũng có thể định dạng lại, khi này có 2 trƣờng hợp: . • Định dạng lại hoàn toàn (full format): để tạo ra những dạng thức mới phù hợp hơn 24
- cho đĩa, các thông số của từng thành phần trên đĩa sẽ đƣợc xác định lại. Chức năng này dĩ nhiên cũng đƣợc dùng cho những đĩa chƣa đƣợc định dạng. . • Định dạng nhanh (quick format): chấp nhận giữ lại các thông số cũ của đĩa, chỉ cập nhật lại trạng thái các cluster đang chứa dữ liệu thành trạng thái trống và cho tất cả entry trên bảng thƣ mục gốc về trạng thái trống. Chức năng này tƣơng đƣơng với việc xóa tất cả mọi tập tin & thƣ mục đang tồn tại trên đĩa, nhƣng thời gian thi hành rất nhanh – có thể nhanh hơn thời gian xóa 1 tập tin! 2.2 Định dạng cho đĩa (full format) 2.2.1 Thuật giải: (Đầu vào: tên đĩa, kích thƣớc đĩa, kích thƣớc sector, 2 hàm đọc /ghi sector; Đầu ra: đĩa trắng có nội dung BootSector, bảng quản lý clustor, bảng thƣ mục hợp lý) . • Bƣớc 1: Xác định giá trị hợp lý cho các thông số cần thiết – ngoại trừ kích thƣớc bảng quản lý cluster. . • Bƣớc 2: Tính kích thƣớc bảng quản lý cluster dựa vào các thông số đã biết. . • Bƣớc 3: Lƣu giá trị các thông số trên vào các offset đã qui ƣớc trên BootSector. . • Bƣớc 4: Lƣu giá trị tƣơng ứng với trạng thái trống vào các entry trên bảng thƣ mục. . • Bƣớc 5: Khảo sát các cluster trên vùng dữ liệu để xác định những cluster hƣ. . • Bƣớc 6: Lƣu giá trị tƣơng ứng với trạng thái trống /hƣ vào các phần tử trên bảng quản lý cluster 2.2.2 Định dạng đĩa theo kiến trúc FAT12 /FAT16 . -Bước 1: Từ kích thƣớc đĩa (SV) và những tiêu chí đặt ra phán quyết giá trị thích hợp cho kích thƣớc cluster (SC), kích thƣớc RDET (SR), số bảng FAT (nF), số sector của vùng BootSector (SB – còn gọi là số sector trƣớc FAT). o -Bước 2: Tính kích thƣớc bảng FAT (SF) và loại FAT bằng hình thức thử & sai dựa trên đẳng thức SB + nF*SF +SR + SD = SV o (giả sử SF =1, từ đó suy ra kích thƣớc vùng dữ liệu (SD) và kiểm chứng lại xem 2 thông số này có phù hợp nhau không, nếu không hợp lý thì thử SF =2, 3, 4, cho đến khi hợp lý) . -Bước 3: Lƣu giá trị các thông số trên vào các offset từ 3 – 36h theo đúng vị trí & kích thƣớc đã mô tả trong bảng tham số Đĩa. . -Bước 4: Tạo 1 vùng đệm có kích thƣớc (SR * 512) byte mang toàn giá trị 0 và lƣu vào SR sector bắt đầu tại sector (SB + nF*SF ) o -Bước 5: Ghi xuống & Đọc lên từng cluster từ cluster 2 đến cluster SD /SC +1. Nếu nội dung đọc đƣợc giống nội dung ghi thì cho phần tử mang chỉ số tƣơng ứng trên bảng FAT giá trị 0, ngƣợc lại nếu không giống hoặc không thành công trong việc đọc /ghi thì gán cho o phần tử mang chỉ số tƣơng ứng trên bảng FAT giá trị FF7 hoặc FFF7 (tùy theo loại FAT đã xác định ở bƣớc 2). . -Bước 6: Tạo 1 vùng đệm có kích thƣớc (SF * 512) byte & đƣa các giá trị của bảng FAT vào vùng đệm rồi lƣu vào SF sector bắt đầu tại sector SB. Nếu nF > 1 thì lƣu tiếp vào các vị trí SB + SF , SB + 2*SF , , SB + (nF-1)*SF . * Một số ví dụ về việc xác định kích thƣớc bảng FAT -Ví dụ 1: Xét đĩa tƣơng ứng trên đĩa mềm 1.44MB (có 2880 sector, mỗi sector có 512 byte), để các tập tin trên đĩa có thể truy xuất nhanh & an toàn hơn ta có thể cho SC = 4 (sector), SB = 1 (sector), SR = 32 (entry) = 2 (sector), nF = 2. Thay các giá trị trên vào đẳng thức SB + nF*SF +SR + SD = SV ta đƣợc 1 + 2SF +2 + SD = 2880 (sector), hay 2SF + SD = 2877 (sector) 25
- (*) (*) ⇒ SD < 2877 (sector) = 719.25 (cluster) ⇒ Loại FAT tối ƣu nhất (về mặt kích thƣớc) là FAT12, vì SD < 4079 (cluster) * Giả sử SF = 1 (sector): (*) ⇒ SD = 2877 -2SF = 2875 (sector) = 718.75 (cluster) (vì mỗi cluster chiếm 4 sector). . ⇒ Vùng dữ liệu có 718 cluster, nên bảng FAT phải có 718 + 2 = 720 phần tử, do đó SF = (720*1.5)/512 = 2.1x (sector) . ⇒ Bảng FAT phải chiếm 3 sector – mâu thuẫn với giả thiết SF = 1. Vậy kích thƣớc bảng FAT của đĩa này không thể là 1 sector . * Giả sử SF = 2 (sector): tƣơng tự, ta vẫn thấy mâu thuẫn, tức kích thƣớc bảng FAT phải lớn hơn 2 sector. . * Giả sử SF = 3 (sector): (*) ⇒ SD = 2877 -2SF = 2871 (sector) = 717.75 (cluster) (vì mỗi cluster chiếm 4 sector). . ⇒ Vùng dữ liệu có 717 cluster, nên bảng FAT phải có 717 + 2 = 719 phần tử, do đó SF = (719*1.5)/512 = 2.1x (sector) . ⇒ Bảng FAT phải chiếm 3 sector – phù hợp với giả thiết SF = 3. Vậy kích thƣớc bảng FAT của đĩa này là 3 sector. -Ví dụ 2: Xét đĩa tƣơng ứng trên đĩa mềm 1.44MB (có 2880 sector, mỗi sector có 512 byte), để các tập tin trên đĩa có thể truy xuất nhanh & an toàn hơn ta có thể cho SC = 1 (sector), SB = 1 (sector), SR = 224 (entry) = 14 (sector), nF = 2. Thay các giá trị trên vào đẳng thức SB + nF*SF +SR + SD = SV ta đƣợc 1 + 2SF +14 + SD = 2880 (sector), hay 2SF + SD = 2865 (sector) (*) (*) ⇒ SD < 2865 (sector) = 2865 (cluster) ⇒ Loại FAT tối ƣu nhất (về mặt kích thƣớc) là FAT12, vì SD < 4079 (cluster) * Giả sử SF = 1 (sector): (*) ⇒ SD = 2865 -2SF = 2863 (sector) = 2863 (cluster) (vì mỗi cluster chiếm 1 sector). . ⇒ Vùng dữ liệu có 2865 cluster, nên bảng FAT phải có 2865 + 2 = 2867 phần tử, do đó SF = (2867*1.5)/512 = 8.3x (sector) . ⇒ Bảng FAT phải chiếm 9 sector – mâu thuẫn với giả thiết SF = 1. Vậy kích thƣớc bảng FAT của đĩa này không thể là 1 sector . * Tƣơng tự, với SF từ 2 đến 8 sector ta vẫn thấy mâu thuẫn, tức kích thƣớc bảng FAT phải lớn hơn 8 sector. . * Giả sử SF = 9 (sector): (*) ⇒ SD = 2865 -2SF = 2847 (sector) = 2847 (cluster) (vì mỗi cluster chiếm 1 sector). ⇒) Vùng dữ liệu có 2847 cluster, nên bảng FAT phải có 2847 + 2 = 2849 phần tử, do đó SF = (2849*1.5)/512 = 8.3x (sector) ⇒) Bảng FAT phải chiếm 9 sector – phù hợp với giả thiết SF = 9. Vậy kích thƣớc bảng FAT của đĩa này là 9 sector. -Ví dụ 3: Xét đĩa có kích thƣớc 4000000 sector, ta có thể cho SB = 3 sector, SR = 512 entry = 32 sector, nF = 2. Các thông số đó có thể đổi sang 1 số giá trị khác cũng đƣợc, nhƣng SC trong trƣờng hợp này không thể phán 1 cách tùy tiện vì số cluster tối đa mà kiến trúc FAT cho phép chỉ là 65518 (với trƣờng hợp FAT16, còn với FAT12 chỉ là 4078). Vì vùng hệ thống có kích thƣớc rất nhỏ nên SD sẽ gần bằng SV. Vậy SC ít nhất cũng gần bằng 26
- 4000000/65518 = 61.xx (sector). Đây là 1 con số đã quá lớn cho SC, nhƣng để thỏa tiêu chuẩn SC là lũy thừa của 2 thì ta phải cho SC=64 sector – và dĩ nhiên loại FAT đƣợc sử dụng trong trƣờng hợp này phải là FAT16 chứ không thể dùng FAT12. Thay các giá trị trên vào đẳng thức SB + nF*SF +SR + SD = SV ta đƣợc 3 + 2SF + 32 + SD = 4000000 (sector), hay 2SF + SD = 3999965 (sector) (*) * Giả sử SF = 1 (sector): (*) ⇒ SD = 3999965 - 2SF = 3999963 (sector) = 62499.4x (cluster) (vì mỗi cluster chiếm 64 sector). . ⇒ Vùng dữ liệu có 62499 cluster, nên bảng FAT phải có 62499 + 2 = 62501 phần tử, do đó SF = (62501*2)/512 = 244.1x (sector) . ⇒ Bảng FAT phải chiếm 245 sector – mâu thuẫn với giả thiết SF = 1. Vậy kích thƣớc bảng FAT của đĩa này không thể là 1 sector . * Tƣơng tự, với SF từ 2 đến 244 ta vẫn thấy mâu thuẫn, tức kích thƣớc bảng FAT phải lớn hơn 244 sector. . * Giả sử SF = 245 (sector): (*) ⇒ SD = 3999965 - 2SF = 3999475 (sector) = 62491 (cluster) (vì mỗi cluster chiếm 64 sector). . ⇒) Vùng dữ liệu có 62491 cluster, nên bảng FAT phải có 62491 + 2 = 62493 phần tử, do đó SF = (62493*2)/512 = 244.1x (sector) . ⇒) Bảng FAT phải chiếm 245 sector – phù hợp với giả thiết SF = 245. Vậy kích thƣớc bảng FAT của đĩa này là 245 sector. 2.3 Định dạng nhanh (quick format) 2.3.1 Thuật giải: (Đầu vào: tên đĩa cần format lại; Đầu ra: đĩa trắng có thông số các thành phần quản lý không thay đổi) • Bƣớc 1: Đọc BootSector để xác định các thông số cần thiết. • Bƣớc 2: Đọc bảng quản l ý cluster vào bộ nhớ. • Bƣớc 3: Giữ nguyên danh sách các cluster hƣ (nếu có) & cho các trạng thái các cluster còn lại thành trống. • Bƣớc 4: Lƣu lại bảng quản lý cluster vào đĩa. • Bƣớc 5: Tạo 1 vùng đệm có kích thƣớc bằng kích thƣớc bảng thƣ mục gốc & đƣa vào vùng đệm các giá trị tƣơng ứng với các entry trống. • Bƣớc 6: Ghi vùng đệm trên vào vị trí lƣu trữ bảng thƣ mục gốc của đĩa. 2.3.2 Định dạng đĩa theo kiến trúc FAT12 /FAT16 . -Bước 1: Đọc BootSector để xác định các thông số SB, SF, nF, SR. . -Bước 2: Đọc bảng FAT vào mảng aFAT trên bộ nhớ. . -Bước 3: Gán giá trị FREE (giá trị 0) vào các phần tử có giá trị khác BAD (FF7 với FAT12 hoặc FFF7 với FAT16) trên mảng aFAT. . -Bước 4: Lƣu lại mảng aFAT trên vào nF bảng FAT trên đĩa (lưu vào SF sector bắt đầu tại sector SB, nếu nF > 1 thì lưu tiếp vào các vị trí SB + SF , SB + 2*SF , , SB + (nF-1)*SF ) . -Bước 5: Tạo 1 vùng đệm kích thƣớc SR (byte) có nội dung các byte đều là 0. . -Bước 6: Lƣu lại vùng đệm trên vào bảng RDET trên đĩa (lưu vào SR sector bắt đầu tại sector (SB + nF*SF ) ) 3. Đọc nội dung tập tin trên Đĩa 3.1 Khái niệm Đây là thao tác truy xuất đĩa đƣợc thực hiện nhiều nhất, cũng là thao tác thƣờng 27
- xuyên của hệ thống máy tính. Mà tốc độ truy xuất bộ nhớ ngoài (nơi chứa tập tin) chậm hơn nhiều so với bộ nhớ trong, do đó để tăng tốc độ hoạt động của máy tính – đồng thời để có thể bảo mật dữ liệu, kiểm chứng sự hợp lý, đề kháng với các sự cố có thể gây hƣ hỏng, – khi truy xuất tập tin ngƣời ta thƣờng dùng tới nhiều hệ thống Cache, nhiều kỹ thuật tối ƣu & các xử l ý khác. Tuy nhiên để có thể dễ dàng hơn cho việc nắm đƣợc một cách cơ bản tổ chức lƣu trữ tập tin & cơ chế hoạt động của hệ thống quản l ý tập tin, các thuật giải đƣợc trình bày sau đây chỉ nêu cách giải quyết cơ bản, chân phƣơng nhất - không quan tâm nhiều đến việc tối ƣu & các xử l ý nâng cao khác. Ta đã biết về cơ bản có 2 loại tập tin khác nhau: tập tin bình thƣờng và tập tin thƣ mục (còn gọi là thƣ mục con). Cho nên trƣớc mắt có thể thấy có 2 thao tác khác nhau: đọc nội dung tập tin bình thƣờng & đọc nội dung bảng thƣ mục con (tức nội dung tập tin thƣ mục). Nhƣng thật ra 1 tập tin bình thƣờng cũng nhƣ 1 thƣ mục cũng có thể nằm trong 1 thƣ mục con nào đó, vì vậy có thể phân ra tới 4 thao tác tƣơng đối riêng biệt: đọc nội dung 1 tập tin bình thƣờng ở thƣ mục gốc của đĩa, đọc nội dung 1 thƣ mục con nằm ở thƣ mục gốc của đĩa, đọc nội dung 1 tập tin bình thƣờng ở 1 thƣ mục con của đĩa, và đọc nội dung 1 thƣ mục con nằm trong 1 thƣ mục con nào đó của đĩa. 3.2 Đọc nội dung tập tin ở thư mục gốc của đĩa 3.2.1 Thuật giải: (Đầu vào: tên đĩa, tên tập tin cần lấy nội dung; Đầu ra: nội dung của tập tin) • Bƣớc 1: Đọc BootSector của đĩa để xác định các thông số cần thiết (vị trí & kích thước của bảng thư mục gốc & bảng quản l ý cluster, kích thước cluster, vị trí bắt đầu của vùng dữ liệu, ) • Bƣớc 2: Đọc bảng thƣ mục gốc vào bộ nhớ. • Bƣớc 3: Tìm trên bảng thƣ mục gốc vừa đọc entry có phần tên giống với tên tập tin cần lấy nội dung (nếu không có thì thông báo tập tin không tồn tại & thoát). • Bƣớc 4: Đọc bảng quản l ý cluster vào bộ nhớ. • Bƣớc 5: Từ nội dung bảng quản l ý cluster vừa đọc & thông tin của entry tìm đƣợc ở bƣớc 3 suy ra danh sách những cluster chứa nội dung tập tin. • Bƣớc 6: Đọc những cluster tƣơng ứng với danh sách trên & ghép các nội dung đọc đƣợc lại theo đúng thứ tự đó ta đƣợc nội dung tập tin (riêng phần nội dung trên cluster cuối chỉ lấy N byte, với N = MOD ). 3.2.2 Đọc nội dung tập tin ở thư mục gốc của đĩa có kiến trúc FAT12 /FAT16 . -Bước 1: Đọc BootSector để xác định các thông số SB, SF, SR, SC, SS. . -Bước 2: Đọc bảng RDET vào bộ nhớ. . -Bước 3: Tìm trên bảng RDET vừa đọc entry có phần tên giống với tên tập tin cần lấy nội dung (nếu không có thì thông báo tập tin không tồn tại & thoát). . -Bước 4: Đọc bảng FAT vào mảng aFAT trên bộ nhớ. . -Bước 5: Từ chỉ số cluster bắt đầu f1 trong entry tìm đƣợc ở bƣớc 3 xác định dãy các phần tử kế tiếp f2, f3, f4 , theo công thức fi+1= aFAT [ fi ] cho đến khi gặp chỉ số fN có aFAT[ fN ] = EOF. . -Bước 6: Đọc những cluster f1, f2, f3 , , fN & ghép các nội dung đọc đƣợc lại theo đúng thứ tự đó ta đƣợc nội dung tập tin (riêng phần nội dung trên cluster fN chỉ lấy M byte, với M = MOD SC ). 3.3 Đọc nội dung một thư mục con ở thư mục gốc của đĩa Việc sử dụng nội dung tập tin bình thƣờng và nội dung của tập tin thƣ mục là hoàn toàn khác nhau. Nhƣng nếu tổ chức lƣu trữ tập tin thƣ mục giống nhƣ tập tin bình thƣờng thì việc đọc nội dung bảng thƣ mục con cũng sẽ giống nhƣ đọc nội dung tập tin bình thƣờng. Riêng đối với đĩa đƣợc tổ chức theo cấu trúc FAT12 /FAT16 thì phần nội dung tập tin thƣ mục trên cluster cuối cùng đƣợc sử dụng hết chứ không nhƣ tập tin bình thƣờng có thể chỉ 28
- chiếm 1 phần. Và cũng vì vậy trƣờng trong entry của tập tin thƣ mục sẽ không đƣợc sử dụng (luôn đƣợc gán là 0), dù bảng thƣ mục có kích thƣớc bao nhiêu đi nữa. 3.4 Đọc nội dung tập tin trong một thư mục con của đĩa Entry chứa các thông tin về tập tin cần đọc sẽ nằm trong bảng thƣ mục con của thƣ mục chứa tập tin đó. Có thể thấy một vấn đề trƣớc tiên là thƣ mục con chứa tập tin có thể đang nằm trong 1 thƣ mục con khác, và thƣ mục con này lại có thể nằm trong 1 thƣ mục con khác nữa. Nhƣ vậy để đọc đƣợc nội dung tập tin trƣớc tiên ta phải xác định đƣờng dẫn đến nơi chứa tập tin (là một dãy các thƣ mục con mà thƣ mục trƣớc là cha của thƣ mục sau), từ đƣờng dẫn này ta sẽ lần lƣợt đọc & phân tích các bảng thƣ mục con để cuối cùng có đƣợc bảng thƣ mục con của thƣ mục chứa tập tin. Giả sử các thƣ mục con trong đƣờng dẫn đƣợc gọi theo thứ tự là thƣ mục con cấp 1, thƣ mục con cấp 2, thì hình thức để xác định nội dung của bảng thƣ mục con cấp N là: . -Tìm entry tƣơng ứng với thƣ mục con cấp 1 trong bảng thƣ mục gốc và suy đƣợc nội dung của tập tin này (bảng thƣ mục con cấp 1). . -Tìm entry tƣơng ứng với thƣ mục con cấp 2 trong bảng thƣ mục con cấp 1 trên và suy đƣợc nội dung của tập tin thƣ mục con cấp 2 (bảng thƣ mục con cấp 2). o -Tìm entry tƣơng ứng với thƣ mục con cấp 3 trong bảng thƣ mục con cấp 2 trên và suy đƣợc nội dung của tập tin thƣ mục con cấp 3 (bảng thƣ mục con cấp 3) . -Tìm entry tƣơng ứng với thƣ mục con cấp N trong bảng thƣ mục con cấp (N-1) trên và suy đƣợc nội dung của tập tin thƣ mục con cấp N (bảng thƣ mục con cấp N) 3.4.1 Thuật giải: (Đầu vào: tên đĩa, đƣờng dẫn & tên tập tin cần lấy nội dung; Đầu ra: nội dung tập tin ) • Bƣớc 0: Phân tích đƣờng dẫn để xác định số cấp (giả sử là N) & tên của các thƣ mục con ở các cấp. • Bƣớc 1: Đọc BootSector của đĩa để xác định các thông số cần thiết (vị trí & kích thước của bảng thư mục gốc & bảng quản l ý cluster, kích thước cluster, vị trí bắt đầu của vùng dữ liệu, ) • Bƣớc 2: Đọc bảng thƣ mục gốc vào bộ nhớ. • Bƣớc 3: Đọc bảng quản l ý cluster vào bộ nhớ. • Bƣớc 4: Bắt đầu từ bảng thƣ mục gốc lần lƣợt suy ra các bảng thƣ mục con ở các cấp kế tiếp & cuối cùng đƣợc bảng thƣ mục con chứa entry của tập tin (thƣ mục con cấp N) • Bƣớc 5: Tìm trên bảng thƣ mục hiện tại entry có phần tên giống với tên tập tin cần lấy nội dung (nếu không có thì thông báo tập tin không tồn tại & thoát). • Bƣớc 6: Từ nội dung bảng quản l ý cluster đã đọc ở bƣớc 3 & thông tin của entry tìm đƣợc ở bƣớc trên suy ra danh sách những cluster chứa nội dung của tập tin. • Bƣớc 7: Đọc những cluster tƣơng ứng với danh sách trên & ghép các nội dung đọc đƣợc lại theo đúng thứ tự đó ta đƣợc nội dung tập tin (riêng phần nội dung trên cluster cuối chỉ lấy N byte, với N = MOD ). Thuật giải chi tiết cho Bước 4: • Bƣớc 4.1: K = 1. • Bƣớc 4.2: Tìm trên bảng thƣ mục hiện tại entry có phần tên giống với tên thƣ mục con cấp K (nếu không có thì thông báo đường dẫn sai & thoát). • Bƣớc 4.3: Từ nội dung bảng quản l ý cluster đã đọc ở bƣớc 3 & thông tin của entry tìm đƣợc ở bƣớc trên suy ra danh sách những cluster chứa nội dung tập tin thƣ mục con cấp K. • Bƣớc 4.4: Đọc những cluster tƣơng ứng với danh sách trên & ghép các nội dung đọc đƣợc lại theo đúng thứ tự đó ta đƣợc nội dung bảng thƣ mục con của thƣ mục cấp K. 29
- • Bƣớc 4.5: Gán bảng thƣ mục hiện tại là bảng thƣ mục con trên • Bƣớc 4.6: Nếu K MOD SC ). Ghi chú: Ta cũng có thể kết hợp các bước 5,6,7 vào bước 4. 3.5 Đọc nội dung thư mục trong một thư mục con của đĩa Bài toán này đã đƣợc giải quyết ở chức năng kế trƣớc (bằng cách thực hiện từ đầu cho đến hết bƣớc 4). 4. Lƣu giữ tập tin vào Đĩa 4.1 Khái niệm Sau thao tác đầu tiên là định dạng đĩa, chức năng kế tiếp có ảnh hƣởng đến nội dung lƣu trữ trên đĩa là đƣa tập tin vào đĩa, chức năng này sẽ đƣợc thực hiện nhiều lần trong quá trình sử dụng đĩa. Việc đƣa 1 tập tin vào đĩa cụ thể là chép 1 tập tin từ nơi khác vào đĩa, tạo 1 tập tin trên đĩa, hoặc tạo 1 thƣ mục con trên đĩa. Khi đĩa đang ở trạng thái trống thì các thao tác đó chỉ có thể thực hiện trên thƣ mục gốc của đĩa, nhƣng khi đĩa đã có thƣ mục con thì những thao tác trên có thể thực hiện trong 1 thƣ mục con nào đó của đĩa. Ta có thể phân ra 4 thao tác tƣơng đối riêng biệt: đƣa 1 tập tin bình thƣờng vào thƣ mục gốc của đĩa, tạo 1 thƣ mục con ở thƣ mục gốc của đĩa, đƣa 1 tập tin bình thƣờng vào 1 thƣ mục con nào đó của đĩa, tạo 1 thƣ mục con trong 1 thƣ mục con nào đó của đĩa. 4.2 Đưa 1 tập tin bình thường vào thư mục gốc của đĩa 4.2.1 Thuật giải: (Đầu vào: tên đĩa, tên & các thuộc tính của tập tin, nội dung tập tin; Đầu ra: tên, các thuộc tính & nội dung tập tin đƣợc lƣu vào đĩa theo đúng cấu trúc lƣu trữ đã thiết kế - không ảnh hƣởng đến các nội dung đang có sẵn trên đĩa) • Bƣớc 1: Đọc BootSector của đĩa để xác định các thông số cần thiết (vị trí & kích thước của bảng thư mục gốc & bảng quản l ý cluster, kích thước cluster, vị trí bắt đầu của vùng dữ liệu, ) • Bƣớc 2: Đọc bảng thƣ mục gốc vào bộ nhớ. • Bƣớc 3: Tìm trên bảng thƣ mục gốc vừa đọc 1 entry trống (nếu không có thì thông báo hết chỗ lưu trữ & thoát). • Bƣớc 4: Từ kích thƣớc tập tin & kích thƣớc cluster xác định số cluster N mà tập tin phải chiếm (= / ) • Bƣớc 5: Đọc bảng quản l ý cluster vào bộ nhớ. 30
- • Bƣớc 6: Tìm trên bảng N phần tử tƣơng ứng với trạng thái cluster trống (nếu không có đủ N phần tử thì thông báo không đủ dung lượng trống để lưu nội dung tập tin & thoát) • Bƣớc 7: Điều chỉnh lại giá trị N phần tử trên thành trạng thái của cluster chứa nội dung tập tin (theo đúng thứ tự đó) • Bƣớc 8: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 3 tên & các thuộc tính của tập tin. • Bƣớc 9: Lƣu lại entry vừa điều chỉnh vào bảng thƣ mục gốc của đĩa. • Bƣớc 10: Lƣu lại bảng quản lý cluster vào đĩa. • Bƣớc 11: Phân nội dung tập tin ra thành những phần có kích thƣớc bằng kích thƣớc cluster và lƣu chúng vào N cluster tƣơng ứng với N phần tử tìm đƣợc ở bƣớc 6. 4.2.2 Đưa một tập tin vào thư mục gốc của đĩa có kiến trúc FAT12 /FAT16 . -Bước 1: Đọc BootSector để xác định các thông số SB, SF, nF, SR, SC, SS. . -Bước 2: Đọc bảng RDET vào bộ nhớ. . -Bước 3: Tìm trên bảng RDET vừa đọc 1 entry trống (nếu không có thì thông báo hết chỗ lưu trữ & thoát). . -Bước 4: Xác định số cluster N mà tập tin sẽ chiếm ( N= /SC). . -Bước 5: Đọc bảng FAT vào mảng aFAT trên bộ nhớ. . -Bước 6: Tìm trên mảng aFAT N phần tử f1, f2, , fN có giá trị 0 (nếu không có đủ N phần tử thì thông báo không đủ dung lượng trống để lưu nội dung tập tin & thoát). . -Bước 7: Điều chỉnh lại giá trị N phần tử trên theo công thức: aFAT [ fi ] = fi+1, với i từ 1 đến (n-1), và aFAT [ fN ] = EOF. . -Bước 8: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 3 tên & các thuộc tính của tập tin (trƣờng cluster bắt đầu đƣợc gán giá trị f1) . -Bước 9: Lƣu lại entry vừa điều chỉnh vào RDET của đĩa. . -Bước 10: Lƣu lại mảng aFAT trên vào nF bảng FAT trên đĩa. . -Bước 11: Phân vùng nội dung tập tin ra thành những đoạn có kích thƣớc bằng SC và lƣu chúng vào các cluster tƣơng ứng mang chì số f1, f2, , fN trên vùng DATA. 4.3 Tạo 1 thư mục con ở thư mục gốc của đĩa 4.3.1 Thuật giải: (Đầu vào: tên đĩa, tên & các thuộc tính của thƣ mục; Đầu ra: một thƣ mục rỗng đƣợc tạo ra trên thƣ mục gốc của đĩa theo đúng cấu trúc lƣu trữ đã thiết kế - không ảnh hƣởng đến các nội dung đang có sẵn trên đĩa) • Bƣớc 1: Đọc BootSector của đĩa để xác định các thông số cần thiết • Bƣớc 2: Đọc bảng thƣ mục gốc vào bộ nhớ. • Bƣớc 3: Tìm trên bảng thƣ mục gốc vừa đọc 1 entry trống. • Bƣớc 4: Đọc bảng quản l ý cluster vào bộ nhớ. • Bƣớc 5: Tìm trên bảng 1 phần tử tƣơng ứng với trạng thái cluster trống. • Bƣớc 6: Điều chỉnh lại giá trị phần tử trên thành trạng thái của cluster chứa nội dung tập tin (và là cluster cuối) • Bƣớc 7: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 3 tên & các thuộc tính của tập tin thƣ mục. • Bƣớc 8: Lƣu lại entry vừa điều chỉnh vào bảng thƣ mục gốc của đĩa. • Bƣớc 9: Lƣu lại phần tử vừa điều chỉnh ở bƣớc 6 vào bảng quản lý cluster của đĩa. • Bƣớc 10: Tạo 1 vùng đệm có kích thƣớc bằng kích thƣớc cluster và đƣa vào 31
- vùng đệm nội dung của bảng thƣ mục con tƣơng ứng với 1 thƣ mục rỗng • Bƣớc 11: Lƣu vùng đệm trên vào cluster tƣơng ứng với phần tử tìm đƣợc ở bƣớc 6. 4.3.2 Tạo 1 thư mục con trên thư mục gốc của đĩa có kiến trúc FAT12 /FAT16 . -Bước 1: Đọc BootSector để xác định các thông số SB, SF, nF, SR, SC, SS. . -Bước 2: Đọc bảng RDET vào bộ nhớ. . -Bước 3: Tìm trên bảng RDET vừa đọc 1 entry trống. . -Bước 4: Đọc bảng FAT vào bộ nhớ. . -Bước 5: Tìm trên bảng FAT vừa đọc 1 phần tử C mang giá trị 0. . -Bước 6: Điều chỉnh lại giá trị phần tử trên thành EOF. . -Bước 7: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 3 tên & các thuộc tính của tập tin (trƣờng cluster bắt đầu đƣợc gán giá trị là C) . -Bước 8: Lƣu lại entry vừa điều chỉnh vào RDET của đĩa. . -Bước 9: Lƣu lại phần tử vừa điều chỉnh ở bƣớc 6 vào các bảng FAT của đĩa. . -Bước 10: Tạo 1 vùng đệm có kích thƣớc bằng SC và đƣa vào vùng đệm nội dung của bảng thƣ mục con tƣơng ứng với 1 thƣ mục rỗng (2 entry đầu có tên là “.” và “ ”, các entry còn lại đều mang giá trị 0. . -Bước 11: Lƣu vùng đệm vào cluster C của đĩa. 4.4 Đưa 1 tập tin bình thường vào 1 thư mục con của đĩa 4.4.1 Thuật giải: (Đầu vào: tên đĩa, đƣờng dẫn đến nơi chứa tập tin, tên & các thuộc tính của tập tin, nội dung tập tin; Đầu ra: tên, các thuộc tính & nội dung tập tin đƣợc lƣu vào đĩa đúng chỗ & đúng cấu trúc lƣu trữ đã thiết kế - không ảnh hƣởng đến các nội dung đang có sẵn trên đĩa) • Bƣớc 0: Phân tích đƣờng dẫn để xác định số cấp (giả sử là N) & tên của các thƣ mục con ở các cấp. • Bƣớc 1: Đọc BootSector của đĩa để xác định các thông số cần thiết (vị trí & kích thước của bảng thư mục gốc & bảng quản l ý cluster, kích thước cluster, vị trí bắt đầu của vùng dữ liệu, ) • Bƣớc 2: Đọc bảng thƣ mục gốc vào bộ nhớ. • Bƣớc 3: Đọc bảng quản l ý cluster vào bộ nhớ. • Bƣớc 4: Bắt đầu từ bảng thƣ mục gốc lần lƣợt suy ra các bảng thƣ mục con ở các cấp kế tiếp & cuối cùng đƣợc bảng thƣ mục con chứa entry của tập tin (thƣ mục con cấp N) • Bƣớc 5: Tìm trên bảng thƣ mục cấp N trên 1 entry trống (nếu không có thì nối thêm 1 cluster trống vào nội dung bảng thư mục trên).* • Bƣớc 6: Từ kích thƣớc tập tin & kích thƣớc cluster xác định số cluster N mà tập tin phải chiếm (= / ) • Bƣớc 7: Tìm trên bảng quản lý cluster đọc đƣợc ở bƣớc 3 N phần tử tƣơng ứng với trạng thái cluster trống (nếu không có đủ N phần tử thì thông báo không đủ dung lượng trống để lưu nội dung tập tin & thoát) • Bƣớc 8: Điều chỉnh lại giá trị N phần tử trên thành trạng thái của cluster chứa nội dung tập tin (theo đúng thứ tự đó) • Bƣớc 9: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 5 tên & các thuộc tính của tập tin. • Bƣớc 10: Lƣu lại entry vừa điều chỉnh vào bảng thƣ mục con cấp N trên. • Bƣớc 11: Lƣu lại bảng quản lý cluster vào đĩa. 32
- • Bƣớc 12: Phân nội dung tập tin ra thành những phần có kích thƣớc bằng kích thƣớc cluster và lƣu chúng vào N cluster tƣơng ứng với N phần tử tìm đƣợc ở bƣớc 6. 4.4.2 Đưa một tập tin vào 1 thư mục con của đĩa có kiến trúc FAT12 /FAT16 . -Bước 0: Phân tích đƣờng dẫn để xác định số cấp N & tên các thƣ mục con ở các cấp. . -Bước 1: Đọc BootSector để xác định các thông số SB, SF, SR, SC, SS. . -Bước 2: Đọc bảng RDET vào bộ nhớ. . -Bước 3: Đọc bảng FAT vào mảng aFAT trên bộ nhớ. . -Bước 4: Bắt đầu từ RDET lần lƣợt suy ra các SDET ở các cấp kế tiếp cho đến khi đƣợc SDET của thƣ mục con cấp N . -Bước 5: Tìm trên bảng SDET trên 1 entry trống (nếu không có thì nối thêm 1 cluster trống vào nội dung bảng thư mục trên). . -Bước 6: Xác định số cluster N mà tập tin sẽ chiếm ( N= /SC). . -Bước 7: Tìm trên mảng aFAT N phần tử f1, f2, , fN có giá trị 0 (nếu không có đủ N phần tử thì thông báo không đủ dung lượng trống để lưu nội dung tập tin & thoát). . -Bước 8: Điều chỉnh lại giá trị N phần tử trên theo công thức: aFAT [ fi ] = fi+1, với i từ 1 đến (n-1), và aFAT [ fN ] = EOF. . -Bước 9: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 5 tên & các thuộc tính của tập tin (trƣờng cluster bắt đầu đƣợc gán giá trị f1) . -Bước 10: Lƣu lại entry vừa điều chỉnh vào SDET của thƣ mục con cấp N trên. . -Bước 11: Lƣu lại mảng aFAT trên vào nF bảng FAT trên đĩa. . -Bước 12: Phân vùng nội dung tập tin ra thành những đoạn có kích thƣớc bằng SC và lƣu chúng vào các cluster tƣơng ứng mang chì số f1, f2, , fN trên vùng DATA. 4.5 Tạo một thư mục trong một thư mục con có sẵn 4.5.1 Thuật giải: (Đầu vào: tên đĩa, đƣờng dẫn đến nơi thƣ mục con có sẵn, tên & các thuộc tính của thƣ mục con cần tạo; Đầu ra: một thƣ mục rỗng đƣợc tạo ra trong thƣ mục con đã chỉ ra theo đúng cấu trúc lƣu trữ đã thiết kế - không ảnh hƣởng đến các nội dung đang có sẵn trên đĩa) • Bƣớc 0: Phân tích đƣờng dẫn để xác định số cấp (giả sử là N) & tên của các thƣ mục con ở các cấp. • Bƣớc 1: Đọc BootSector của đĩa để xác định các thông số cần thiết (vị trí & kích thước của bảng thư mục gốc & bảng quản l ý cluster, kích thước cluster, vị trí bắt đầu của vùng dữ liệu, ) • Bƣớc 2: Đọc bảng thƣ mục gốc vào bộ nhớ. • Bƣớc 3: Đọc bảng quản l ý cluster vào bộ nhớ. • Bƣớc 4: Bắt đầu từ bảng thƣ mục gốc lần lƣợt suy ra các bảng thƣ mục con ở các cấp kế tiếp & cuối cùng đƣợc bảng thƣ mục con chứa entry của tập tin (thƣ mục con cấp N) • Bƣớc 5: Tìm trên bảng thƣ mục hiện tại 1 entry trống. • Bƣớc 6: Tìm trên bảng quản lý cluster 1 phần tử tƣơng ứng với trạng thái cluster trống. • Bƣớc 7: Điều chỉnh lại giá trị phần tử trên thành trạng thái của cluster chứa nội dung tập tin (và là cluster cuối) • Bƣớc 8: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 5 tên & các thuộc tính của tập tin thƣ mục. • Bƣớc 9: Lƣu lại entry vừa điều chỉnh vào bảng thƣ mục con hiện tại. 33
- • Bƣớc 10: Lƣu lại phần tử vừa điều chỉnh ở bƣớc 7 vào bảng quản l ý cluster của đĩa. • Bƣớc 11: Tạo 1 vùng đệm có kích thƣớc bằng kích thƣớc cluster và đƣa vào vùng đệm nội dung của bảng thƣ mục con tƣơng ứng với 1 thƣ mục rỗng • Bƣớc 12: Lƣu vùng đệm trên vào cluster tƣơng ứng với phần tử tìm đƣợc ở bƣớc 6. 4.5.2 Tạo thư mục trong 1 thư mục con của đĩa có kiến trúc FAT12 /FAT16 . -Bước 0: Phân tích đƣờng dẫn để xác định số cấp N & tên các thƣ mục con ở các cấp. . -Bước 1: Đọc BootSector để xác định các thông số SB, SF, SR, SC, SS. . -Bước 2: Đọc bảng RDET vào bộ nhớ. . -Bước 3: Đọc bảng FAT vào mảng aFAT trên bộ nhớ. . -Bước 4: Bắt đầu từ RDET lần lƣợt suy ra các SDET ở các cấp kế tiếp cho đến khi đƣợc SDET của thƣ mục con cấp N . -Bước 5: Tìm trên bảng SDET trên 1 entry trống (nếu không có thì nối thêm 1 cluster trống vào nội dung bảng thư mục trên). . -Bước 6: Tìm trên mảng aFAT vừa đọc 1 phần tử C mang giá trị 0. . -Bước 7: Điều chỉnh lại giá trị phần tử trên thành EOF. . -Bước 8: Đƣa vào entry thƣ mục tìm đƣợc ở bƣớc 5 tên & các thuộc tính của tập tin (trƣờng cluster bắt đầu đƣợc gán giá trị là C) . -Bước 9: Lƣu lại entry vừa điều chỉnh vào SDET của thƣ mục con cấp N trên. . -Bước 10: Lƣu lại phần tử vừa điều chỉnh ở bƣớc 7 vào các bảng FAT của đĩa. . -Bước 11: Tạo 1 vùng đệm có kích thƣớc bằng SC và đƣa vào vùng đệm nội dung của bảng thƣ mục con tƣơng ứng với 1 thƣ mục rỗng (2 entry đầu có tên là “.” và “ ”, các entry còn lại đều mang giá trị 0. . -Bước 11: Lƣu vùng đệm vào cluster C của đĩa. IV. Phục hồi nguyên trang khi bị xoá nhầm hoặc format nhầm . 1. Cứu dữ liệu bị mất Khi bạn xóa một tập tin hay thƣ mục nào đó trong hệ thống, thực chất lệnh này chỉ đánh dấu "đã xóa" trong Directory Entry và những thông tin liên quan trong File Allocation Table - FAT (với phân vùng định dạng FAT/FAT32) hoặc đánh dấu "xoá” trong Master File Table - MFT Entry (với phân vùng định dạng NTFS). Lúc này, các vùng (cluster) chứa dữ liệu của tập tin xem nhƣ trống và đƣợc tính là dung lƣợng chƣa dùng đến của đĩa cứng mặc dù dữ liệu vẫn tồn tại. Khi dữ liệu mới đƣợc ghi vào, lúc này dữ liệu cũ mới thực sự bị xóa đi và ghi đè bằng dữ liệu mới. Chúng ta (và cả hệ điều hành) đều không thể "nhìn" thấy đƣợc những dữ liệu bị đánh dấu xóa nhƣng những phần mềm cứu dữ liệu vẫn nhìn thấy chúng khi quét qua bề mặt đĩa. Vì vậy chúng ta mới cần đến những phần mềm này trong việc khôi phục dữ liệu. Có rất nhiều phần mềm giúp bạn thực hiện việc này, từ miễn phí cho đến có phí nhƣ Ontrack Easy Recovery, Winternals Disk Commander, Active Uneraser, PC Inspector File Recovery, Drive Rescue Mỗi phần mềm đều có những điểm mạnh - yếu riêng, nhƣng nhìn chung, khả năng "cứu hộ" tùy thuộc rất nhiều vào cấu trúc dữ liệu trên đĩa cứng và những thao tác có ảnh hƣởng đến các vùng dữ liệu. 2. Cấu trúc dữ liệu trên đĩa Trƣớc tiên, chúng ta cùng tham khảo qua cách thức thông tin của một tập tin đƣợc lƣu trữ trên đĩa cứng. Với phân vùng FAT, dữ liệu đƣợc lƣu trữ tại 3 nơi trên đĩa cứng, bao gồm: Directory Entry chứa thông tin về tập tin gồm tên, dung lƣợng, thời gian tạo và số hiệu cluster đầu tiên chứa dữ liệu của tập tin; FAT chứa số hiệu các cluster đƣợc sử dụng cho 34
- tập tin và các cluster chứa dữ liệu của tập tin (vùng Allocation). Với phân vùng NTFS, dữ liệu đƣợc lƣu trữ trong MFT (Master File Table) Entry và vùng Allocation (hình minh họa). Bất kỳ phần mềm cứu dữ liệu nào cũng cố gắng tìm lại những thông tin từ 3 nơi này để có thể khôi phục đầy đủ nội dung của một tập tin, nếu thiếu (hoặc mất) một trong những thông tin này, dữ liệu không toàn vẹn hoặc không thể khôi phục (xem bảng). Nhƣ vậy, xem xét các trƣờng hợp trên thì khả năng khôi phục dữ liệu thƣờng khá thấp. Trƣờng hợp các cluster của Allocation bị hỏng hoặc bị chép đè, bạn hầu nhƣ không thể khôi phục đƣợc vì dữ liệu đã bị xóa và chép đè bởi dữ liệu mới. Về lý thuyết, bạn vẫn có thể lấy lại dữ liệu cũ với kỹ thuật MFM (Magnetic Force Microscope) tuy nhiên kỹ thuật này không đƣợc áp dụng rộng rãi trên thực tế vì mất nhiều thời gian và chi phí rất cao. Directory Allocation FAT Entry Tập tin đƣợc khôi phục đầy đủ Tập tin đƣợc khôi phục nhƣng có thể nội dung - không đầy đủ hoặc không thể đọc đƣợc. - Tập tin có thể đƣợc khôi phục nhƣng không đầy đủ thông tin - - Không thể khôi phục dù vẫn có thể nhìn thấy tên của tập tin. - - - - Không thể khôi phục và không còn dấu vết của - - - tập tin Allocation MFT Tập tin đƣợc khôi phục đầy đủ Tập tin có thể đƣợc khôi phục nhƣng không đầy đủ - thông tin Không thể khôi phục dù vẫn có thể nhìn thấy tên của tập - tin. - - Không thể khôi phục và không còn dấu vết của tập tin 3. Khả năng phục hồi dữ liệu - Tập tin bị xóa: Nhƣ đã đề cập ở trên, việc xóa tập tin sẽ đánh dấu xóa trong Director Entry và những thông tin liên quan trong bảng FAT hoặc MFT Entry. Về lý thuyết, khả năng khôi phục đầy đủ tập tin này là cao. Tuy nhiên, kết quả thực tế đôi khi không đƣợc nhƣ mong đợi vì một số nguyên nhân: sau khi xóa, ngƣời dùng cố gắng thực hiện một số thao tác nhằm lấy lại dữ liệu, HĐH ghi đè dữ liệu mới vào các cluster đƣợc đánh dấu xóa - Phân vùng bị xóa (hoặc tạo lại) nhƣng chƣa định dạng (format): Hầu hết dữ liệu đều có thể khôi phục đƣợc trong trƣờng hợp này vì FAT và MFT không bị ảnh hƣởng khi ngƣời dùng xóa và tạo mới phân vùng. 35
- - Phân vùng bị format: Với phân vùng FAT, việc định dạng sẽ xóa bảng FAT, Boot Record và thƣ mục gốc (Root Directory) nhƣng Partition Table và dữ liệu trong Allocation vẫn còn. Những tập tin có dung lƣợng nhỏ hơn kích thƣớc một cluster (32KB, mặc định của FAT32 hoặc theo tùy chọn của bạn khi định dạng), tập tin đƣợc khôi phục hoàn toàn vì chúng không cần đến thông tin trong bảng FAT. Với những tập tin có dung lƣợng lớn, nhiều cluster liên tiếp nhau, chúng sẽ bị phân mảnh khi có sự thay đổi nội dung theo thời gian. Việc tìm và ráp các cluster có liên quan với nhau là công việc khó khăn, nhất là với những tập tin có dung lƣợng lớn và hay thay đổi. Một số phần mềm cứu dữ liệu có khả năng khôi phục mà không cần thông tin từ bảng FAT. tuy nhiên, nội dung những tập tin sau khi tìm lại sẽ không đầy đủ hoặc không thể đọc đƣợc. Vì vậy, bạn sẽ cần đến một phần mềm có khả năng trích xuất những nội dung còn đọc đƣợc từ những tập tin này (chúng tôi sẽ đề cập đến vấn đề này trong bài viết khác khi điều kiện cho phép). Với phân vùng NTFS, việc định dạng sẽ tạo MFT mới, tuy nhiên kết quả khôi phục sẽ tốt hơn phân vùng FAT vì NTFS không sử dụng bảng FAT để xác định các cluster chứa dữ liệu của cùng tập tin. - Phân vùng bị format và cài đè HĐH mới hoặc sử dụng Ghost: Trƣờng hợp này thực sự là khó khăn vì Directory Entry (FAT), MFT (NTFS) đã bị xóa. Giả sử bạn có 10GB dữ liệu lƣu trữ trên phân vùng 20GB, phân vùng này bị format và chép đè 5GB dữ liệu mới. Nhƣ vậy, bạn không thể khôi phục những dữ liệu đã bị chép đè mà chỉ có thể khôi phục dữ liệu từ 5GB trở về sau. 4.Một số lƣu ý Bạn có thể sử dụng bất cứ phần mềm nào trong "tầm với" của mình để cứu dữ liệu, tuy nhiên chúng tôi xin lƣu ý một vài điểm sau. - Một số phần mềm cho dùng thử và chỉ yêu cầu ngƣời dùng nhập số đăng ký (license key) khi sao lƣu những dữ liệu cần khôi phục. Vì vậy, bạn hãy tận dụng điều này thử qua một vài phần mềm để tìm ra phần mềm thích hợp nhất với loại dữ liệu của mình cần khôi phục. - Một số phần mềm cho phép tạo đĩa khởi động và làm việc trong chế độ MS-DOS. Tuy nhiên, bạn sẽ khó khăn hơn trong việc chọn lựa những dữ liệu cần khôi phục. Nếu có thể, hãy cài đặt phần mềm cứu dữ liệu trên một hệ thống khác và gắn ổ đĩa cần khôi phục vào khi đã sẵn sàng. Bạn sẽ dễ dàng làm việc hơn với những tập tin theo cấu trúc cây thƣ mục, xem qua nội dung những tập tin có thể khôi phục trƣớc khi mua license key. Lƣu ý: đừng lo lắng khi HĐH không nhận ra đĩa cứng cần khôi phục, phần mềm khôi phục sẽ làm việc này tốt hơn nếu trong BIOS Setup vẫn nhận dạng đƣợc ổ cứng này. - Tránh những thao tác ghi dữ liệu lên đĩa cứng cần khôi phục. Sau khi xóa, vị trí những cluster của tập tin không đƣợc bảo vệ, sẵn sàng cho việc ghi đè dữ liệu mới. Cả khi ngƣời dùng không tạo ra những tập tin mới, hoạt động của HĐH cũng ảnh hƣởng đến dữ liệu đã xóa khi tạo ra những tập tin nhật ký (log) ghi lại hoạt động của hệ thống, ngoài ra, việc truy cập Internet sẽ tải về khá nhiều tập tin tạm cũng đƣợc ghi trên đĩa cứng. Tốt nhất bạn nên ngừng ngay việc sử dụng ổ cứng này, chỉ gắn nó vào một hệ thống khác sau khi đã chuẩn bị sẵn sàng cho việc cứu dữ liệu. - Đừng chậm trễ khi cứu dữ liệu. Hãy hành động thật nhanh khi nhận thấy sai lầm của mình, bạn sẽ có nhiều cơ hội lấy lại đƣợc dữ liệu đã xoá mất. Ngoài ra, khả năng khôi phục phụ thuộc vào loại dữ liệu. Nếu là những tập tin hình, bạn có thể lấy lại đƣợc 9 trên 10 hình. Tuy nhiên, nếu là cơ sở dữ liệu (database), bảng biểu dù lấy lại đƣợc 90% nhƣng có thể chúng vẫn vô dụng vì cấu trúc cơ sở dữ liệu thƣờng có sự liên kết, phụ thuộc lẫn nhau. - Một đĩa cứng "chết" nếu BIOS hay tiện ích quản lý đĩa cứng không thể nhận dạng đƣợc. Ổ cứng chết thƣờng có những hiện tƣợng lạ nhƣ không nghe tiếng môtơ quay, phát ra những tiếng động lách cách khi hoạt động Đây là những hỏng hóc vật lý của bo mạch điều khiển, đầu đọc, môtơ, đĩa từ Hãy cố gắng tạo bản sao ảnh của đĩa cứng với Norton Ghost, Drive 36