ฉันมีอุปกรณ์ "NAS" แบบเก่าสองเครื่อง โดยเฉพาะ Buffalo TeraStation Rackmount iSCSI ("TS-RIXL/R5") โดยทั่วไปแล้วคอมพิวเตอร์ฝังตัวที่ใช้ Linux มีสล็อต SATA สี่ช่องและพอร์ต Ethernet สองพอร์ตพร้อมเฟิร์มแวร์ที่แสดงเป็นเป้าหมาย iSCSI
ด้วยอุปกรณ์ทั้งสอง ฉันทำสิ่งต่อไปนี้:
ฉันใส่ไดรฟ์ Seagate Exos X16 ขนาด 16TB ใหม่สี่ตัว ใช้เครื่องมือ "อัพเดตเฟิร์มแวร์" ของ Windows ของ Buffalo เพื่อติดตั้งเฟิร์มแวร์ล่าสุด (1.66) และสร้างอาร์เรย์ RAID5
จากนั้น บนเครื่อง amd64 ที่ใช้ Debian Buster พร้อมเคอร์เนลและเครื่องมือมาตรฐาน ฉันพยายามตั้งค่าระบบไฟล์ที่เข้ารหัส:
#ตามหาอุปกรณ์
iscsiadm -m การค้นพบ -t st -p <ip_address>:3260
# เชื่อมต่อกับระบบย่อย SCSI ของผู้ริเริ่ม
iscsiadm -m node --targetname "iqn.2004-08.jp.buffalo:<device_id>:vol1" --portal <ip_address>:3260,1" --login
# สิ่งนี้ทำให้ /dev/sda ปรากฏขึ้น
# สร้างอุปกรณ์เข้ารหัส
cryptsetup luksFormat /dev/sda
cryptsetup เปิด /dev/sda nas
# สร้างระบบไฟล์และติดตั้ง
mke2fs -t ext4 /dev/mapper/nas
เมานต์ /dev/mapper/nas /mnt/nas/
#รับทำไดเร็กทอรี
mkdir /mnt/nas/store
สิ่งนี้ดูเหมือนจะทำงานได้ดี แต่ทำให้ข้อผิดพลาดต่อไปนี้ปรากฏใน dmesg และ syslog ทันที:
ข้อผิดพลาด EXT4-fs (อุปกรณ์ dm-0): ext4_validate_block_bitmap:384: comm mkdir: bg 18736: การตรวจสอบบิตแมปบล็อกที่ไม่ดี
การคัดลอกข้อมูลบางกิกะไบต์ไปยังอุปกรณ์ยังทำให้เกิดข้อผิดพลาดเช่น
EXT4-fs (dm-0): การจัดสรรบล็อกล่าช้าล้มเหลวสำหรับ inode 479102523 ที่ออฟเซ็ตโลจิคัล 8708096 โดยมีบล็อกสูงสุด 128 พร้อมข้อผิดพลาด 74
EXT4-fs (dm-0): สิ่งนี้ไม่ควรเกิดขึ้น!! ข้อมูลจะสูญหาย
สิ่งนี้สามารถทำซ้ำได้กับอุปกรณ์ NAS ทั้งสอง โดยตัดขาดข้อบกพร่องของฮาร์ดแวร์บางอย่าง
อุปกรณ์เหล่านี้ทำงานได้อย่างไร้ที่ติมานานหลายปี (ด้วย iSCSI โดยไม่มีการเข้ารหัส)
ถ้าฉันทำสิ่งเดียวกันตอนนี้ ปราศจาก ส่วน "cryptsetup" ให้สร้างระบบไฟล์บน /dev/sda โดยตรงและเมานต์ ผมสามารถทำงานกับข้อมูลหลายกิกะไบต์ได้โดยไม่มีข้อผิดพลาดปรากฏใน syslog และไม่มีข้อมูลเสียหาย
ในทางกลับกัน ใช้ขั้นตอนเดียวกันในเครื่อง Debian ตั้งค่าระบบไฟล์ที่เข้ารหัสบนฮาร์ดดิสก์ที่เชื่อมต่อผ่าน USB (แทน iSCSI) ก็ทำงานได้ดีเช่นกัน
ดังนั้น:
ext4 => dm-crypt => iSCSI => Buffalo NAS: "สิ่งนี้ไม่ควรเกิดขึ้น!! ข้อมูลจะสูญหาย"
ext4 => iSCSI => Buffalo NAS: ใช้งานได้
ext4 => dm-crypt => ดิสก์ USB ภายนอก: ใช้งานได้
(โดยที่ "ใช้งานได้" หมายถึง: ฉันคัดลอกไฟล์ประมาณ 10,000 ไฟล์ที่มีขนาดประมาณ 48 GB และตรวจสอบโดยใช้ md5sum ว่าไฟล์ทั้งหมดอยู่ที่นั่นและไม่ได้เสียหาย)
จากนั้นฉันทำการทดสอบซ้ำบนเครื่องที่ใช้ Ubuntu hirsute (21.04) และได้ผลลัพธ์เดียวกัน
มีปัญหาที่ทราบในการเรียกใช้ dm-crypt ที่ด้านบนของ iSCSI หรือไม่ ฉันอาจต้องมีการกำหนดค่าพิเศษสำหรับส่วน iSCSI หรือไม่ เช่น การกำหนดค่าบางอย่างสำหรับแคชหรือขนาดบล็อก