Cara mengubah ukuran / memperbesar / menumbuhkan partisi ext4 non-LVM

20

Saya sudah mencari di forum, tetapi tidak bisa menemukan jawaban yang cocok:

Saya memiliki Ubuntu Server 10,04 sebagai KVM Host dan sistem tamu, yang juga menjalankan 10,04. Sistem host menggunakan LVM dan ada tiga volume logis, yang disediakan untuk tamu sebagai perangkat blok virtual - satu untuk /, satu untuk / rumah dan satu untuk swap. Tamu itu telah dipartisi tanpa LVM.

Saya telah memperbesar volume logis dalam sistem host - tamu berhasil melihat disk virtual yang lebih besar. Namun, disk virtual ini berisi satu partisi "baik lama", yang masih memiliki ukuran kecil yang lama.

Output dari fdisk -l adalah

me@produktion:/$ LC_ALL=en_US sudo fdisk -l

Disk /dev/vda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ce7

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        3917    31455232   83  Linux

Disk /dev/vdb: 2147 MB, 2147483648 bytes
244 heads, 47 sectors/track, 365 cylinders
Units = cylinders of 11468 * 512 = 5871616 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2bf7

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         366     2095104   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 43, 28)
Partition 1 has different physical/logical endings:
     phys=(260, 243, 47) logical=(365, 136, 44)

Disk /dev/vdc: 225.5 GB, 225485783040 bytes
255 heads, 63 sectors/track, 27413 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027f25

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        9138    73398272   83  Linux

Output dari parted print all adalah

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4         boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2146MB  2145MB  primary  linux-swap(v1)


Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

Yang ingin saya capai adalah menumbuhkan atau mengubah ukuran partisi / dev / vdc1 sehingga menggunakan seluruh ruang yang disediakan oleh perangkat blok virtual / dev / vdc. Masalahnya adalah, bahwa ketika saya mencoba melakukan itu dengan berpisah, ia mengeluh:

(parted) select /dev/vdc                                                  
Using /dev/vdc
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

(parted) resize 1                                                         
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start?  [1049kB]?                                                         
End?  [75.2GB]? 224GB                                                     
Error: File system has an incompatible feature enabled.  Compatible features are has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs
or debugfs to remove features.

Jadi apa yang bisa kulakukan? Ini adalah sistem produksi tanpa kepala. Apa cara aman untuk menumbuhkan partisi ini? Saya BISA meng-unmount-nya, jadi - ini bukan masalahnya.

Sunting: Cfdisk menunjukkan ruang kosong kecil ruang yang tidak dipartisi, kemudian partisi (ditandai sebagai "boot" dan Linux / ext3) dan kemudian sisa ruang yang tidak dipartisi. Setelah menghapus partisi dan membuatnya lagi menggunakan cfdisk - cfdisk menunjukkan satu area yang dipartisi besar (yang akan baik-baik saja dengan saya) dan sebagai tipe filesystem hanya "Linux"

Resize2fs mengembalikan kesalahan ini resize2fs 1.41.11 (14-Mar-2010) resize2fs: Bad magic number in super-block while trying to open /dev/vdc1 Couldn't find valid filesystem superblock

Mischa
sumber

Jawaban:

18

Halaman ini menunjukkan cara untuk melakukan itu unmount, menghapus, membuat ulang partisi dengan ukuran yang diinginkan, dan menggunakan resize2fs untuk memperpanjang partisi. Halaman manual resize2fs setuju.

Saya tahu 'hapus partisi' terdengar menakutkan, tetapi itu tidak mengubah data sama sekali. Itu hanya mengubah hal yang merujuk kontainer. Selama Anda TIDAK mkfs.ext4Anda harus baik-baik saja.

Titik awal partisi Anda harus sama dengan sebelumnya atau OS tidak akan tahu bagaimana menafsirkan apa yang ada di baliknya. Titik akhir kemudian dapat dilanjutkan untuk membuat partisi yang lebih besar.

Saya pikir kesalahan dalam komentar terkait dengan memindahkan titik awal. Anda harus memulainya pada titik yang sama persis seperti saat dimulai. Titik akhir dapat bergerak.

Berikan kredit pada psusi karena menyarankan fdisk alih-alih cfdisk dan mengkonfirmasi masalah titik awal.

RobotHumans
sumber
Oke, saya menghapus partisi dengan cfdisk dan membuat yang baru. Tapi aku tidak bisa mengubah ukurannya kemudian dan aku tidak bisa me-mount lagi.
Mischa
resize2fs 1.41.11 (14-Mar-2010) resize2fs: Angka ajaib buruk di super-blok ketika mencoba membuka / dev / vdc1 Tidak dapat menemukan superblock filesystem yang valid.
Mischa
1
sebenarnya, cfdisk menunjukkan ruang bebas kecil ruang tanpa partisi, lalu partisi (ditandai sebagai "boot" dan Linux / ext3) dan kemudian sisa ruang tanpa partisi. Setelah menghapus partisi dan membuatnya lagi menggunakan cfdisk - cfdisk menunjukkan satu area yang dipartisi besar (yang akan baik-baik saja dengan saya) dan sebagai tipe filesystem hanya "Linux".
Mischa
8
Anda perlu membuat ulang partisi sehingga dimulai pada sektor yang sama persis seperti yang awalnya. Anda tidak dapat melakukan ini dengan cfdisk. Gunakan fdisk atau berpisah dan letakkan dalam mode sektor.
psusi
1
apakah ada cara untuk mengubah ukuran partisi ext4 dengan cara sehingga awal partisi dipindahkan? Karena saya memiliki ruang kosong di depan partisi ext4 saat ini, bukan di belakang ... untungnya saya memiliki lebih banyak ruang kosong daripada partisi yang besar, jadi saya rasa saya bisa melakukan yang berikut: salin seluruh partisi ke depan, Hapus satu di belakang, dan kemudian mengubah ukuran yang dipindahkan ke seluruh ukuran? tapi itu sepertinya hack yang mengerikan bagiku saat ini ...
codeling
6

Sebuah contoh:

/ dev / sdb2 adalah partisi / boot. Ini 100 MB, yang agak kecil. Untuk menambah partisi ext4 ini pada sistem yang sedang berjalan, lakukan (sebagai root, atau sudo):

umount / boot

berpisah / dev / sdb

(berpisah) cetak

Model: ATA Patriot Torqx 2 (scsi)
Disk / dev / sdb: 32.0GB
Ukuran sektor (logis / fisik): 512B / 512B
Tabel Partisi: msdos

Nomor Mulai Akhir Ukuran Jenis Sistem file Bendera
1 1049kB 12.9GB 12.9GB tipe primer = 83
2 12.9GB 13.0GB 107MB primer ext4 type = 83

(berpisah) rm 2

(berpisah) mkpart

Jenis partisi? primer / diperpanjang?
jenis sistem file utama ? [ext2]?
Mulai? 12.9GB
Berakhir? 13,4GB

(berpisah) berhenti

resize2fs / dev / sdb2

resize2fs 1.42.6 (21-Sep-2012)
Filesystem di / dev / sdb2 sudah terpasang di / boot; mengubah ukuran on-line diperlukan
old_desc_blocks = 1, new_desc_blocks = 2
Filesystem on / dev / sdb2 sekarang panjangnya 498.688 blok.

selesai!

Semua data tetap di tempatnya. / boot siap digunakan dan 472MB besar (parted tidak seaman dengan ukuran, baca manual untuk tahu mengapa)

Semua data dicadangkan sebelumnya, tetapi hanya sebagai tindakan pencegahan. Saya merekomendasikan untuk melakukan hal yang sama.

Gunakan perintah berikut untuk menemukan proses yang menghentikan pelepasan / boot jika gagal:

lsof / boot

Semoga berhasil!

pengguna157258
sumber
2
Anda perlu menggunakan unit sektor, bukan GB, untuk memastikan Anda mendapatkannya di tempat yang persis sama.
psusi
0

Jika Anda mencoba untuk menghapus & membuat ulang sebuah partisi, ketika partisi Anda mulai di bawah 2048 Anda mungkin mengalami beberapa masalah seperti saya resize2fs.

Couldn't find valid filesystem superblock.

Dari fdisk versi 2.17.2 , fdisk IIUC memaksa Anda memulai dari 2048 untuk memastikan hard drive Anda "sejajar dengan benar". Jadi, jika partisi asli Anda dimulai sebelum 2048, Anda dalam perjalanan bergelombang mencoba untuk membuat ulang partisi.

Pendekatan terbaik adalah rsync saat mengkloning disk .

hendry
sumber