Score:1

เหตุใด Linux "dd" จึงเกิดข้อผิดพลาดโดย "ไม่มีพื้นที่เหลือบนอุปกรณ์" ขณะคัดลอกพาร์ติชันเดียวไปยังอุปกรณ์ขนาดเล็ก

ธง cn

ฉันกำลังพยายามคัดลอกพาร์ติชันเดียว /dev/sda1 ไปยัง /dev/sdc1 แต่ฉันได้รับข้อผิดพลาด "ไม่มีพื้นที่เหลือบนอุปกรณ์" และฉันไม่เข้าใจว่าทำไม

ฉันกำลังทำงานบน Oracle Cloud Infrastructure (OCI) VM โดยที่ /dev/sda เป็นไดรฟ์ข้อมูล 768 GB ซึ่งพาร์ติชัน sda1 ถูกลดขนาดลงเหลือเพียง 32 GB (กระบวนการนี้ใช้ได้ ข้อมูลไม่สูญหาย! ฉันสามารถรับประกันได้เนื่องจากไดรฟ์ข้อมูลนั้น กลุ่มดิสก์ Oracle Database ASM และทุกอย่างทำงานได้ดีหลังจากย่อขนาด)

เนื่องจาก OCI อนุญาตให้เพิ่มขนาดวอลุ่มเท่านั้น ฉันจึงสร้างวอลุ่มใหม่ /dev/sdc ขนาด 50 GB (ซึ่งเป็นขนาดขั้นต่ำที่อนุญาต) และสร้างพาร์ติชัน /dev/sdc1 เพียง 32 GB (ขนาดเดียวกับ /dev/sda1)

ชื่อ MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 50G 0 ดิสก์
ââsdc1 8:33 0 32G 0 ส่วน
sda 8:0 0 768G 0 ดิสก์
ââsda1 8:1 0 32G 0 ส่วน

ฉันได้รับข้อผิดพลาดขณะทำงาน

# dd if=/dev/sda1 of=/dev/sdc1 bs=512b conv=noerror,sync
dd: เกิดข้อผิดพลาดในการเขียน â/dev/sdc1â: ไม่มีพื้นที่เหลือในอุปกรณ์
22567+0 บันทึกใน
22566+0 บันทึกออก
5915787264 ไบต์ (5.9 GB) คัดลอก 42.9384 วินาที 138 MB/วินาที

พาร์ติชันทั้งสองมีขนาดเท่ากันทุกประการ ดังที่แสดงโดย fdisk

#fdisk /dev/sda

ดิสก์ /dev/sda: 824.6 GB, 824633720832 ไบต์, 1610612736 ภาค
หน่วย = ภาคของ 1 * 512 = 512 ไบต์
ขนาดเซกเตอร์ (โลจิคัล/กายภาพ): 512 ไบต์ / 4096 ไบต์
ขนาด I/O (ต่ำสุด/เหมาะสม): 4096 ไบต์ / 1048576 ไบต์
ประเภทป้ายชื่อดิสก์: dos
ตัวระบุดิสก์: 0x7c9bf84b

   ระบบ ID เริ่มต้นการบูตอุปกรณ์สิ้นสุดการบล็อก
/dev/sda1 2048 67108863 33553408 83 ลินุกซ์


# fdisk /dev/sdc
ดิสก์ /dev/sdc: 53.7 GB, 53687091200 ไบต์, 104857600 ภาคส่วน
หน่วย = ภาคของ 1 * 512 = 512 ไบต์
ขนาดเซกเตอร์ (โลจิคัล/กายภาพ): 512 ไบต์ / 4096 ไบต์
ขนาด I/O (ต่ำสุด/เหมาะสม): 4096 ไบต์ / 1048576 ไบต์
ประเภทป้ายชื่อดิสก์: dos
ตัวระบุดิสก์: 0x9b11add5

   ระบบ ID เริ่มต้นการบูตอุปกรณ์สิ้นสุดการบล็อก
/dev/sdc1 2048 67108863 33553408 83 ลินุกซ์

ผมทำอะไรผิดหรือเปล่า?

in flag
เกิดข้อผิดพลาดค่อนข้างเร็วเมื่อเทียบกับ 32G ฉันจะตรวจสอบโหนด `ls -l /dev/sd?1` ตรวจสอบหมายเลขโหนดด้วย `lsblk -b` ตรวจสอบ `dmesg` สำหรับข้อความใด ๆ ใช้ `dd_rescue` หรือ `ddrescue` แทน.
Score:0
ธง cn

ฉันไม่รู้ว่าปัญหาคืออะไร แต่ฉันใช้งานได้เพียงแค่โคลนวอลุ่มทั้งหมด

# dd if=/dev/sda of=/dev/sdc bs=512b conv=noerror,sync

แน่นอน การดำเนินการจะหยุดที่ 50 GB นั่นคือขนาดรวม /dev/sdc ที่มีข้อผิดพลาดในข้อความเดียวกัน แต่ผลลัพธ์ก็ใช้ได้

A.B avatar
cl flag
A.B
สิ่งที่อาจเป็นปัญหา: ระบบของคุณไม่ได้อัปเดตตารางพาร์ติชันในหน่วยความจำคุณอาจสร้าง /dev/dc1 ที่ ~ 6G และเพิ่มในภายหลัง เครื่องมือที่ง่ายที่สุดในการบังคับให้อัปเดตคือ `kpartx -u ...` สิ่งนี้จะเกิดขึ้นก็ต่อเมื่อมีการใช้งานพาร์ติชันอยู่เท่านั้น

โพสต์คำตอบ

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