Tôi có hai thiết bị "NAS" cũ, cụ thể là Buffalo TeraStation Rackmount iSCSI ("TS-RIXL/R5"). Về cơ bản, đó là những máy tính nhúng chạy Linux với bốn khe cắm SATA và hai cổng Ethernet, với phần sụn hiển thị dưới dạng mục tiêu iSCSI.
Với cả hai thiết bị, tôi đã làm như sau:
Tôi đã đặt bốn ổ đĩa Seagate Exos X16 16TB mới, sử dụng công cụ "Cập nhật chương trình cơ sở" Windows của Buffalo để cài đặt chương trình cơ sở (1.66) mới nhất trên chúng và tạo một mảng RAID5.
Sau đó, trên một máy AMD64 chạy Debian Buster với nhân và công cụ tiêu chuẩn, tôi đã thử thiết lập một hệ thống tệp được mã hóa:
# tìm thiết bị
iscsiadm -m khám phá -t st -p <ip_address>:3260
# kết nối nó với hệ thống con SCSI của người khởi tạo
nút iscsiadm -m --tên mục tiêu "iqn.2004-08.jp.buffalo:<device_id>:vol1" --portal <ip_address>:3260,1" --login
# điều này làm /dev/sda xuất hiện
# tạo một thiết bị được mã hóa
cryptsetup luksFormat /dev/sda
cryptsetup mở /dev/sda nas
# tạo một hệ thống tập tin và gắn kết nó
mke2fs -t ext4 /dev/mapper/nas
gắn kết/dev/mapper/nas/mnt/nas/
# tạo thư mục
mkdir /mnt/nas/cửa hàng
Điều này có vẻ hoạt động tốt, nhưng ngay lập tức xuất hiện lỗi tiếp theo trong dmesg và syslog:
Lỗi EXT4-fs (thiết bị dm-0): ext4_validate_block_bitmap:384: comm mkdir: bg 18736: tổng kiểm tra bitmap khối bị lỗi
Sao chép một số GB dữ liệu vào thiết bị sau đó cũng làm xuất hiện các lỗi như
EXT4-fs (dm-0): Phân bổ khối bị trì hoãn không thành công cho inode 479102523 ở độ lệch logic 8708096 với khối tối đa 128 với lỗi 74
EXT4-fs (dm-0): Điều này không nên xảy ra!! Dữ liệu sẽ bị mất
Điều này có thể tái tạo với cả hai thiết bị NAS, loại trừ một số lỗi phần cứng.
Các thiết bị đã hoạt động hoàn hảo trong nhiều năm (với iSCSI, không cần mã hóa).
Nếu tôi làm điều tương tự bây giờ không có phần "cryptsetup", hãy tạo trực tiếp hệ thống tệp trên/dev/sda và gắn kết nó, tôi có thể làm việc với nhiều gigabyte dữ liệu mà không có lỗi xuất hiện trong nhật ký hệ thống và không bị hỏng dữ liệu.
Mặt khác, sử dụng quy trình tương tự trên máy Debian, thiết lập hệ thống tệp được mã hóa trên đĩa cứng được kết nối qua USB (thay vì iSCSI), cũng hoạt động tốt.
Cho nên:
ext4 => dm-crypt => iSCSI => NAS Buffalo: "Điều này không nên xảy ra!! Dữ liệu sẽ bị mất"
ext4 => iSCSI => NAS Buffalo: hoạt động
ext4 => dm-crypt => đĩa USB ngoài: hoạt động
(trong đó "hoạt động" có nghĩa là: tôi đã sao chép khoảng 10.000 tệp có kích thước khoảng 48 GB và đã xác minh bằng md5sum rằng tất cả các tệp đều ở đó và không bị hỏng)
Sau đó, tôi lặp lại các thử nghiệm trên máy chạy Ubuntu hirsute (21.04) và nhận được kết quả tương tự.
Có một số vấn đề đã biết khi chạy dm-crypt trên iSCSI không? Tôi có cần phải có một cấu hình đặc biệt cho phần iSCSI không, ví dụ như một số cấu hình cho bộ nhớ đệm hoặc kích thước khối?