Bagaimana cara menggunakan tabel fdisk baru tanpa reboot (kpartx)?

11

Ketika saya menjalankan fdisk dan mengubah ukuran partisi, fdisk mengatakan di akhir outputnya:

The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)

Saya ingin melakukannya tanpa harus reboot (dan kemudian menulis skrip yang melakukannya) Bagaimana cara menggunakan kpartx untuk melakukan ini dengan benar? Saya sudah mencoba:

kpartx -f -v /dev/mmcblk0

Output yang mana:

mmcblk0p1 : 0 102400 /dev/mmcblk0 2048
mmcblk0p2 : 0 7657472 /dev/mmcblk0 104448

dan:

kpartx -a -v /dev/mmcblk0

yang keluaran:

device-mapper: reload ioctl on mmcblk0p1 failed: Invalid argument
create/reload failed on mmcblk0p1
add map mmcblk0p1 (0:0): 0 102400 linear /dev/mmcblk0 2048
device-mapper: reload ioctl on mmcblk0p2 failed: Invalid argument
create/reload failed on mmcblk0p2
add map mmcblk0p2 (0:0): 0 7657472 linear /dev/mmcblk0 104448

Ini untuk kartu SD di raspi menjalankan debian.

EDIT: Untuk memperjelas apa yang saya coba lakukan; Saya menghapus p3 yang tidak terpakai dari Kartu SD dan mengubah ukuran p2 untuk mengisi kartu. Kartu saat ini berisi partisi boot kecil p1 dan p2 adalah tempat OS berada.

Gurita
sumber
Apakah kartu SD sedang digunakan? (Misalnya, apakah ada sistem file yang terpasang di atasnya?)
derobert
@derobert, ya itu benar. ini memiliki 2 partisi: partisi boot kecil dan partisi utama yang lebih besar di mana sebagian besar OS berada. Saya hanya mencoba memperluas partisi ke-2 untuk mengisi kartu.
Octopus
2
Saya cukup yakin itu jawabannya — Anda tidak bisa. Kernel tidak akan membaca ulang tabel partisi kecuali perangkat tidak digunakan ...
derobert
Apakah partprobemembantu?
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

7

Anda ingin partx -u, bukan kpartx(yang beroperasi pada perangkat -perangkat mapper).

psusi
sumber
Apa tujuan -ubendera?
IgorGanapolsky
1
@IgorGanapolsky, untuk memperbarui tabel partisi kernel agar sesuai dengan yang ada di disk. Cepat man partxakan menjawab ini.
psusi
@Octopus Ini melakukannya untuk saya, di mana partprobe tidak melakukannya. Partprobe kemudian kembali tanpa kesalahan itu.
Duncan X Simpson
6

Saya percaya @derobert (yang mengomentari pertanyaan awal) kemungkinan benar. Dalam hal fdisk partisi yang sedang digunakan tampaknya tidak ada pilihan lain selain reboot.

Bahkan ketika saya menggunakan partprobe(yang diperoleh dengan apt-get install parted) saya mendapatkan output berikut:

Error: Partition(s) 2, 3 on /dev/mmcblk0 have been written, but we have 
been unable to inform the kernel of the change, probably because it/they 
are in use.  As a result, the old partition(s) will remain in use.  You 
should reboot now before making further changes.
Gurita
sumber
Saya melakukan hal yang sama, kabar baiknya adalah, saya dapat meng-unmount, menjalankan partprobe <perangkat>, dan me-remount kedua partisi tanpa me-reboot. Sayangnya masih diperlukan downtime karena mematikan layanan.
Rahly
3
Versi yang lebih baru dari parted/ partprobetidak akan memberikan kesalahan seperti itu dan dapat digunakan pada partisi yang dipasang tanpa reboot.
psusi
@psusi, saya menggunakan versi terbaru partedtetapi saya masih mendapatkan kesalahan yang sama. Solusinya adalah dengan meng-unmount perangkat sebelum berjalan parteddi perangkat, maka Anda tidak perlu me-reboot sistem Anda untuk menginformasikan kernel untuk menggunakan partisi baru, bukan partisi lama
MyWrathAcademia
1

Saya mendapatkan masalah ini karena saya lupa melepas perangkat. Setelah:

sudo umount /dev/sdb

fdisk berfungsi dengan benar.

Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
sumber
1
Saya masih mendapatkan kesalahan: Memanggil ioctl () untuk membaca kembali tabel partisi. Membaca ulang tabel partisi gagal .: Perangkat atau sumber daya sibuk
IgorGanapolsky