một tập tin đã bị xóa như thế nào


7

Tôi hy vọng tôi đã có quyền này: Một tệp inodechứa dữ liệu như số inode, thời gian sửa đổi lần cuối, quyền sở hữu, v.v. - và cả mục: » thời gian xóa «. Điều này làm tôi tò mò:
Xóa một tệp có nghĩa là xóa số inode của nó , do đó đánh dấu không gian lưu trữ được liên kết với nó là có sẵn. Có các công cụ để khôi phục (vô tình) các tệp đã bị xóa (ví dụ: từ một tạp chí, nếu có). Và tôi biết statlệnh.

Câu hỏi

Một mục "tập tin bị xóa" trông như thế nào trong tạp chí?

Tôi đoán là một đầu ra trông khá lạ thường như khi ban hành statlệnh.

Tôi biết rằng việc xóa một tập tin và cố gắng khôi phục nó sẽ là một trải nghiệm đầu tiên, nhưng sau đó tôi không thể làm điều này mà không cần sự trợ giúp từ bên ngoài và tôi muốn hiểu chính xác những gì tôi đang làm. Hiện tại, việc phục hồi dữ liệu sẽ trở nên khó khăn đối với tôi, vì tôi cố gắng nắm vững những thứ cơ bản ... Tôi không lười biếng, đây không phải là bài tập về nhà, đây là cho nghiên cứu riêng tư.

Câu trả lời:


6

Khi một tập tin hoặc thư mục bị "xóa", số inode của nó sẽ bị xóa khỏi thư mục chứa tập tin. Bạn có thể xem danh sách các nút mà một thư mục đã cho chứa bằng cách sử dụngtree lệnh.

Thí dụ

$ tree -a -L 1 --inodes .
.
|-- [9571121]  dir1
|-- [9571204]  dir2
|-- [9571205]  dir3
|-- [9571206]  dir4
|-- [9571208]  dir5
|-- [9571090]  file1
|-- [9571091]  file2
|-- [9571092]  file3
|-- [9571093]  file4
`-- [9571120]  file5

5 directories, 5 files

Liên kết

Điều quan trọng là phải hiểu làm thế nào các liên kết cứng hoạt động. Hướng dẫn này có tiêu đề: Giới thiệu về Inodes có các chi tiết tuyệt vời nếu bạn chỉ mới bắt đầu cố gắng hiểu cơ bản về cách thức hoạt động của các nút.

đoạn trích

Số inode là duy nhất, nhưng bạn có thể nhận thấy rằng một số tên tệp và danh sách số inode hiển thị một số tệp có cùng số. Sự trùng lặp được gây ra bởi các liên kết cứng. Liên kết cứng được thực hiện khi một tập tin được sao chép trong nhiều thư mục. Cùng một tệp tồn tại trong các thư mục khác nhau trên cùng một đơn vị lưu trữ. Danh sách thư mục hiển thị hai tệp có cùng số liên kết chúng với cùng một vật lý trên đơn vị lưu trữ te. Liên kết cứng cho phép cùng một tệp "tồn tại" trong nhiều thư mục, nhưng chỉ tồn tại một tệp vật lý. Không gian sau đó được lưu trên đơn vị lưu trữ. Ví dụ: nếu một tệp một megabyte được đặt trong hai thư mục khác nhau, không gian được sử dụng trên bộ lưu trữ là một megabyte, không phải hai megabyte.

Xóa

Hướng dẫn tương tự cũng có điều này để nói về những gì xảy ra khi một nút bị xóa.

Xóa các tệp khiến kích thước và các mục nhập khối trực tiếp / gián tiếp bằng 0 và không gian vật lý trên đơn vị lưu trữ được đặt là không sử dụng. Để phục hồi tệp, siêu dữ liệu được khôi phục từ Tạp chí nếu nó được sử dụng (xem bài viết Tạp chí ). Khi siêu dữ liệu được khôi phục, tệp sẽ có thể truy cập một lần nữa trừ khi dữ liệu vật lý đã được ghi đè lên đơn vị lưu trữ.

Mức độ

Bạn cũng có thể muốn cải thiện phạm vi và cách chúng hoạt động. Một lần nữa từ trang web linux.org, một tốt hướng dẫn, với tựa đề: Extents sẽ giúp bạn có được những điều cơ bản xuống.

Bạn có thể sử dụng lệnh filefragđể xác định số lượng tệp / thư mục đã cho đang sử dụng.

Ví dụ

$ filefrag dir1
dir1: 1 extent found

$ filefrag ~/VirtualBox\ VMs/CentOS6.3/CentOS6.3.vdi 
/home/saml/VirtualBox VMs/CentOS6.3/CentOS6.3.vdi: 5 extents found

Bạn có thể nhận được đầu ra chi tiết hơn bằng cách sử dụng công -vtắc:

$ filefrag -v dir1
Filesystem type is: ef53
File size of dir1 is 4096 (1 block of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:   38282243..  38282243:      1:             eof
dir1: 1 extent found

LƯU Ý: Lưu ý rằng một thư mục luôn tiêu thụ ở mức tối thiểu 4K byte.

Cung cấp một tập tin kích thước

Chúng tôi có thể lấy một trong các tệp mẫu của mình và ghi 1 MB dữ liệu vào đó như sau:

$ dd if=/dev/zero of=file1 bs=1k count=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00628147 s, 167 MB/s

$ ll | grep file1
-rw-rw-r--. 1 saml saml 1048576 Dec  9 20:03 file1

Nếu chúng tôi phân tích tệp này bằng cách sử dụng filefrag:

$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..     255:   35033088..  35033343:    256:             eof
file1: 1 extent found

Xóa và tạo lại một tập tin nhanh chóng

Một thử nghiệm thú vị bạn có thể làm là tạo một tệp, chẳng hạn như file1ở trên, sau đó xóa nó và sau đó tạo lại nó. Xem những gì xảy ra. Ngay sau khi xóa tệp, tôi chạy lại dd ...lệnh và file1hiển thị như thế này với filefraglệnh:

$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..     255:          0..       255:    256:             unknown,delalloc,eof
file1: 1 extent found

Sau một chút thời gian (vài giây đến vài phút trôi qua):

$ filefrag -v file1
Filesystem type is: ef53
File size of file1 is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..     255:   38340864..  38341119:    256:             eof
file1: 1 extent found

Các tập tin cuối cùng xuất hiện. Tôi không hoàn toàn chắc chắn những gì đang diễn ra ở đây, nhưng có vẻ như phải mất một thời gian để trạng thái của tệp được giải quyết giữa tạp chí và đĩa. Các statlệnh đang chạy hiển thị tệp có inode nên nó ở đó, nhưng dữ liệu filefragsử dụng chưa được giải quyết nên chúng tôi ở trạng thái limbo.


Không có gì bạn đề cập ở đây có liên quan đến tạp chí. Những gì bạn đang thấy với filefrag là tính năng phân bổ bị trì hoãn có hiệu lực. Nhân không phân bổ các khối cho đến khi nó ghi dữ liệu vào đĩa. Tại thời điểm bạn chạy filefrag, dữ liệu vẫn nằm trong bộ đệm, vì vậy kernel chưa quyết định nơi sẽ đặt nó.
psusi

@psusi - Tôi biết tôi đã nhảy xung quanh các chi tiết thực tế, có cách nào để nhìn trộm bên trong Kernel để xem thêm trạng thái của mọi thứ không? Tôi đã không tìm thấy nhiều trong cách các công cụ liên quan đến tạp chí.
slm

0

Xóa một tập tin bao gồm một vài bước:

  1. Đánh dấu tên trong thư mục là đã xóa
  2. Giảm số lượng liên kết trong inode
  3. Nếu số lượng liên kết bây giờ bằng không, hãy đặt thời gian đã xóa và
  4. Đánh dấu các khối dữ liệu là miễn phí trong bitmap

Vì vậy, tạp chí "trông giống như" trình tự này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.