Anda mencoba mengubah ukuran sistem file yang dibuat sebelum -O 64bit
opsi menjadi default. Dimungkinkan untuk memutakhirkan sistem file ext Anda ke alamat 64 bit, yang memungkinkannya menjangkau volume yang secara signifikan lebih besar (1024 PiB, bukannya 16 TiB).
Dengan asumsi perangkat target Anda dipanggil /dev/mapper/target-device
, inilah yang perlu Anda lakukan:
Prasyarat
- Ukuran volume ini harus didukung oleh RAID. Kesalahan disk biasa akan menyebabkan kerusakan sebaliknya.
- Namun, RAID bukan cadangan . Anda harus menyimpan barang berharga Anda di tempat lain juga.
- Pertama, ubah ukuran & verifikasi semua volume di sekitarnya (tabel partisi, enkripsi, lvm).
- Setelah mengubah konfigurasi RAID perangkat keras, linux mungkin atau mungkin tidak segera mengakui ukuran maksimum baru. Periksa
$ cat /proc/partitions
dan mulai ulang jika perlu.
Gunakan kernel dan e2fsprogs stabil terbaru
- Pastikan (periksa
uname -r
) Anda menjalankan kernel yang dapat menangani dengan benar sistem file 64bit ext4 - Anda ingin menggunakan 4.4.x
kernel atau yang lebih baru (default Ubuntu 16 ke atas).
Dapatkan e2fsprogs setidaknya dari versi 1.43
Ubuntu 16.04
(2016-04-21) dirilis dengan e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(2016-05-17) adalah rilis pertama yang mampu meningkatkan ukuran alamat extfs.
Ubuntu 18.04
(2018-04-26) dikirimkan bersama e2fsprogs 1.44.x
(baik!)
Jika Anda aktif 16.04
dan tidak dapat memutakhirkan ke rilis Ubuntu yang lebih baru, Anda harus mengaktifkan dukungan paket sumber dan menginstal versi yang lebih baru secara manual:
$ resize2fs
# if this prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps
Ubah ukuran
Langkah 1: Umount sistem file dengan benar
$ sudo umount /dev/mapper/target-device
Langkah 2: Periksa kesalahan sistem file
$ sudo e2fsck -fn /dev/mapper/target-device
Langkah 3: Aktifkan dukungan 64bit di sistem file
Konsultasikan man tune2fs
dan man resize2fs
- Anda dapat mengubah beberapa flag sistem file.
$ sudo resize2fs -b /dev/mapper/target-device
Pada HDD RAID tipikal, ini membutuhkan 4 menit beban IO & CPU yang tinggi.
Langkah 4: Ubah ukuran sistem file
$ sudo resize2fs -p /dev/mapper/target-device
Jika Anda tidak memberikan ukuran pada baris perintah, resize2fs mengasumsikan "tumbuh ke semua ruang yang tersedia" - ini biasanya yang Anda inginkan. The -p
flag diaktifkan kemajuan bar - tetapi mereka hanya menampilkan setelah beberapa langkah awal.
Pada HDD RAID tipikal, ini membutuhkan 4 menit beban IO & CPU yang tinggi.
Verifikasi lagi
Periksa kembali sistem file
$ sudo e2fsck -fn /dev/mapper/target-device
e2fsck dari versi yang lebih baru mungkin menyarankan untuk memperbaiki cap waktu atau batas pohon yang ditangani versi sebelumnya dengan buruk. Ini bukan indikasi masalah serius dan Anda dapat memilih untuk memperbaikinya sekarang atau nanti.
Jika terjadi kesalahan, jangan tidak panik dan jangan tidak mencoba untuk menulis ke volume; berkonsultasi dengan seseorang yang memiliki pengetahuan luas tentang sistem file, karena operasi lebih lanjut kemungkinan akan menghancurkan data!
Jika tidak ada kesalahan, remount perangkat:
$ sudo mount /dev/mapper/target-device
Keberhasilan!
Anda tidak memerlukan e2fsprogs versi non-Ubuntu untuk melanjutkan operasi sistem file yang ditingkatkan - kernel mendukungnya untuk beberapa waktu sekarang. Itu hanya perlu untuk memulai upgrade.
Untuk referensi, ada pesan kesalahan serupa yang akan dicetak mke2fs jika diminta untuk membuat perangkat besar dengan opsi yang tidak pantas:
$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.
Itu terjadi pada saya baru-baru ini, dengan Ubuntu 18,04 yang telah diperbarui setelah awalnya diinstal dengan Ubuntu 16,04 ... Array penyimpanan (/ dev / sdb) pada awalnya telah dipartisi menjadi dua partisi 14 TB, dan itu adalah dengan ingin memperbesar partisi pertama ke 28 TB yang terjadi masalah.
Saya tidak perlu mengunduh versi baru resize2fs karena itu sangat baru.
Satu-satunya masalah adalah mengubah 64-bit partisi 1 yang telah diformat dalam 32 bit ... Alih-alih mengundang pembaca untuk membaca dokumentasi tune2fs (seperti yang disarankan Anx), saya mengusulkan contoh nyata!
Akhirnya, kami memperbesar partisi disk!
sumber