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


9

ฉันใช้สิ่งนี้เพื่อแบ่งพาร์ติชันและเมานต์ EBS บนอินสแตนซ์ของ Amazon EC2 โดยเฉพาะ แต่จริงๆแล้วนี่ควรใช้กับการเริ่มต้นไดรฟ์ใหม่

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

ในการวิจัยนี้ดูเหมือนว่าpartedเป็นคำสั่งที่ดีที่สุดที่จะใช้สำหรับการเขียนสคริปต์ ฉันคิดว่าบางสิ่งที่ตามparted /dev/sdf mkpart primary 0 ENDต้องการคือสิ่งที่ฉันต้องการ แต่ฉันมีเวลาที่ยากลำบากในการหาวิธีที่สง่างามในการกำหนดสิ่งที่ควรจะเป็นปลาย ไม่มีใครรู้วิธีที่ง่ายในการทำเช่นนี้?

คำตอบ:



5

ฉันพบปัญหาเมื่อพยายามใช้คำตอบอื่น สิ่งที่ได้ผลสำหรับฉันคือการใช้วิธีเปอร์เซ็นต์ดังนี้:

$ parted /dev/sdf --script -- mkpart primary 0% 100%

มีปัญหากับpartedวิธีการจัดการกับการจัดตำแหน่งของพาร์ติชัน บทความ 2 เหล่านี้กล่าวถึงปัญหาเล็กน้อย:

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

โดยทั่วไปคุณจะต้องติดป้าย HDD ด้วย ในการทำเช่นนั้นผ่าน CLI ด้วยparted:

$ parted /dev/sde --script -- mklabel msdos

-หรือ-

$ parted /dev/sde --script -- mklabel gpt

ขึ้นอยู่กับ HDD ของคุณ


gdiskจัดตำแหน่งอย่างถูกต้อง ในความคิดของฉันpartedเป็นระเบียบ มันทำมากเกินไปและสิ่งที่มันทำนั้นเชื่อมต่อกันอย่างอิสระเท่านั้น มันแปลกที่มันสร้างระบบไฟล์และตารางพาร์ติชั่นด้วยกัน - โลแคลดิสก์สำหรับข้อมูลที่เขียนนั้นไม่เหมือนในละแวกเดียวกัน ฉันเริ่มเข้าใจว่าดิสก์ทำงานอย่างไรเมื่อฉันรู้ว่าตารางพาร์ติชั่นเป็นแผนที่เล็ก ๆ ที่ตั้งอยู่ที่หัวของมันและมันบอกกับระบบปฏิบัติการว่าจะหาระบบไฟล์ได้ที่ไหนถ้ามันต้องการ เมื่อคลิกแล้วฉันเข้าใจซุปเปอร์บล็อกและเมกาแมนและทั้งหมด ฉันก็คิดอย่างนั้นอยู่ดี
mikeserv

ขอบคุณไซต์ของเครื่องมือในพื้นที่นี้เป็นระเบียบสำหรับฉันเสมอ ฉันผสม sfdisk, fdisk, cfdisk, แยก, และอื่น ๆ ฉันจะลอง fdisk และดูว่ามันง่ายกว่านี้หรือไม่ ส่วนใหญ่มองหาที่ง่ายต่อการเรียกใช้จากตัวเลือก CLI เพื่อรวมไว้ในสคริปต์
slm

โดยทั่วไป[gf]diskไม่เลือกปฏิบัติ stdin ของพวกเขา - พวกเขาไม่สนใจว่ามันมาจากระยะ ดังนั้นลำดับคำสั่งใด ๆ ที่คุณจะป้อนแบบโต้ตอบเพื่อให้ได้สิ่งที่คุณต้องการสามารถแปลเป็นprintfสคริปต์โดยตรง บรรทัดใหม่ทั้งหมดในคำตอบของฉันเป็นเพียง(or press enter for default)ตัวเลือก มันค่อนข้างง่าย เมื่อฉันเล่นรอบ w / พวกเขาฉันเพียงแค่ไป/tmpและfallocate -l1g imgจากนั้นเพียงแค่ใช้ใหม่ของฉัน/tmp/imgไฟล์เป็นดิสก์ของฉัน - พวกเขาไม่ได้ดูแล พวกเขาต้องการเขียนตารางพาร์ติชัน หากคุณทำเช่นเดียวกันให้ดูสิ่งที่เกิดขึ้นกับstrings -1 imgบางครั้ง
mikeserv

แต่ฉันโกหกมาก่อน - megaman ยังเป็นปริศนาสำหรับฉันอยู่ บางทีเขาอาจจะ
mikeserv

1
เมื่อparted /dev/sdf --script -- mkpart primary 0 -1ฉันได้รับคำเตือนว่าจะไม่ปรับให้เหมาะกับประสิทธิภาพที่ดีที่สุด มันใช้งานได้ดีด้วยเปอร์เซ็นต์
nachoparker

2

คุณทำได้...

printf 'n\n\n\n\n\nw\n' | fdisk /dev/disk

... สำหรับประเภท msdos ในทางปฏิบัติสิ่งเดียวกันสำหรับ GPT ...

printf 'n\n\n\n\n\nw\ny\n' | gdisk /dev/disk

และคุณสามารถติดป้ายชื่อดิสก์ของคุณในระหว่างการสร้างระบบแฟ้ม

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