Tôi có một ổ đĩa (thẻ SD) với một vài phân vùng ext4 nhưng cũng có một số không gian chưa được phân bổ. Các fstrim
tiện ích chỉ có thể làm việc trong một hệ thống tập tin. Trước khi tôi phát minh lại bánh xe và viết một cái, có tiện ích nào khác có thể TRIM không gian chưa phân bổ (hoặc có thể TRIM một phạm vi được chỉ định rõ ràng) không?
Tôi có thể xác minh rằng phần lớn không gian chưa phân bổ trên thiết bị hiện không được bộ điều khiển biết là miễn phí, như tôi đã quan sát thấy, trên thẻ cụ thể này, đọc để cắt không gian trở về 0, nhưng quét thiết bị cho thấy nhiều dữ liệu rác còn sót lại.
Chỉnh sửa: Tôi đang gặp vấn đề khi sử dụng hdparm
. Ví dụ dưới đây loại bỏ khu vực đầu tiên, nhưng tôi đang thấy kết quả tương tự bất kể phạm vi tôi chỉ định. fstrim
không có vấn đề gì trên thiết bị:
root@ubuntu:~# hdparm --please-destroy-my-drive --trim-sector-ranges 0:1 --verbose /dev/mmcblk0
/dev/mmcblk0:
trimming 1 sectors from 1 ranges
outgoing cdb: 85 0d 06 00 01 00 01 00 00 00 00 00 00 40 06 00
outgoing_data:
00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ioctl(fd,SG_IO): Invalid argument
FAILED: Invalid argument
Tôi đang điều tra thêm nhưng có ai có cái nhìn sâu sắc không?
blkdiscard
dường như không có sẵn trong kho gói tiêu chuẩn của tôi (Ubuntu 12.04, dường như không có trong util-linux
).
hdparm
làm việc cho tôi vì một số lý do, nhưng tôi đã lấy nguồn linux-linux từ github.com/karelzak/util-linux/tree/ sóng / v2.23 , xây dựng nó ( ./autogen.sh ; ./configure ; make blkdiscard
) và nó hoạt động rất tốt. Vẫn còn bí ẩn về hdparm
nhưng blkdiscard
làm chính xác những gì tôi muốn. Phần thưởng: Không cần thiết phải tạo một hệ thống tệp tạm thời trước tiên, bạn có thể sử dụng sfdisk -l
để tìm ra khoảng trống giữa các phân vùng và blkdiscard
cắt bớt nó.
blkdiscard
có thể làm việc với các tùy chọn bù / độ dài. Vì vậy, các phân vùng tạm thời tôi đề nghị thậm chí không cần thiết. Đẹp!
blkdiscard
chúng để cắt toàn bộ thiết bị.