Buat partisi sejajar menggunakan parted

68

Saya mempartisi hard disk non-SSD dengan parted karena saya ingin tabel partisi GPT.

parted /dev/sda mklabel gpt

Sekarang, saya mencoba membuat partisi dengan benar sehingga saya menggunakan perintah berikut untuk mengetahui di mana sektor pertama dimulai:

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

Kita dapat melihat bahwa itu dimulai di sektor 34 (itu adalah default ketika tabel partisi ini digunakan).

Jadi, untuk membuat partisi pertama saya mencoba:

parted /dev/sda mkpart primary 63s 127s

untuk menyelaraskannya di sektor 64 karena ini merupakan kelipatan dari 8 tetapi ini menunjukkan:

Peringatan: Partisi yang dihasilkan tidak selaras dengan benar untuk kinerja terbaik.

Ukuran sektor logis dan fisik di hard disk saya adalah 512 byte:

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

Bagaimana cara membuat partisi dengan benar? Apa yang saya lakukan salah?

Marc
sumber
Apakah Anda yakin angka sektor mulai dari nol?
Burton Samograd
1
Saya mencoba juga parted /dev/sda mkpart primary 64s 128s(kalau-kalau dimulai dalam 1) tetapi mengembalikan peringatan yang sama.
Marc
Sepertinya ada perintah untuk memeriksa apakah suatu nilai selaras: gnu.org/software/parted/manual/html_node/align_002dcheck.html . Mungkin mencobanya dengan berbagai nilai menggunakan for loop dan memuntahkan nilai yang ok?
Burton Samograd
Burton, saya tidak tahu tentang perintah itu tetapi tidak dapat digunakan sampai memiliki partisi.
Marc
Maaf tentang itu, saya tidak cukup membaca deskripsi.
Burton Samograd

Jawaban:

68

Untuk menyelaraskan partisi dengan partedAnda dapat menggunakan --alignopsi. Jenis perataan yang valid adalah:

  • tidak ada - Gunakan perataan minimum yang diizinkan oleh jenis disk.
  • silinder - Sejajarkan partisi ke silinder.
  • minimal - Gunakan perataan minimum seperti yang diberikan oleh informasi topologi disk. Ini dan nilai opt akan menggunakan informasi tata letak yang disediakan oleh disk untuk menyelaraskan alamat tabel partisi logis ke blok fisik aktual pada disk. Nilai minimum adalah perataan minimum yang diperlukan untuk menyelaraskan partisi dengan benar ke blok fisik, yang menghindari degradasi kinerja.
  • optimal Gunakan penyelarasan optimal seperti yang diberikan oleh informasi topologi disk. Ini sejajar dengan kelipatan ukuran blok fisik dengan cara yang menjamin kinerja optimal.

Kiat bermanfaat lainnya adalah Anda dapat mengatur ukuran dengan persentase agar selaras. Mulai dari 0% dan berakhir pada 100%. Sebagai contoh:

parted -a optimal /dev/sda mkpart primary 0% 4096MB

lik
sumber
5
Haruskah perintah itu tidak berakhir 0% 100%? Dari mana datangnya 4096MB?
njahnke
4
Nilai 4096MB digunakan di sini hanya contoh untuk menunjukkan kemampuan pencampuran% dan angka ukuran tertentu
lik
3
Hanya sebuah catatan, saya harus menyertakan '0%'tanda kutip di dalam untuk shell saya untuk menjalankan perintah dengan benar.
Adam Eberlin
@lik, apakah Anda punya saran untuk posting ini unix.stackexchange.com/questions/248939/…
AnkurTank
1
Nevermind di atas, saya hanya melihat printkB menggunakan 1000 byte ...
jiggunjer
9

Solusi saya adalah menggunakan gdisk yang dapat melakukan perataan partisi secara otomatis pada sektor 2048 (1024KiB) secara default, meskipun dapat diubah di menu ahli.

Marc
sumber
7

Dari Arch Wiki :

Saat membuat partisi, parted mungkin memperingatkan tentang perataan partisi yang tidak tepat tetapi tidak memberi petunjuk tentang perataan yang tepat. Sebagai contoh:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

Peringatan itu berarti partisi starttidak selaras.

Masuk Ignoreuntuk tetap melanjutkan , cetak tabel partisi di sektor-sektor untuk melihat di mana ia dimulai, dan hapus / buat ulang partisi dengan sektor mulai dibulatkan ke peningkatan kekuatan 2 sampai peringatan berhenti. Sebagai salah satu contoh, pada flash drive dengan sektor 512B, Parted ingin partisi untuk memulai pada sektor yang merupakan kelipatan 2048, yaitu penyelarasan 1MB.

Selain itu, tepat di atas bagian ini, mereka menyatakan bahwa unit biner IEC yang lebih tepat dari KiB, MiB, GiB, dll., Dapat diterima untuk unit serta KB, MB, GB, dll yang kurang tepat.

Secara pribadi, perintah tepat saya yang memecahkan ini adalah:

mkpart hd ext4 1024KiB 8470MB

Itu tidak mengeluh, saya kira itu ingin keberpihakan 1MB.

Travis Rodman
sumber
Tidak, saya mencoba 1048576KiB, tanpa dadu.
Behrooz
5

Koreksi kecil. Seperti yang saya pahami, disk GPT tidak memiliki tipe partisi lagi, mereka semua "primer". Perintah 'mkpart primer' tidak membuat partisi primer seperti pada disk msdos, hanya membuat partisi yang disebut primer. Anda bisa menggunakan perintah

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

Ini dapat menyebabkan kebingungan jika Anda mencoba membuat partisi logis, saya tahu itu untuk saya.

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

Anda tidak dapat membuat partisi yang disebut "logis" di dalam partisi yang disebut "extended".

Miksa
sumber
terima kasih, saya hanya membuang sedikit waktu berkat alat ini cli buruk, dan Anda membuat saya mencari tahu apa yang terjadi.
Florian Heigl
5

The jawaban yang diterima oleh @lik menunjukkan bagaimana Anda dapat menentukan keselarasan disukai. Namun, parted selalu menggunakan perataan itu untuk memeriksa partisi yang dihasilkan, tetapi tidak selalu membuat partisi dengan perataan itu.

TL; DR: Ketika 1MiB adalah penyelarasan optimal, menentukan 0% akan bekerja untuk disk 200MiB dan lebih besar. Untuk disk yang lebih kecil atau penjajaran yang lebih besar, menentukan 0G dapat bekerja di mana 0% tidak. Lihat di bawah tentang alasannya.

Parted memang mencoba memenuhi kendala penyelarasan saat membuat partisi, tetapi juga tidak akan menyimpang dari nilai yang Anda minta terlalu banyak. Apa yang dianggap sebagai "terlalu banyak" tergantung pada bagaimana Anda menentukan posisi.

Ketika Anda menentukan posisi awal (atau akhir) untuk perintah mkpart, itu secara internal menghasilkan berbagai nilai yang dapat diterima. Rentang ini dipusatkan pada nilai yang Anda tentukan, dan meluas secara merata di kedua sisi dengan setengah ukuran unit yang Anda gunakan (itulah yang saya baca dari kode , komentar mengatakan satu ukuran unit penuh di kedua ujungnya).

Misalnya, ketika Anda menentukan "10M", itu akan mencoba menggunakan posisi apa pun antara 9,5M dan 10,5M. Hal yang sama berlaku untuk persentase, jadi jika Anda menentukan 0% itu akan menggunakan nilai apa pun antara 0% dan 0,5% (itu tidak menjadi negatif, jelas).

Satu pengecualian adalah bahwa ketika menggunakan kekuatan dua unit (seperti KiB untuk 1024, berlawanan dengan K untuk 1000) berpisah mengasumsikan Anda mencoba menentukan posisi yang tepat dan hanya mempertimbangkan nilai persis yang Anda tentukan.

Karena penyelarasan optimal biasanya nampak selaras 1MiB, unit K dan M sering tidak memiliki ruang yang cukup untuk mencapai penyelarasan optimal. Menentukan posisi dalam G harus memiliki banyak ruang, tetapi% biasanya juga baik-baik saja.

Jadi, inilah sebabnya 0% biasanya berfungsi, meskipun itu pun memiliki batasan.

Matthijs Kooijman
sumber
Bisakah Anda meringkas TLDR praktis dari jawaban Anda: apa sebenarnya yang sebaiknya dilakukan dengan cara yang berbeda dibandingkan dengan jawaban yang diterima?
yurkennis
Saran yang bagus, saya menambahkan TL; DR. Dalam praktiknya, saya pikir 0% akan bekerja untuk semua disk yang sangat kecil, tetapi jawaban saya menambahkan sedikit latar belakang tentang cara kerjanya tepatnya.
Matthijs Kooijman