Bagaimana saya bisa membuat skrip pembuatan partisi tunggal yang menggunakan seluruh perangkat?

9

Saya secara khusus menggunakan ini untuk mempartisi dan me-mount volume EBS pada instance Amazon EC2, tetapi sebenarnya ini harus secara umum berlaku untuk menginisialisasi drive baru.

Seperti yang dikatakan dalam pertanyaan, saya ingin membuat skrip pembuatan partisi primer tunggal yang menggunakan semua ruang yang tersedia pada perangkat yang diberikan. Saya tidak akan tahu sebelumnya seberapa besar perangkat ini dan itu bisa sangat besar (yaitu beberapa TB).

Dalam meneliti ini sepertinya partedadalah perintah terbaik untuk digunakan untuk skrip. Saya pikir sesuatu di sepanjang garis parted /dev/sdf mkpart primary 0 ENDadalah apa yang saya inginkan, tetapi saya mengalami kesulitan mencari cara yang elegan untuk menentukan apa yang seharusnya menjadi AKHIR. Adakah yang tahu cara mudah untuk melakukan ini?

Mike Deck
sumber

Jawaban:

11

Anda dapat melakukan ini seperti ini:

parted /dev/sdf --script -- mkpart primary 0 -1
Gilles Quenot
sumber
5

Saya mengalami masalah ketika saya mencoba menggunakan jawaban yang lain. Apa yang berhasil bagi saya adalah menggunakan pendekatan persentase seperti ini sebagai gantinya:

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

Ada masalah dengan parteddan cara berurusan dengan penyelarasan partisi. 2 artikel ini sedikit membahas masalah ini:

Matematika yang diuraikan dalam artikel-artikel itu sama sekali tidak berhasil dalam skenario saya. Terkubur di salah satu komentar pada yang kedua, tautan seseorang menyarankan menggunakan persentase dan itu berhasil.

Kebetulan Anda juga perlu memberi label HDD. Untuk melakukannya melalui CLI dengan parted:

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

-atau-

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

Tergantung pada HDD Anda.

slm
sumber
gdiskmenyelaraskan dengan benar. Menurut pendapat saya, partedberantakan. Itu terlalu banyak - dan hal-hal yang dilakukannya hanya terhubung secara longgar. Sungguh aneh bagaimana ia menciptakan filesystem dan tabel partisi bersama - locarions disk untuk data yang ditulisnya tidak seperti di lingkungan yang sama. Saya hanya mulai mengerti bagaimana disk bekerja ketika saya menyadari bahwa tabel partisi adalah sebuah peta kecil yang berada di kepalanya, dan ia memberi tahu os di mana ia mungkin mencari sistem file jika ia mau. Ketika itu diklik, saya mengerti superblock dan megaman dan semuanya. Yah, saya juga suka berpikir begitu.
mikeserv
Terima kasih, situs alat di ruang ini selalu berantakan bagi saya. Saya terus-menerus mencampur sfdisk, fdisk, cfdisk, berpisah, dll. Saya akan mencoba fdisk dan melihat apakah itu lebih mudah. Terutama mencari yang mudah dijalankan dari opsi cli untuk dimasukkan dalam skrip.
slm
Pada dasarnya [gf]diskjangan membeda-bedakan stdin mereka - mereka tidak peduli apakah itu dari termInal. Jadi setiap urutan perintah yang Anda masukkan secara interaktif untuk mendapatkan yang Anda inginkan dapat langsung diterjemahkan ke dalam printfskrip. Semua baris baru dalam jawaban saya hanyalah (or press enter for default)opsi. Cukup mudah. Ketika saya bermain-main w / mereka saya hanya pergi ke /tmpdan fallocate -l1g imgkemudian hanya menggunakan baru saya /tmp/imgfile sebagai disk saya - mereka tidak peduli. Mereka hanya ingin menulis tabel partisi. Jika Anda melakukan hal yang sama, lihat apa yang terjadi dengan strings -1 imgsesekali.
mikeserv
Tapi aku berbohong sebelumnya - megaman tetap misterius bagiku. Mungkin dia akan selalu melakukannya.
mikeserv
1
dengan parted /dev/sdf --script -- mkpart primary 0 -1saya mendapat peringatan untuk tidak selaras untuk kinerja terbaik. Ini berjalan baik dengan persentase
nachoparker
2

Anda dapat melakukan...

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

... untuk jenis msdos. Praktis hal yang sama berfungsi untuk ...

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

Dan Anda dapat memberi label disk Anda selama waktu pembuatan sistem file.

mikeserv
sumber