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 fstrimtiệ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. fstrimkhô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?
blkdiscarddườ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).
hdparmlà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ề hdparmnhưng blkdiscardlà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à blkdiscardcắt bớt nó.
blkdiscardcó 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!
blkdiscardchúng để cắt toàn bộ thiết bị.