ฉันจะลบดิสก์ SATA อย่างปลอดภัยออกจากระบบที่รันอยู่ได้อย่างไร


64

บางครั้งฉันจำเป็นต้องเสียบดิสก์เข้ากับช่องใส่ดิสก์ ในบางครั้งฉันมีการตั้งค่าที่แปลกมากในการเชื่อมต่อ SSD โดยใช้สายเคเบิล SATA-eSATA บนแล็ปท็อปของฉันในขณะที่ดึงพลังงานจากเดสก์ท็อป

ฉันจะลบดิสก์ SATA ออกจากระบบได้อย่างปลอดภัยได้อย่างไร ฟอรัมฟอรัมPhoronixนี้มีคำแนะนำ:

justsumdood wrote:

An Droid (noymous) wrote:
แล้วคุณจะทำอะไรในด้านซอฟต์แวร์ก่อนที่จะถอดปลั๊ก? มันเป็น "umount / dev / sd" ง่าย ๆ [ตัวอักษรไดรฟ์]? หลังจากเลิกเมานท์อุปกรณ์เพื่อ "ปิดเครื่อง" (หรือสลีป) เครื่อง:

hdparm -Y /dev/sdX

(โดยที่ X แทนอุปกรณ์ที่คุณต้องการปิดเช่น: / dev / sdb)

สิ่งนี้จะให้พลังงานแก่ไดรฟ์เพื่อให้สามารถกำจัดได้โดยไม่เสี่ยงต่อแรงดันไฟกระชาก

นี่หมายความว่าแคชของดิสก์ถูกล้างออกและปิดอย่างถูกต้องหรือไม่

ข้อเสนอแนะอื่นจากหัวข้อเดียวกัน:

chithanh wrote:
ฮาร์ดแวร์ SATA และ eSATA ทั้งหมดสามารถใช้ hotplugged ได้ (เช่นไม่เสียหายหากคุณเสียบ / ดึงปลั๊ก)

ชิปเซ็ตและไดรเวอร์จัดการกับคำถามนี้อย่างไร ชุดไดรเวอร์ / ชิปเซ็ตบางตัวไม่รองรับ hotplugging อย่างถูกต้องและต้องการคำสั่ง warmplug เช่นชุดต่อไปนี้:

echo 0 - 0 > /sys/class/scsi_host/hostX/scan

แทนที่ X ด้วยหมายเลขที่เหมาะสมสำหรับพอร์ต SATA / eSATA ของคุณ

ฉันสงสัยว่าเป็นวิธีที่ถูกต้องหรือไม่ แต่ฉันไม่สามารถหาข้อพิสูจน์ได้

ดังนั้นวิธีที่ถูกต้องในการลบดิสก์ที่แนบมาจากระบบคืออะไร? syncสมมติว่าผมได้เดินเท้าแล้วพาร์ติชันบนดิสก์ทุกคนและวิ่ง กรุณาชี้ไปที่เอกสารบางอย่างเป็นทางการถ้าเป็นไปได้ผมไม่สามารถหาอะไรในต้นไม้เอกสารลินุกซ์หรือวิกิพีเดียลินุกซ์ ATA

คำตอบ:


82
  1. ถอนติดตั้งระบบไฟล์ใด ๆ บนดิสก์ ( umount ...)
  2. ปิดใช้งานกลุ่ม LVM ใด ๆ ( vgchange -an)
  3. ตรวจสอบให้แน่ใจว่าไม่มีอะไรใช้ดิสก์สำหรับสิ่งใด
  4. เมื่อคุณทำเช่นนั้นแล้วควรถอดปลั๊กออกอย่างปลอดภัย

หากคุณต้องการระมัดระวังเป็นพิเศษให้ทำecho 1 > /sys/block/(whatever)/device/deleteก่อน นั่นจะเป็นการยกเลิกการลงทะเบียนอุปกรณ์จากเคอร์เนลดังนั้นคุณจึงไม่รู้ว่าไม่มีอะไรใช้เมื่อคุณถอดปลั๊กออก เมื่อฉันทำเช่นนั้นด้วยไดรฟ์ในกล่องหุ้ม eSATA ฉันสามารถได้ยินเสียงหัวของไดรฟ์จอดเองดังนั้นเคอร์เนลจึงแจ้งให้ไดรฟ์ทราบเพื่อเตรียมพร้อมสำหรับการปิดเครื่อง

หากคุณกำลังใช้คอนโทรลเลอร์ AHCI มันควรจะรับมือกับอุปกรณ์ที่ไม่ได้เสียบปลั๊ก หากคุณใช้คอนโทรลเลอร์ SATA บางประเภทไดรเวอร์อาจสับสนโดยการเสียบปลั๊ก

จากประสบการณ์ของฉัน SATA hotplugging (พร้อม AHCI) ทำงานได้ค่อนข้างดีใน Linux ฉันถอดปลั๊กออปติคัลไดรฟ์เสียบฮาร์ดไดรฟ์สแกนหาข้อผิดพลาดสร้างระบบไฟล์และคัดลอกข้อมูลลงในเครื่องแล้ว unmount และถอดปลั๊กเสียบในไดรฟ์ DVD ที่แตกต่างกันและเขียนดิสก์ทั้งหมดด้วยเครื่อง และวิ่ง


ฉันต้องถอดปลั๊ก HDD ซึ่งฉันต้องการลบออกอย่างสมบูรณ์ หลังจากดึงดิสก์ออกจากช่องแล้ว / dev / sdXY ยังคงปรากฏขึ้น การเขียน1เพื่อdeleteทำให้มันหายไปและผมได้ยินปั่นดิสก์ลง เพียงแค่hdparm -Yไม่เพียงพอเพราะ/dev/รายการจะยังคงมีอยู่ ขอบคุณ!
Lekensteyn

16
ฉันแนะนำอย่างยิ่งให้ออกคำสั่งเสมอecho 1 > /sys/block/(whatever)/device/deleteเพราะไดรฟ์จะจอดหัวหยุดดิสก์ทั้งหมดและปิดการใช้งานพลังงานบนรถบัส หากหัวที่ไม่ได้จอดสัมผัสกับจานหมุนไดรฟ์สามารถถูกทำลายได้อย่างถาวร
drumfire

2
นอกจากนี้หากมีการเกิด smartd ขึ้นมาเป็นความคิดที่ดีที่จะออก SIGHUP ไปยังกระบวนการเพื่อให้โหลดข้อมูลไดรฟ์อีกครั้ง สำคัญอย่างยิ่งหากคุณกำลังเปลี่ยนไดรฟ์เนื่องจาก smartd จะโหลดข้อมูลสำหรับไดรฟ์นั้นและสิ่งอื่น ๆ ทั้งหมด
drumfire

1
เพียงหนึ่งบันทึกมูลค่าการกล่าวขวัญecho 1 > /sys/block/(whatever)/device/deleteจะไม่ทำงานภายใต้sudoข้อผิดพลาด "ปฏิเสธการอนุญาต" จะถูกโยน คุณจะต้องกลายเป็นรูทที่แท้จริงดังนั้นให้ใช้ old old ธรรมดาsuแทน
TranslucentCloud

11
@TranslucentCloud คุณสามารถไพพ์ผ่านsudo teeเพื่อเลียนแบบการเปลี่ยนเส้นทางในขณะที่รูท:echo 1 | sudo tee /sys/block/(whatever)/device/delete
Oli

5

ทั้งสองส่วนนั้นต่างกัน

ครั้งแรกสำหรับการถอดปลั๊ก ประการที่สองคือสำหรับเสียบ

สำหรับการถอดปลั๊กระบบปฏิบัติการจะทำการซิงค์ข้อมูลระหว่างการยกเลิกการต่อเชื่อม ดังนั้นหากดิสก์ถูกถอดออก (สมมติว่าคุณมีการสนับสนุนฮาร์ดแวร์แบบเต็มรูปแบบ) คุณสามารถปิดดิสก์แล้วถอดออกโดยไม่เสี่ยงต่อการสูญหายของข้อมูลหรือความเสียหาย

สำหรับการเสียบอุปกรณ์ควรได้รับการยอมรับโดยอัตโนมัติ หากไม่เป็นเช่นนั้นคุณสามารถดำเนินการคำสั่งนั้นเพื่อเรียกใช้การสแกนบัส เมื่ออุปกรณ์ได้รับการยอมรับคุณสามารถติดตั้งได้

ขอผมพูดอย่างนี้โดยบอกว่าผมทำสิ่งนี้ด้วยไดรฟ์ USB


ขอบคุณสำหรับคำตอบของคุณ แต่ฉันก็ยังไม่มั่นใจว่าการกระทำที่ถูกต้องจะเป็นอย่างไร SSD นั้นมีช่อง SMART "Unsafe Shutdown Count" เพียงแค่ถอดปลั๊กโดยไม่ทำอะไรเลยไม่ปลอดภัยสำหรับฉัน
Lekensteyn

3
ถ้าช่วยได้ฉันจะเสียบฮาร์ดไดรฟ์ hot-plug และ hot-unplug SATA เป็นส่วนหนึ่งของงานของฉันโดยไม่ต้องทำให้แน่ใจว่ามันไม่ได้เมานต์ก่อนและฉันไม่เคยเจอปัญหาใด ๆ นั่นเป็นเรื่องเล็ก ๆ น้อย ๆ ดังนั้นอย่าถือเป็นข่าวประเสริฐ แต่อย่างน้อยก็มีหลักฐานบางอย่างที่น่าจะปลอดภัย ไม่ว่าในกรณีใดฉันจะพิจารณาว่าเป็นข้อผิดพลาดเคอร์เนลหากระบบปฏิบัติการไม่มั่นใจว่าข้อมูลถูกเขียนอย่างสมบูรณ์เมื่อสิ้นสุดการดำเนินการ unmount โดยเฉพาะในโลก hotplug
Jander

1
@Lekensteyn hdparm -Yจะดูแลที่ นั่นคือสิ่งที่ระบบใช้ในทุกครั้งที่คุณหยุดชั่วคราวหรือปิดระบบ
psusi

5

แล้วeject /dev/sdXไงล่ะ ในการตั้งค่าของฉันคำสั่งนี้จะติดตั้งซิงค์และปิดไดรฟ์


4
ฉันลองสิ่งนี้กับดิสก์ที่เชื่อมต่อผ่าน eSATA แต่คำสั่งล้มเหลวด้วย "ไม่สามารถเสียบได้" หรือบางอย่าง
Lekensteyn

1
Afaik eject ออกจากดิสก์ที่เสียบได้และไม่ใช่อุปกรณ์ ขึ้นอยู่กับว่าไดรเวอร์อุปกรณ์บล็อกรองรับการioctl()ทำงานของejectเครื่องมือ ฮาร์ดไดรฟ์ Esata ไม่รองรับ แต่อุปกรณ์อ็อปติคัลฟลอปปีและอาจเป็นแฟลชไดรฟ์ใช่
user259412

2

ฉันมีคู่ของสคริปที่สร้างเมื่อคำตอบโดย Wyzard อย่างแรกscsi-dropคือการถอดดิสก์แผ่นเดียวอย่างปลอดภัย:

#!/bin/sh

if test -h "$1"
then
    disk=$(chase "$1")
else
    disk="$1"
fi

if test -b "$disk"
then
    echo 1 >/sys/block/$(basename "$disk")/device/delete
else
    echo "$0: not a block device: $1" >&2
    exit 1
fi

ประโยชน์หลักของมันคือคุณสามารถส่งผ่าน symlink เช่นที่พบใน/dev/disk/by-id/และมันจะแก้ไขให้กับอุปกรณ์จริง มันจะต้องchaseมีการติดตั้ง; readlink -eคุณอาจจะสามารถที่จะได้รับผลเดียวกันโดยใช้

สคริปต์ที่สองscsi-rescanถูกใช้หลังจาก hotplugging อุปกรณ์ใหม่:

#!/bin/bash

exec tee /sys/class/scsi_host/host*/scan <<<'- - -' >/dev/null

ทำให้อะแดปเตอร์ทั้งหมดสแกนอุปกรณ์อีกครั้ง มันเป็นวิธีเดียวที่ฉันจัดการเพื่อให้ได้ความสามารถใหม่และตารางพาร์ติชันเพื่ออ่าน


0

ที่จริงแล้วไดรฟ์ SATA จะจอดหัวโดยอัตโนมัติเมื่อไฟฟ้าดับ ดึงไดรฟ์ในขณะที่ยังคงหมุนไม่ควรทำให้เกิดปัญหา อย่างไรก็ตามดิสก์หมุนได้มีแนวโน้มที่จะ dings ถ้าชน คุณสามารถได้ยินสิ่งนี้เมื่อคุณมีพลังงานที่ไม่สม่ำเสมอหรือเปลวสุริยะ

ความเสียหายส่วนใหญ่มักเกิดจากแคชที่ไม่ได้ล้างและการเขียนที่ไม่ได้รับการกำหนดในบัฟเฟอร์ ฯลฯ ... นี่คือสาเหตุที่คุณต้องยกเลิกการต่อเชื่อมไดรฟ์ก่อนที่จะลบออก คำสั่ง SCSI เป็นเพียงการวัดที่ดีและใช้งานได้เหมือนกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.