Thứ Bảy, 17 tháng 5, 2014

[File System Forensics]Công nghệ đĩa cứng

Đây là bài dịch trong cuốn File System Analysis

Nếu một digital investigator chỉ có thể học được một bộ phận phần cứng nào đó của máy tính, các đĩa cứng có thể là một lựa chon tốt nhất cho anh ta bởi vì các đĩa cứng là một trong những nguồn tài nguyên phổ biến dùng làm chứng cứ số. Trong phần này chúng ta sẽ thảo luận những điều cơ bản về đĩa cứng cũng như là những chủ đề được quan tâm bởi một investigator, ví dụ như là các phương thức truy xuất, write blocking, và những vị trí mà dữ liệu có thể ẩn được. Phần đầu tiên là một overview về cách một đĩa (disk) làm việc, và 2 phần tiếp theo sẽ đề cập tới các đĩa AT Attachment (ATA/IDE) và các đĩa Small Computer Systems Interface (SCSI).

Hình dạng đĩa cứng (Hard Disk Geometry) và ruột của nó (internals)

Ta cùng bắt đầu xem xét internals của tất cả các đĩa cứng hiện đại. Thông tin tìm được sẽ giúp ích cho ta khi tìm hiểu về cách dữ liệu được lưu và bởi vì các file systems cũ hơn và các cơ chế partitioning sử dụng hình dạng đĩa và các giá trị internal khác ẩn đi với các đĩa hiện đại. Do đó, biết về hình dạng đĩa sẽ giúp bạn hiểu một vài giá trị trong một file system. Mục đích của phần này không phải là giúp bạn sửa các đĩa cứng. Thay vào đó, mục đích là giúp bạn hiểu được các khái niệm cơ bản về những gì đang diễn ra phía bên trong.

Các đĩa cứng chứa một hay nhiều đĩa cứng hình tròn và được chồng lên nhau và tại quay cùng một thời điểm. Hình ảnh bên trong một đĩa có thể thấy phía bên dưới.
 
Hình 1 Phía bên trong của một ATA disk, bạn có thể thấy các đĩa phía bên phải và một cánh tay phía bên trái để đọc và ghi lên các đĩa



Đỉnh và đáy của mỗi đĩa được phủ lớp từ, và khi đĩa được sản xuất, các đĩa hoàn toàn trống rỗng.
Bên trong đĩa là một cánh tay (arm) di chuyển qua lại, và nó có một cái đầu (head) có thể đọc và ghi tại một thời điểm.

Một định dạng cấp độ thấp hơn được thực hiện trên các đĩa trống để tạo các cấu trúc dữ liệu cho các tracks và các sectors. Một track là một vòng tròn (circular ring) đi xung quanh đĩa. Mỗi track trên đĩa cứng có được một địa chỉ từ phía bên ngoài vào trong, bắt đầu từ 0. Ví dụ, nếu có 10,000 tracks trên mỗi đĩa, track phía bên ngoài của mỗi đĩa có thể là 0, và track phía bên trong (vòng tròn gần trung tâm nhất) có thể là 9,999. Bởi vì layout của mỗi đĩa là giống nhau và các tracks trên mỗi đĩa là địa chỉ giống nhau cho trước, thuật ngữ cylinder được sử dụng để mô tả tất cả các tracks tại một địa chỉ cho trước trên tất cả các đĩa. Ví dụ, cylinder 0 là track 0 trên đáy và đỉnh của tất cả các đĩa trong đĩa cứng. Các heads trong đĩa được cho một địa chỉ vì vậy chúng ta có thể nhận dạng duy nhất là đĩa nào và trên mặt nào của đĩa mà chúng ta muốn đọc hay ghi.

Mỗi track được chia thành các sectors, sector là đơn vị lưu trữ có thể đánh địa chỉ nhỏ nhất trong đĩa cứng và thường là 512 bytes. Mỗi sector được gán một địa chỉ, bắt đầu từ một cho mỗi track. Do đó, chúng ta có thể có được địa chỉ của một sector thông qua việc sử dụng cylinder address (C) để có được track, head number (H) để có được đĩa và phía (side), và sector address (S) để lấy được sector trong track. Bạn có thể nhìn hình 2 phía dưới.
 
 
Hình 2. Hình dạng đĩa của một platter chỉ ra track (hoặc cylinder) và sector addresses
 
 
Chúng ta sẽ thảo luận trong phần "Các kiểu địa chỉ của Sector" liên quan đến vấn đề địa chỉ CHS không còn được sử dụng như là phương thức đánh địa chỉ chính nữa. Logical Block Address (LBA) được sử dụng thay thế, và nó gán các địa chỉ có thứ tự cho mỗi sector. Địa chỉ LBA không có liên quan tới vị trí vật lý của nó.
 
Một sector có thể bị lỗi và do đó không còn được sử dụng để lưu trữ dữ liệu người dùng. Với các đĩa cũ hơn, trách nhiệm của hệ điều hành là biết vị trí của các bad sectors và không cấp phát các sectors này cho các files. Người dùng cũng có thể nói một cách thủ công cho đĩa biết các sectors nào cần lờ đi bởi vì chúng bị lỗi. Nhưng việc làm như vậy là không cần thiết, bởi vì các đĩa hiện đại có thể nhận dạng một bad sector và remap địa chỉ này tới một vị trí tốt ở một nơi nào đó trên đĩa. Người dùng không bao giờ biết điều đó xảy ra.
 
Mô tả trước đây về layout được đơn giản hóa. Trong thực tế, đĩa sắp xếp vị trí của các sectors sao cho đạt được hiệu năng cao nhất. Vì vậy, các sectors và các tracks có thể được bù trừ để có được thuận lợi về seek times và tốc độ của drive.
 
ATA / IDE Interface
 
ATA Attachment (ATA) interface là một interface đĩa cứng phổ biến nhất. Các đĩa sử dụng interface này thường được nhắc tới như là các đĩa IDE , nhưng IDE là viết tắt của Integrated Disk Electronics và nhận dạng một đĩa cứng mà có logic board được tích hợp sẵn trong nó, những gì mà các đĩa cũ không có. Interface thực sự mà các đĩa "IDE"  sử dụng là ATA. Phần này chúng ta đi vào các chi tiết liên quan tới ATA vì vậy chúng ta thảo luận các công nghệ, ví dụ như hardware write blockers và host protected areas.
 
Các thông số kĩ thuật ATA được phát triển bởi T13 Technical Committee (http://www.t13.org). Phiên bản của mỗi chi tiết kĩ thuật là có tính phí, nhưng các phiên bản dự thảo thì free có trên INCITS web site. Đối với mục đích học tập các phiên bản dự thảo là đủ.
 
Các đĩa ATA yêu cầu một controller, những gì được tích hợp sẵn trong moderboard của các hệ thống hiện đại. Controller yêu cầu các commands đến một hoặc 2 đĩa ATA sử dụng một ribbon cable. Cable có độ dài tối đa là 18 inches và có 40 pins, nhưng các đĩa mới hơn có them 40 dây mà không được kết nối tới bất cứ pin nào.
 
Một channel  là một interface data path giữa controller và các đĩa. Mỗi channel có thể có 2 đĩa, các thuật ngữ "master" và "slave" có thể sử dụng để gọi chúng, mặc dù cả 2 không có điều khiển lẫn nhau. Các đĩa ATA có thể được cấu hình như là master hoặc là slave sử dụng một physical jumper trên đĩa. Một vài đĩa có thể được cấu hình sử dụng "Cable Select", nơi mà chúng sẽ được gán như là master hoặc slave dựa trên plug nào mà chúng được gán trên ribbon cable. Hầu hết khách hàng có 2 channels và có thể hỗ trợ 4 ATA disks.
 
Các kiểu địa chỉ Sector
Để đọc và ghi dữ liệu, chúng ta cần đánh địa chỉ các sectors. Một sector đơn lẻ (single sector) sẽ được gán một địa chỉ mới sau mỗi lần partition, file system, hoặc file sử dụng nó. Địa chỉ mà chúng ta đang nhắc tới trong phần này là địa chỉ vật lý của nó. Địa chỉ vật lý của một sector là địa chỉ tương đối của nó sao với điểm bắt đầu của thiết bị vật lý.
 
Có 2 phương thức đánh địa chỉ vật lý khác nhau. Các đĩa cứng cũ hơn sử dụng hình dạng đĩa và phương thức CHS. Trong hình 2 chúng ta đã có nhắc tới phương thức này cũng như cách các địa chỉ cylinder và head được tổ chức.
 
Phương thức CHS nghe có vẻ khá tốt, nhưng thực tế là nó quá giới hạn và không được sử dụng nhiều. Các thông số kĩ thuật ban đầu của ATA sử dụng giá trị cylinder 16 bit, và gía trị 4 bit head , và 8-bit giá trị sector, nhưng các BIOS cũ hơn sử dụng giá trị cylinder có 10 bit, giá trị head 8 bit và giá trị sector 6 bit. Do đó, để giao tiếp với đĩa cứng thông qua BIOS, kích thước nhỏ nhất cho mỗi giá trị phải được sử dụng, những gì chỉ cho phép đĩa 504 MB.
 
Để "work around" với giới hạn 504MB này, các BIOS mới được phát triển mà có thể chuyển đổi (translate) các dải địa chỉ mà chúng thích tới các địa chỉ theo chuẩn của ATA. Ví dụ, nếu ứng dụng yêu cầu dữ liệu từ cylinder 8, head 4, và sector 32, BIOS có thể chuyển đổi và yêu cầu cylinder 26, head 2, sector 32 từ đĩa. Để cho việc chuyển đổi được thực hiện, BIOS sẽ phải report một hình dạng đĩa cứng mà khác với hình dạng tồn tại thực sự trên đĩa. Qúa trình chuyển đổi này sẽ không hoạt động cho các đĩa có dung lượng lớn hơn 8.1GB.
 
Các BIOS mà thực hiện việc chuyển đổi địa chỉ không còn phổ biến nữa, nhưng một investigator có thể sẽ phải đối mặt với những hệ thống này. Nếu anh ta lấy đĩa ra khỏi hệ thống và đặt nó vào trong hệ thống của anh ta, việc chuyển đổi có thể sẽ khác hoặc có thể không tồn tại. Và việc thu hồi hay dead analysis có thể không thực hiện được bởi vì các sectors sai sẽ được trả về. Để giải quyết vấn đề này, một investigator cần sử dụng hệ thống ban đầu hoặc tìm một hệ thống tương tự mà thực hiện việc chuyển đổi giống như hệ thống ban đầu. Một investigator có thể xác định nếu một hệ thống thực hiện việc chuyển đổi thông qua việc tìm kiếm phiên bản BIOS trên website nhà sản xuất hoặc thông qua việc tìm kiếm các thông tin liên quan trong BIOS.
 
Để khắc phục giới hạn 8.1 GB liên quan với sự chuyển đổi. Chúng ta chuyển qua sử dụng Logical Block Address (LBA) . LBA sử dụng một số đơn, bắt đầu từ 0, để đánh địa chỉ mỗi sector và đã được hỗ trợ từ thông số kĩ thuật ATA đầu tiên. Với LBA, software không cần biết bất cứ thứ gì về hình dạng; nó chỉ cần biết một số đơn. Hỗ trợ cho các địa chỉ CHS đã bị loại bỏ từ thông số kĩ thuật ATA trong ATA-6.
 
Không may mắn thay, một vài file system và các cấu trúc dữ liệu khác vẫn còn sử dụng địa chỉ CHS, vì vậy chúng ta cần phải chuyển đổi CHS sang LBA. Địa chỉ LBA 0 là địa chỉ CHS 0, 0, 1 và địa chỉ LBA 1 là địa chỉ CHS 0, 0, 2. Khi tất cả các sectors trong track được sử dụng, sector đầu tiên tại head tiếp theo trong cùng cylinder được sử dụng, đó là địa chỉ CHS 0, 1, 1. Bạn có thể hình dung đó là việc làm đầy vòng phía bên ngoài của đĩa cuối cùng, sau đó di chuyển lên các đĩa phía trên cho đến khi đạt đến đĩa trên đỉnh. Giải thuật chuyển đổi là
LBA = (((CYLINDER * heads_per_cylinder) + HEAD) * sectors_per_track) + SECTOR - 1
Trong đó bạn thay thế CYLINDER, HEAD, và SECTOR với các giá địa chỉ CHS tương ứng. Ví dụ, xét một đĩa mà có 16 heads trên một cylinder và 63 sectors trên một track. Nếu chúng ta có một địa chỉ CHS là cylinder 2, head 3, và sector 4, việc chuyển đổi qua LBA diễn ra như sau:
2208 = (((2 * 16) + 3) * 63) + 4 - 1
 
Các chuẩn Interface
Có rất nhiều thuật ngữ interface trong lĩnh vực đĩa cứng khách hàng, điều này có thể gây ra một chút nhầm lẫn. Một vài thuật ngữ có ý nghĩa giống nhau, thuật ngữ này dựa trên các tiêu chuẩn, thuật ngữ kia là do các công ty phần cứng đặt. Nói chung, các chuẩn mới thêm vào phương thức đọc và ghi nhanh hơn hoặc là chỉnh sửa các giới hạn về kích thước của các chuẩn phía trước.
 
Chú ý rằng các thông số kĩ thuật ATA chỉ áp dụng với các đĩa cứng. Removable media, ví dụ như CD-ROMs và ZIP disks, cần sử dụng một thông số kĩ thuật đặc biệt, được gọi là AT Attachment Packet Interface (ATAPI).  Các thiết bị ATAPI sử dụng các cables và controller giống nhau, nhưng chúng yêu cầu các drivers đặc biệt.
 
Đây là một vài thông số kĩ thuật đáng chú ý và giúp ích cho investigation:
  • ATA-1: Được công bố năm 1994. Thông số kĩ thuật này hỗ trợ CHS và 28-bit địa chỉ LBA.
  • ATA-3: Được công bố năm 1997 và được thêm vào các tính năng khả tín và bảo mật. Seft-Monitoring Analysis and Reporting Technology (SMART) được đưa ra, đây là công nghệ mà cố gắng tăng cường tính khả tín thông qua việc giám sát một vài phần của đĩa. Passwords cũng được đưa ra trong tiêu chuẩn này.
  • ATA/ATAPI-4: ATAPI, thông số kĩ thuật cho removable media, được tích hợp vào trong thông số kĩ thuật ATA trong ATA-4, được đưa ra vào năm 1998. Cable 80-dây được đưa ra để giúp giảm nhiễu. ATA-4 thêm vào HPA.
  • ATA/ATAPI-6: được đưa ra vào năm 2002, thêm vào các địa chỉ LBA 48-bit, loại bỏ hỗ trợ các địa chỉ CHS, thêm vào DCO
  • ATA/ATAPI-7: thông số kĩ thuật này vẫn còn là dạng bản thảo. Bản thảo này bao gồm serial ATA.
Disk Commands
Phần này cung cấp một overview về cách controller và đĩa cứng giao tiếp, điều này giúp ta khi thảo luận về hardware write protectors. Phần này không áp dụng cho các thiết bị ATAPI, ví dụ như CD-ROMs.
Controller phát ra các commands tới đĩa cứng thông qua ribbon cable. Các commands được phát tới cả hai đĩa trên cable, nhưng có một phần của command được dùng để nhận dạng nêú nó là master hay là slave. Controller giao tiếp với các đĩa cứng thong qua việc ghi vào các thanh ghi của nó, các thanh ghi này là những đoạn của bộ nhớ (pieces of memory). Các thanh ghi làm việc giống như một online order form ở đó controller ghi dữ liệu vào trong các thanh ghi giống như việc bạn điền dữ liệu vào trong các mục của form. Khi tất cả dữ liệu cần thiết đã được ghi vào các thanh ghi, controller ghi vào command register, và đĩa cứng xử lý command. Theo nguyên tắc, đĩa không làm bất cứ thứ gì cho đến khi command registẻ được ghi.
 
Ví dụ, xét tình huống mà ở đó controller muốn đọc một sector của đĩa. Nó có thể ghi địa chỉ sector và số lượng sector cần đọc trong các thanh ghi thích hợp. Sau khi các chi tiết command được ghi vào các thanh ghi, controller hướng dẫn (instruct) đĩa cứng thực thi hành động đọc thông qua việc ghi vào thanh ghi command.
 
Hard Disk Passwords
Thông số kĩ thuật ATA-3 đề ra các tính năng bảo mật lựa chọn mới, bao gồm passwords mà có thể được set thông qua BIOS hoặc các ứng dụng phần mềm khác nhau. Nếu triển khai, có 2 passwords trong các đĩa cứng, user và master passwords. Master password được thiết kế do đó quản trị viên công ty có thể truy cập vào máy tính trong trường hợp user password bị mất. Nếu các passwords được sử dụng, có 2 chế độ (modes) mà đĩa có thể hoạt động: cao (high) và cực đại (maximum). Trong chế độ bảo mật cao, user password có thể mở khóa (unlock) đĩa nhưng master password chỉ có thể unlock đĩa sau khi nội dung của đĩa bị xóa. Sau một số lần cố gắng đăng nhập password thất bại, đĩa sẽ đóng băng (freeze), và hệ thống sẽ cần phải rebooted.
 
Đĩa cứng sẽ yêu cầu SECURITY_UNCLOCK command được thực thi với password chính xác trước khi nhiều ATA command có thể được thực thi. Sau khi password đúng được nhập, đĩa hoạt động bình thường cho đến khi đĩa được tăt nguồn.
 
Một vài ATA commands vẫn được enabled trên đĩa cứng khi nó bị khóa, vì vậy nó có thể xuất hiện như là một đĩa hợp lệ khi được đưa vào máy tính. Tuy nhiên, khi bạn cố gắng đọc dữ liệu thực sự của user từ một đĩa bị khóa, nó sẽ hoặc sinh ra lỗi hoặc yêu cầu password. Có một vài chương trình miễn phí trên mạng sẽ cho bạn biết đĩa có bị khóa và sẽ cho phép bạn unlock nó với password. Có 2 chương trình đó là atapwd và hdunlock. Password có thể được set thông qua BIOS hoặc thông qua các ứng dụng phần mềm khác nhau. Một vài công ty khôi phục dữ liệu có thể bypass password thông qua việc mở đĩa.
 
Host Protected Area
Host Protected Area (HPA) là một vùng đặc biệt của đĩa có thể được sử dụng để lưu dữ liệu, và với cặp mắt quan sát bình thường sẽ không thấy nó. Kích thước của vùng này có thể được cấu hình sử dụng ATA commands, và nhiều đĩa mặc định kích thước là 0.
 
HPA được bổ sung trong ATA-4, và động lực để thực hiện đó là các nhà sãn xuất máy tính có thể lưu dữ liệu mà mà không thể bị xóa khi một user format và xóa nội dung đĩa cứng. HPA nằm ở cuối của đĩa và, khi được sử dụng, có thể chỉ được truy nhập thông qua việc cấu hình lại đĩa cứng.
 
Nào hãy cùng đi vào chi tiết hơn về HPA thông qua việc sử dụng ATA commands. Một vài trong số các commands tôi sẽ sử dụng có 2 versions phụ thuộc vào kích thước của đĩa, nhưng ta sẽ chỉ sử dụng một trong số chúng. Có 2 commands mà trả về các giá trị sector có thể đánh địa chỉ cực đại (maximum addressable sectors values), và nếu một HPA tồn tại kết quả trả về của chúng sẽ khác nhau. READ_NATIVE_MAX_ADDRESS command trả về địa chỉ vật lý tối đa, nhưng IDENTIFY_DEVICE command sẽ chỉ trả về số lượng các sectors mà user có thể truy xuất đến. Do đó, nếu một HPA tồn tại, READ_NATIVE_MAX_ADDRESS sẽ trả về kết thúc thật sự của đĩa và IDENTIFY_DEVICE command sẽ trả về kết thúc của vùng user (và bắt đầu của HPA). Chú ý phần trình bày tiếp theo sẽ chỉ ra rằng  READ_NATIVE_MAX_ADDRESS không thường xuyên trả về địa chỉ vật lý cuối cùng của đĩa.
 
Để tạo một HPA, SET_MAX_ADDRESS command được sử dụng để set địa chỉ tối đa tới những gì user có thể truy xuất. Để loại bỏ HPA, SET_MAX_ADDRESS  phải được thực thi một lần nữa với kích thước thực sự của đĩa, thông tin này có thể tìm thấy thông qua sử dụng command READ_NATIVE_MAX_ADDRESS.
 
Ví dụ, nếu có một đĩa 20GB,  READ_NATIVE_MAX_ADDRESS sẽ trả về một sector count của 20GB (ví dụ là 41,943,040). Để tạo 1GB host protected area, chúng ta thực thi SET_MAX_ADDRESS với một địa chỉ 39,845,888 . Bất cứ một cố gắng nào để đọc hay ghi dữ liệu tới 2,097,152 sectors cuối cùng sẽ sinh ra lỗi, và IDENTIFY_DEVICE command sẽ trả về một địa chỉ cực đại 39,845,888. Chúng ta có thể nhìn vào hình phía dưới. Để loại bỏ HPA, chúng ta có thể set SET_MAX_ADDRESS với full sector count.
                                      Hình 3: 1 GB HPA trong 20GB đĩa
 
Một trong các thiết lập của SET_MAX_ADDRESS command là một 'volatility' bit, khi được set, làm cho HPA tồn tại sau khi đĩa cứng được reset hoặc power cycled. Cũng có một tập hợp của các locking commands trong thông số kĩ thuật ATA mà ngăn cản các sự thay đổi tới địa chỉ tối đa cho đến lần reset tiếp theo. Nó cho phép BIOS đọc và ghi một vài dữ liệu trong host protected area khi hệ thống được powered up, set HPA như vậy thì user không thể nhìn thấy dữ liệu, và lock vùng này lại vì thế nó không thể bị thay đổi. Thậm chí một password có thể được sử dụng (password này khác với password được sử dụng cho việc truy xuất đĩa.)
 
Tổng kết lại, một đĩa cứng có thể có một HPA chứa các system files, thông tin ẩn, hoặc cả hai. Có phát hiện sự tồn tại của HPA thông qua việc so sánh 2 ATA commands. Để loại bỏ nó, địa chỉ tối đa của đĩa cứng phải được reset, nhưng thiết lập volatility cho phép thay đổi tạm thời.  
                           
 Device Configuration Overlay
 Dữ liệu ngoài được ẩn trong một HPA, dữ liệu có thể được ẩn sử dụng Device Configuration Overlay (DCO) . DCO được bổ sung vào ATA-6 và cho phép giới hạn khả năng của đĩa cứng. Mỗi thông số kĩ thuật ATA có các đặc tính lựa chọn mà một đĩa có thể hay không triển khai. Máy tính sử dụng sử dụng IDENTIFY_DEVICE command để xác định các đặc tính nào mà một đĩa cứng có thể hỗ trợ. Một DCO có thể làm cho IDENTIFY_DEVICE command hiển thị các đặc tính được hỗ trợ mà không được hỗ trợ và hiển thị một kích thước đĩa nhỏ hơn những gì chúng có.
 
Hãy cùng nhìn vào một vài DCO commands. DEVICE_CONFIGURATION_IDENTIFY command trả về các đặc tính thực sự và kích thước của một đĩa. Do đó, chúng ta có thể phát hiện một DCO thông qua việc so sánh các outputs của DEVICE_CONFIGURATION_IDENTIFY và IDENTIFY_DEVICE. Hơn nữa, nhắc lại READ_NATIVE_MAX_ADDRESS command trả về kích thước của đĩa sau một HPA. Chúng ta có thể phát hiện một DCO mà ẩn các sectors thông qua việc so sánh output của READ_NATIVE_MAX_ADDRESS với DEVICE_CONFIGURATION_IDENTIFY.
 
Ví dụ, xét một đĩa 20GB ở đó một DCO có địa chỉ tối đa được set tới 19GB. READ_NATIVE_MAX_ADDRESS và IDENTIFY_DEVICE hiển thị đĩa chỉ có 19GB. Nếu 1GB HPA cũng được tạo, IDENTIFY_DEVICE command hiển thị kích thước của đĩa là 18GB. Chúng ta có thể nhìn thấy trong hình dưới đây:
Hình 4. Một DCO có thể ẩn các sectors ở phần cuối của đĩa, ngoài việc ẩn các sectors thông qua HPA
 

Để tạo hoặc thay đổi một DCO, DEVICE_CONFIGURATION_SET command được sử dụng. Để loại bỏ một DCO, DEVICE_CONFIGURATION_RESET command được sử dụng. Không giống như HPA, không có lựa chọn biến động (volatile option) mà cho phép thiết bị thay đổi các thiết lập cho một phiên. Tất cả các thay đổi DCO là vĩnh viễn thông qua resets và power cycles.

Serial ATA
Làm việc với các thiết bị ATA có những bất lợi của nó. Các cables quá lớn, không mềm dẻo, và có các connectors ở những nơi mà bạn thường xuyên không muốn chúng ở đó. Các đĩa cứng còn có thể khó khăn để cấu hình với master và slave jumpers. Cable và tốc độ của interface là một vài động lực ẩn sau việc phát triển Serial ATA, những gì bao gồm trong thông số kĩ thuật ATA-7.

Interface được gọi là serial bởi vì chỉ một bit thông tin được vận chuyển giữa controller và đĩa cứng ở một thời điểm, khi so sánh với 16 bits tại một thời điểm với interface ban đầu, hoặc parallel ÂTA. Các serial ATA connectors bằng 1/4 so với kích thước của parallel ATA connectors và chúng chỉ có 7 contacts. Mỗi thiết bị serial ATA được kết nối trực tiếp tới controller, và không có sự móc nối của các thiết bị.

Serial ATA được thiết kế mà một controller mới có thể được đặt trong một máy tính, và máy tính không biết gì về sự khác biệt giữa ATA ban đầu (parallel ATA ) và serial ATA mới. Thực tế, serial ATA controller có các registers mà làm cho máy tính nghĩ rằng nó đang nói chuyện với một đĩa parallel ATA. Host computer coi mỗi đĩa được kết nối tới serial ATA controller như là một đĩa master trên channel của nó.

BIOS và Truy cập trực tiếp
Chúng ta đã thảo luận về cách các đĩa cứng ATA làm việc và cách chúng được điều khiển, chúng ta cần thảo luận về cách phần mềm giao tiếp với chúng bởi vì điều này có thể tạo ra các vấn đề khi muốn thu thập dữ lieu trên đĩa. Có 2 phương thức mà phần mềm có thể sử dụng để truy cập đĩa: trực tiếp thông qua hard disk controller hoặc thông qua BIOS.

Truy cập trực tiếp đến Controller
Chúng ta đã thấy trong phần trước là đĩa cứng được kết nối tới một hard disk controller, là một thành phần phát đi các commands tới đĩa cứng sử dụng ribbon cable. Một kĩ thuật cho việc đọc và ghi dữ liệu là cho phần mềm giao tiếp trực tiếp với hard disk controller, những gì sau đó giao tiếp với đĩa cứng.

Để giao tiếp theo cách này, phần mềm cần biết cách address controller và cách phát các commands tới nó. Ví dụ, phần mềm cần biết command code cho hành động đọc là gì, và nó cần biết cách nhận dạng các sectors nào cần đọc. Phần mềm sẽ còn phải query đĩa cứng để có được các chi tiết như kiểu và kích cỡ.

Truy cập BIOS tới Controller
Truy cập đĩa cứng trực tiếp là cách nhanh nhất để có được dữ liệu từ đĩa, nhưng nó yêu cầu phần mềm phải biết chút ít về phần cứng. Một trong các công việc của BIOS là ngăn cho phần mềm phải biết các chi tiết này. BIOS biết về hardware, và nó cung cấp các dịch vụ tới phần mềm vì vậy chúng có thể giao tiếp dễ dàng với hardware.

Nhắc lại phần "Boot Code Locations" mà BIOS được sử dụng khi máy tính khởi động. BIOS thực hiện nhiều công việc trong quá trình boot, nhưng có 2 công việc cần nhắc tới khi thảo luận ở đây. Công việc liên quan thứ nhất là việc nó xác định chi tiết của các đĩa đã được cài đặt hiện hành. Công việc liên quan thứ 2 đó là nó nạp bảng ngắt (interrupt table), bảng này được dùng để cung cấp dịch vụ tới hệ điều hành và phần mềm.

Để sử dụng các dịch vụ đĩa cứng BIOS, phần mềm phải nạp dữ liệu, ví dụ như địa chỉ sector hoặc các kichs thước, vào trong các thanh ghi CPU và thực thi software interrupt command 0x13 (thường được gọi là INT13h). Software interrupt command làm cho processor nhìn vào bảng ngắt và định vị được code mà sẽ xử lý yêu cầu dịch vụ. Table entry cho interrupt 0x13 chứa địa chỉ của BIOS code mà sẽ sử dụng kiến thức của nó để giao tiếp với controller. Về cơ bản, BIOS làm việc như người đứng giữa phần mềm và phần cứng.

INT13h thực sự là một dạng của các hàm đĩa (disk funtions) và bao gồm các hàm mà ghi lên đĩa, đọc từ đĩa, format các tracks trên đĩa, và query đĩa để lấy thông tin. Các hàm INT13h nguyên thủy cho việc đọc và ghi sử dụng các địa chỉ CHS và cho phép phần mềm truy cập một đĩa mà chỉ có 8.1GB hoặc ít hơn. Để khắc phục giới hạn này, các tính năng mới được thêm vào INT13h trong BIOS, được gọi là "extended INT13h."

Các hàm INT13h mở rộng yêu cầu BIOS code mới và sử dụng đĩa chỉ LBA 64-bit. Vì các lý do tương thích, các hàm CHS vẫn được duy trì, và phần mềm phải được viết lại để có thể sử dụng được các tính năng mới.

SCSI Drives
Phần này cung cấp một overview về SCSI, tập trung vào các kiểu khác nhau, và mô tả nó khác với ATA như thế nào. Các đĩa cứng SCSI không phổ biến bằng ATA trên các máy tính người dùng, nhưng nó là chuẩn trên hầu hết servers.

Giống như ATA, có nhiều thông số kĩ thuật của SCSI, các tiêu chuẩn này được công bố bởi T10 Technical Committee. Có 3 thông số kĩ thuật SCSI, SCSI-1, SCSI-2, SCSI-3. SCSI-3 thực sự bao gồm nhiều thông số kĩ thuật nhỏ hơn.

SCSI versus ATA
Có những sự khác biệt ở cả mức cao và mức thấp giữa SCSI và ATA. Các sự khác biệt cấp cao rõ ràng nhất đó là nhiều kiểu connector. Với ATA, chỉ có các connectors 40 và 44-pin, nhưng SCSI có nhiều hình dạng và kiểu dáng. SCSI cables có thể dài hơn ATA cables và có thể có nhiều hơn 2 thiết bị trên cùng một cable. Mỗi thiết bị trên SCSI cable cần một số ID duy nhất, số này có thể được cấu hình với các jumpers trên đĩa hoặc với phần mềm. Nhiều đĩa SCSI cũng có một jumper để làm cho đĩa chỉ đọc (read only), tính năng này giống như ATA write blocker. Các ATA write blockers là các thiết bị bên ngoài mà block các write commands.

Sự khác biệt mức thấp đầu tiên giữa ATA và SCSI đó là SCSI không có một controller. ATA interface đã được thiết kế để cho một single controller nói cho một hoặc hai đĩa cứng những gì cần làm. SCSI đã được thiết kế như là một bus ở đó các thiết bị khác nhau giao tiếp lẫn nhau và các thiết bị không bị giới hạn tới các đĩa cứng. Với một cấu hình SCSI, card mà được gắn vào trong máy tính không phải là một controller bởi vì mỗi thiết bị trên SCSI cable là có vai trò như nhau và có thể tạo ra các requests lẫn nhau.

Giống như ATA, SCSI chuẩn là parallel và dữ liệu di chuyển theo các khối 8-bit và 16-bit. Còn nữa, SCSI giống ATA ở chỗ nó cũng có một phiên bản serial, nó được xác định trong thông số kĩ thuật serial attached SCSI.

Các kiểu SCSI
Sự khác nhau giữa các phiên bản SCSI tóm lại ở chỗ có bao nhiêu bit được truyền đi tại một thời điểm, tần số của các tín hiệu trên cable (tốc độ của vận chuyển), và các kiểu tín hiệu được sử dung. Các kiểu SCSI cũ hơn có một phiên bản bình thường (normal version) và một phiên bản mở rộng (wide version), ở đó phiên bản bình thường vận chuyển 8 bits tại một thời điểm và phiên bản mở rộng vận chuyển 16 bits tại một thời điểm. Ví dụ, một thiết bị Ultra SCSI thực hiện một việc vận chuyển 8-bit và một thiết bị Wide Ultra SCSI thực hiện việc vận chuyển 16-bit, không cần đưa ra sự khác biệt giữa phiên bản bình thường và mở rộng.

Sự khác biệt thứ 2 trong các phiên bản SCSI đó là tốc độ của các tín hiệu trong cable. Bảng phía dưới đây đưa ra tên của các kiểu SCSI, tốc độ, và tỉ lệ vận chuyển đối với bus 8-bit bình thường và bus 16-bit mở rộng.

Bảng 1. Tốc độ khác biệt giữa các kiểu SCSI khác nhau


Bên trong mỗi kiểu này, có những cách khác nhau mà dữ liệu được biểu trên dây (wire). Cách thức rõ ràng nhất là single ended (SE) , theo cách thức này một điện áp cao được đặt trên dây nếu 1 được vận chuyển và không có điện áp được đặt trên dây nếu 0 được vận chuyển. Phương thức này tạo ra một vấn đề tại các tốc độ cao và với các cable dài hơn bởi vì tín hiệu điện không thể ổn định tại tốc độ cao và các dây có thể làm nhiễu sóng những dây khác.

Phương thức thứ 2 để vận chuyển dữ liệu được gọi là differential voltage, và mỗi bit thực sự yêu cầu 2 dây. Nếu một bit 0 được vận chuyển, không có điện áp được áp dụng cho cả 2 dây. Nếu một bit 1 được vận chuyển, một điện áp dương được áp dụng cho một dây và điện áp ngược được áp dụng cho dây thứ 2. Khi một thiết bị đọc các tín hiệu từ cable, nó có được sự khác biệt giữa 2 dây. Một lựa chon tín hiệu high voltage differential (HVD) tồn tại trong SCSI từ phiên bản đầu tiên và một lựa chọn tín hiệu low voltage differential (LVD) sử dụng một tín hiệu nhỏ hơn, tồn tại từ Ultra2 SCSI, và là kiểu tín hiệu chính cho các đĩa mới. Bảng phía dưới chỉ ra các kiểu SCSI mà sử dụng các kiểu tín hiệu khác nhau.

Bảng 2. Các kiểu tín hiệu mà có thể tìm thấy trong mỗi kiểu SCSI

Điều quan trọng đó là bạn không trộn (mix) các kiểu tín hiệu khác nhau. Bạn có thể gây ra các đe dọa cho các thiết bị của bạn khi bạn kết nối các thiết bị SE tới các thiết bị HVD và một vài thiết bị LVD. Một vài đĩa LVD tương thích với SE, vì vậy chúng có thể được sử dụng trong môi trường SE mà không gây ra mối đe dọa nào, nhưng chúng chỉ hoạt động tại các tốc độ mà các thiết bị SE sử dụng. Có một vài biểu tượng trên các thiết bị SCSI mà nhận dạng kiểu tín hiệu chúng sử dụng. Đảm bảo rằng tất cả các thiết bị có cùng một biểu tượng hoặc là các biểu tượng tương thích. Các biểu thực được biểu diễn qua hình dưới.

Hình 5. Các biểu tượng của các kiểu tín hiệu SCSI. (A) là các thiết bị SE, (B) là các thiết bị LVD, (C) là các thiết bị cho cả SE và LVD tương thích, và (D) là các thiết bị HVD.


 Các kiểu Connector
Có nhiều kiểu SCSI connectors, nhưng chỉ có một vài kiểu mà chúng ta thường xuyên gặp. Nói chung, các drives có một bus 8-bit có một cable 50-pin, và cũng có các drives có một bus 16-bit có cable 68-bit. Adaptor 68-bit mật độ cao (high-density 68-bit adaptor) là cái được sử dụng phổ biến nhất, và nó có kích thước bình thường và kích thước mật độ rất cao, nhưng kích thước bình thường là phổ biến nhất và có thể thấy trong hình phía dưới đây. Adaptor 68-bit được sử dụng cho cả các tín hiệu LVD và SE, nhưng cable vật lý cho các kiểu tín hiệu khác nhau là khác nhau. Kiểm tra thông tin trên cable để ngăn các vấn đề này.
 
Hình 6. Một điã SCSI với một adaptor 68-pin
Một biến thể khác của connector 68-pin mật độ cao là Single Connector Attachment (SCA) connector. Mục đích của connector này là cung cấp power và các dây dữ liệu trong một connector, điều này có thể giúp dễ dàng swap các drives trong một server. Connector này có 80 pins và bao gồm các pins cho power và để cấu hình đĩa. Một bức hình cho loại connector này các bạn có thể thấy ở phía dưới
 
 Hình 7. Một đĩa SCSI với một SCA connector


Có nhiều adaptors cho các kiểu SCSI connectors khác nhau, và các thiết bị SCSI được giả định với sự tương thức ngược. Tuy nhiên, không phải tất cả adaptor và các cấu hình thiết bị có thể làm việc. Nếu thiết lập làm việc, nó sẽ run với tốc độ của thiết bị thấp nhất. Hãy nhớ rằng đừng trộn bất cứ thiết bị HVD với các thiết bị LVD và SE mà không có các thiết bị adaptors hợp lý và chỉ trộn các thiết bị LVD và SE nếu các thiết bị LVD có thể run trong chế độ SE.
 
Size Barriers
Các đĩa SCSI không phải chịu các giới hạn về kích thước như các đĩa ATA bởi vì thông số kĩ thuật SCSI thường xuyên sử dụng các địa chỉ LBA 32-bit và 64-bit. Mặc dù, giới hạn kích thước của BIOS (nếu bạn đang sử dụng INT13h) hoặc file system có thể nhỏ hơn những gì SCSI hỗ trợ, và chúng sẽ là nhân tố giơí hạn.
 
Khi sử dụng thông qua BIOS, SCSI controller chuyển đổi (translate) một địa chỉ CHS sang một địa chỉ LBA. Các controller khác nhau có thể sử dụng các kĩ thuật ánh xạ khác nhau, nhưng nhiều trong số chúng chọn một kĩ thuật dựa trên hình dạng được mô tả bởi các entries trong một bảng partition. Có thể cho một investigator có một controller trong hệ thống thu hồi của anh ta mà không tiến hành một ánh xạ tương tự như controller ban đầu, vì vậy đĩa cần được yêu cầu sử dụng truy cập trực tiếp và không sử dụng BIOS.  

Không có nhận xét nào:

Đăng nhận xét