Score:0

อะไรจะป้องกัน hdd hot-swap ใน linux ahci ได้

ธง pk

ฉันกำลังฉีกผมออกจากปัญหานี้

ฉันต้องการเพิ่มช่อง hotswap ให้กับโฮมเซิร์ฟเวอร์ของฉัน เพื่อเพิ่มและลบ HDD ได้อย่างง่ายดาย เช่น เพื่อหมุนเวียนข้อมูลสำรองนอกสถานที่ได้อย่างง่ายดาย เมนบอร์ดที่เป็นปัญหาคือเมนบอร์ด Asrock J4105-ITX ที่มีพอร์ต SATA สี่พอร์ตซึ่งแบ่งระหว่าง ASM1062 และคอนโทรลเลอร์ SATA ของโปรเซสเซอร์ Intel ทั้งทำงานได้ดีและใช้ อาซี โมดูลเคอร์เนล มีตัวเลือก hot-swap ใน BIOS แต่ดูเหมือนจะไม่มีผล

หากไดรฟ์ถูกตัดการเชื่อมต่อ (ไม่ว่าจะผ่าน เสียงสะท้อน 1 > /sys/block/sdX/device/delete หรือโดยการถอดไดรฟ์อย่างหยาบคาย) จะไม่มีการจดจำอุปกรณ์ใหม่หลังจากเชื่อมต่อใหม่ ฉันได้ลองบังคับให้สแกนซ้ำ (เสียงสะท้อน "- - -" > /sys/class/scsi_host/host<n>/scan) แต่ไม่มีประโยชน์ พอร์ต SATA ไม่สามารถใช้งานได้อีกต่อไปจนกว่าจะรีบูตครั้งถัดไป ฉันยังลองใช้คำสั่งที่รุนแรงกว่านี้โดยไม่มีโชค:

เสียงสะท้อน 1 > /sys/class/scsi_device/2:0:0:0/device/reset
เสียงสะท้อน 1 > /sys/devices/pci0000:00/0000:00:1f.2/rescan
เสียงสะท้อน 1 > /sys/devices/pci0000:00/0000:00:1f.2/reset

(เอามาจาก ฉันจะทำให้ Linux รู้จักไดรฟ์ SATA /dev/sda ใหม่ที่ฉันเปลี่ยนโดยไม่ต้องรีบูตได้อย่างไร)

"เอาล่ะ อาจเป็นเพราะชิปเซ็ตไม่รองรับ hot swap หรือ BIOS มีปัญหา" ดังนั้นฉันจึงสั่งซื้อ PCIe SATA Controller สองตัว (อันหนึ่งใช้ ASM1064 อีกอันใช้ Marvell 88SE9215) ทั้งสองแสดงปัญหาเดียวกัน แม้ว่าผู้ซื้อรายอื่นระบุว่า hot-swap ใช้งานได้ ดังนั้นฉันเดาว่าปัญหาน่าจะเชื่อมโยงกับซอฟต์แวร์ (การติดตั้งของฉัน? ฉันใช้ Arch OS ซึ่งได้รับการปรับปรุงตามหน้าที่)

หวังว่าข้อมูลที่เป็นประโยชน์บางอย่าง:

$ uname -a
ชื่อเซิร์ฟเวอร์ Linux 5.14.14-arch1-1 #1 SMP PREEMPT วันพุธที่ 20 ตุลาคม 2021 21:35:18 +0000 x86_64 GNU/Linux

$dmesg | เกรป อาซี
[ 0.447450] ahci 0000:00:12.0: รุ่น 3.0
[ 0.447842] ahci 0000:00:12.0: ชุดแฟล็ก SSS ปิดใช้งานการสแกนบัสขนาน
[ 0.457970] ahci 0000:00:12.0: AHCI 0001.0301 32 ช่อง 2 พอร์ต 6 Gbps 0x3 โหมด SATA impl
[ 0.457981] ahci 0000:00:12.0: ธง: 64 บิต ncq sntf stag pm clo only pmp pio ส่วนสลัม sxs deso sadm sds apst 
[ 0.458750] scsi host0: ahci
[ 0.459204] scsi host1: ahci
[ 0.469788] ahci 0000:01:00.0: AHCI 0001.0000 32 ช่อง 4 พอร์ต 6 Gbps 0xf impl โหมด SATA
[ 0.469801] ahci 0000:01:00.0: ธง: 64 บิต ncq sntf นำเฉพาะ pmp fbs pio ส่วนสลัม sxs 
[ 0.470767] scsi host2: ahci
[ 0.471203] scsi host3: ahci
[ 0.471562] scsi host4: ahci
[ 0.471904] scsi host5: ahci
[ 0.472341] ahci 0000:04:00.0: ชุดแฟล็ก SSS ปิดใช้งานการสแกนบัสขนาน
[ 0.472376] ahci 0000:04:00.0: AHCI 0001.0200 32 ช่อง 2 พอร์ต 6 Gbps 0x3 โหมด SATA impl
[ 0.472382] ahci 0000:04:00.0: ธง: 64 บิต ncq sntf กวางนำ clo pmp pio ส่วนสลัม ccc 
[ 0.472803] scsi host6: ahci
[ 0.473011] scsi host7: ahci

$lspci -v
[...]
01:00.0 คอนโทรลเลอร์ SATA: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 คอนโทรลเลอร์ SATA 6 Gb/s 4 พอร์ต (rev 11) (prog-if 01 [AHCI 1.0])
    ระบบย่อย: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
    ค่าสถานะ: บัสมาสเตอร์, การพัฒนาที่รวดเร็ว, เวลาแฝง 0, IRQ 127
    พอร์ต I/O ที่ e050 [ขนาด=8]
    พอร์ต I/O ที่ e040 [size=4]
    พอร์ต I/O ที่ e030 [size=8]
    พอร์ต I/O ที่ e020 [size=4]
    พอร์ต I/O ที่ e000 [size=32]
    หน่วยความจำที่ a1340000 (32 บิต ไม่สามารถดึงล่วงหน้าได้) [size=2K]
    ROM ส่วนขยายที่ a1300000 [ปิดใช้งาน] [size=256K]
    ความสามารถ: [40] การจัดการพลังงานเวอร์ชัน 3
    ความสามารถ: [50] MSI: Enable+ Count=1/1 Maskable- 64bit-
    ความสามารถ: [70] Express Legacy Endpoint, MSI 00
    ความสามารถ: [e0] SATA HBA v0.0
    ความสามารถ: [100] การรายงานข้อผิดพลาดขั้นสูง
    ไดรเวอร์เคอร์เนลที่ใช้งานอยู่: ahci
[...]
Score:0
ธง pk

ในที่สุดฉันก็พบเหตุผล: การปรับแต่ง powertop ของฉันรุนแรงเกินไป!

เนื่องจากเซิร์ฟเวอร์นี้ทำงานตลอด 24/7 และค่าไฟฟ้าค่อนข้างแพงในบริเวณนี้ ฉันจึงเพิ่มบริการ systemd เพื่อปรับตัวเลือก powertop ทั้งหมดโดยอัตโนมัติ:

$cat /etc/systemd/system/powertop.service
[หน่วย]
Description=การปรับแต่ง Powertop

[บริการ]
Type=วันช็อต
RemainAfterExit=ใช่
ExecStart=/usr/bin/powertop --ปรับแต่งอัตโนมัติ

[ติดตั้ง]
WantedBy=multi-user.target

ซึ่งเหมือนกับการเปิด powertop tui และตั้งค่าตัวเลือกทั้งหมดเป็น 'ดี' บิตที่สำคัญคือสี่บรรทัดเกี่ยวกับ รันไทม์ PM สำหรับพอร์ต ataX:

   PM รันไทม์ที่ดีสำหรับพอร์ต ata3 ของอุปกรณ์ PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
   PM รันไทม์ไม่ถูกต้องสำหรับพอร์ต ata4 ของอุปกรณ์ PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
   PM รันไทม์ที่ดีสำหรับพอร์ต ata5 ของอุปกรณ์ PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
>> PM รันไทม์ที่ดีสำหรับพอร์ต ata6 ของอุปกรณ์ PCI: Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller
   PM รันไทม์ที่ดีสำหรับอุปกรณ์ PCI Marvell Technology Group Ltd. 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller

พวกเขาดำเนินการ echo 'อัตโนมัติ' > '/sys/bus/pci/devices/0000:01:00.0/ata4/power/control'; ซึ่งทำให้การ์ด SATA ไม่รู้จักอุปกรณ์ใหม่ในพอร์ต!

หลังจากตั้งค่าเท่านั้น พลังงาน / การควบคุม ถึง บน (ตัวเลือก 'ไม่ดี' ตาม powertop) การ์ดจะค้นหาอุปกรณ์ใหม่หลังจากดำเนินการหรือไม่ เสียงสะท้อน 0 0 0 | sudo tee /sys/class/scsi_host/host*/scan

สิ่งเดียวที่ขาดหายไปคือการสแกนซ้ำอัตโนมัติ เนื่องจากเดสก์ท็อปพีซีของฉันจะค้นหาอุปกรณ์ใหม่โดยอัตโนมัติโดยไม่จำเป็นต้องเขียน hostX/สแกนแต่ฉันสามารถอยู่กับสิ่งนี้ได้ในตอนนี้ นี่เป็นประสบการณ์ที่น่าผิดหวังอย่างมาก ดังนั้นฉันหวังว่านี่จะช่วยคนที่ประสบปัญหาเดียวกันได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา