fstrim dường như không cắt một phân vùng sử dụng lvm và dm-crypt


9

Tôi cố gắng thiết lập Fedora 25 với dm-crypt và LVM, nhưng đấu tranh để làm cho TRIM hoạt động.

$ sudo fstrim -av                                                                            
/boot: 28.6 MiB (30003200 bytes) trimmed
/: 56.5 GiB (60672704512 bytes) trimmed

$ sudo fstrim -av                                                                            
/boot: 0 B (0 bytes) trimmed
/: 56.5 GiB (60671877120 bytes) trimmed

Như bạn có thể thấy từ đầu ra ở trên, chạy liên tục fstrimhoạt động trên ext4 không được mã hóa /boot, nhưng dường như không có tác dụng gì /(trên cùng một đĩa).

Thiết lập là SSD -> dm-crypt -> LVM -> XFS

$ lsblk -D                                                                                                                                                                                     
NAME                                          DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda                                                  0      512B       2G         0
├─sda2                                               0      512B       2G         0
│ └─luks-dd5ce54a-34c9-540c-a4cf-2a712b8a3a5e        0      512B       2G         0
│   └─fedora-root                                    0      512B       2G         0
└─sda1                                               0      512B       2G         0

Theo câu hỏi này , DISC-ZERO == 0 không nên là vấn đề

# cat /etc/crypttab
luks-dd... UUID=dd.. none discard

# cat /etc/lvm/lvm.conf
devices {
...
     issue_discards = 1
...
}

Tôi cũng đã thêm rd.luks.options=discardtùy chọn /etc/default/grubvà cập nhật initramfs và grub.cfg:

# grub2-mkconfig -o /boot/grub2/grub.cfg
# dracut -f

Tùy chọn loại bỏ đã tuyên truyền chính xác:

# dmsetup table luks-d...                                                                                                                        
0 233385984 crypt aes-xts-plain64 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 8:2 4096 1 allow_discards

Tôi đã thử các biến thể của thiết lập ở trên có thể tìm thấy trên web, nhưng điều này dường như tuân theo các trang thủ công. Những gì tôi đã không thử là sử dụng hệ thống tệp khác nhau, nhưng XFS nên được hỗ trợ.

Câu trả lời:


5

Tôi nghĩ rằng thử nghiệm của bạn không phù hợp với tài liệu ( man fstrim).

-v, --verbose

Thi hành dài dòng. Với tùy chọn này, fstrim sẽ xuất ra số byte được truyền từ hệ thống tập tin xuống ngăn xếp khối cho thiết bị để loại bỏ tiềm năng. Con số này là số tiền loại bỏ tối đa theo quan điểm của thiết bị lưu trữ, bởi vì FITRIM ioctl được gọi lặp đi lặp lại sẽ tiếp tục gửi cùng các lĩnh vực để loại bỏ nhiều lần.

fstrim sẽ báo cáo các byte loại bỏ tiềm năng giống nhau mỗi lần , nhưng chỉ các lĩnh vực đã được ghi vào giữa các loại bỏ thực sự sẽ bị thiết bị lưu trữ loại bỏ. Hơn nữa, lớp khối nhân có quyền điều chỉnh các phạm vi loại bỏ để phù hợp với hình dạng sọc đột kích, các thiết bị có khả năng không cắt trong thiết lập LVM, v.v. Những mức giảm này sẽ không được phản ánh trong fstrim_range.len (tùy chọn --length).

Tôi đề nghị tìm kiếm các yêu cầu loại bỏ bằng cách sử dụng blktrace , tức là cùng lúc với bạn chạy fstrim. Hy vọng rằng nó sẽ hiển thị cho dù loại bỏ yêu cầu đang được gửi đến thiết bị khối ở dưới cùng của ngăn xếp. Bạn có thể so sánh kết quả giữa sda1 và sda2 (sau khi khởi động mới, để tránh hành vi không có giấy tờ trên sda1).

btrace -a discard $DEV

2
Chỉ để tham khảo bạn có thể chạy blktrace -d $DEV -a discard -o - | blkparse -i -để có được đầu ra trực tiếp. Bạn có thể muốn thêm nó vào câu trả lời của mình :) Cảm ơn
NefariousOctopus
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.