Apakah ada yang namanya format 'cepat' untuk ext4?

28

Di Windows, formatnya sangat cepat dengan NTFS. Saya memiliki mesin Linux berdaya rendah, dengan sedikit RAM. Memformat volume 2TB ke ext4 membutuhkan waktu yang lama.

Apakah ada yang bisa saya lakukan untuk mempercepat format? Saya tidak bisa membayangkan apa yang begitu lama? (apa yang begitu lama)

macet
sumber
1
Perintah apa yang Anda gunakan untuk memformatnya?
tacotuesday
Sebagai solusinya. coba jadikan sebagai volume lvm yang lebih kecil, dan tumbuhkan sesuai kebutuhan? Bagaimanapun, itu akan menurunkan overhead awal.
Sirex
1
atau gunakan XFS jika waktu pembuatan sistem file benar-benar mengganggu Anda - mkfs.xfs jauh lebih cepat daripada mkfs.ext4 (karena tidak melakukan - atau perlu - sebanyak). tetapi mkfs adalah sesuatu yang biasanya hanya perlu Anda lakukan sekali per filesystem - mungkin ada hal-hal yang lebih baik untuk dioptimalkan.
cas
atau gunakan ZFS. Membuat sistem file dengan ZFS hampir instan, berapa pun ukurannya.
jlliagre
Hanya gunakan ZFS jika Anda memiliki perangkat keras kelas perusahaan, khususnya jika Anda memiliki RAM ECC dan Anda memiliki UPS. Tidak disarankan menggunakan ZFS tanpa persyaratan ini. Anda mungkin tidak dapat memulihkan setelah kesalahan paritas memori dan / atau kegagalan daya. Semua volume Anda akan hilang dalam kasus ini. Anda telah diperingatkan.
Richard Gomes

Jawaban:

16

Jawaban yang ketat

Solusi seperti -E lazy_itable_inittidak mengubah hasilnya, hanya mempercepat proses. Inilah yang secara eksplisit ditanyakan namun dalam banyak kasus orang membutuhkan lebih banyak.

Bonus ekstra

Dalam kebanyakan kasus, Anda sebenarnya menginginkan beberapa opsi yang cocok dengan pola penggunaan Anda dan tidak hanya mempercepat pembuatan sistem file tetapi juga memungkinkan penggunaan yang lebih cepat dan ruang yang lebih bermanfaat.

Saya baru saja melakukan tes. Bahkan tanpa menggunakan -E lazy_itable_init, opsi di bawah ini mempercepat waktu pembuatan sistem file 2TB dari 16 menit 2 detik hingga 1 menit 21 detik (kernel 3.5.0 64bit pada Intel i7 2.2GHz, disk 2TB pada koneksi USB2 - SATA mungkin akan lebih cepat) .

Untuk sistem file yang akan menyimpan file besar, saya menggunakan kombinasi ini:

mkfs.ext3 /dev/sdXX -O sparse_super,large_file -m 0 -T largefile4

di mana -T largefile4mengambil opsi /etc/mke2fs.confyang umumnya berisi sesuatu seperti:

    inode_ratio = 4194304
    blocksize = -1

Lakukan man mke2fsperincian untuk masing-masing opsi ini.

Berikut adalah ekstrak yang relevan:

               sparse_super
                      Create a filesystem with fewer superblock backup copies (saves space on large filesystems).

               large_file
                      Filesystem can contain files that are greater than 2GB.  (Modern kernels set this feature  automatically
                      when a file > 2GB is created.)

   -i bytes-per-inode
          Specify  the  bytes/inode ratio.  mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.  The
          larger the bytes-per-inode ratio, the fewer inodes will be created.  This value generally shouldn't be smaller  than
          the blocksize of the filesystem, since in that case more inodes would be made than can ever be used.  Be warned that
          it is not possible to expand the number of inodes on a filesystem after it is created, so be  careful  deciding  the
          correct value for this parameter.

-m 0hanya mengatakan tidak mencadangkan 5% untuk root, yang oke untuk sistem file data (bukan boot / root). 5% dari disk 2TB berarti 100Gb. Itu perbedaan yang cukup signifikan.

Stéphane Gourichon
sumber
1
Perhatikan bahwa membiarkan filesystem mendapatkan lebih dari 95% penuh akan menyebabkan fragmentasi ekstrem, memperlambat kinerja secara substansial. Jika ada, jika seseorang peduli dengan kinerja partisi datanya, itu harus ditingkatkan menjadi 10%
Matija Nalis
Jika disk Anda akan menyimpan tidak hanya file besar tetapi file kecil juga , baca ini: mengurangi rasio inode akan menghemat paling banyak sekitar 1,5% dari penyimpanan, dengan biaya fleksibilitas. inode_ratio = xberarti bahwa jika ukuran file rata - rata pada volume kurang dari x byte, maka Anda menuju kehabisan inode sebelum kehabisan ruang penyimpanan . Dalam skenario itu, Anda mungkin benar-benar membuang ribuan lebih dari yang Anda harapkan akan ditabung.
Stéphane Gourichon
Dengan kata lain, jika ukuran file rata - rata lebih kecil dari 4MB, jangan gunakan "-T largefile4". Untuk drive besar saya sekarang menggunakan -T hugeyang tidak inode_ratio = 65536. Jika ragu, jangan atur -iatau -Tdan biarkan orang bijak yang membuat ext2 / 3/4 memilih untuk Anda. Anda akan memesan sebagian kecil ruang yang diketahui untuk tata graha dan (kecuali jika Anda menyimpan jutaan file yang sangat kecil) Anda dijamin tidak membuang persentase sewenang-wenang dari ruang penyimpanan aktual. Ketika orang menulis, perangkat lunak yang bagus itu bagus, tetapi sistem file yang bagus pasti membosankan dan hanya berfungsi.
Stéphane Gourichon
pada kasus saya, mkfs.ext4lebih cepat (waktu real 0m16.001s:) daripada mkfs.ext3(waktu real 2m10.336s:).
coanor
19

Tambahkan bendera -E lazy_itable_init

Inilah yang dikatakan halaman manual:

Jika diaktifkan dan fitur uninit_bg diaktifkan, tabel inode tidak akan sepenuhnya diinisialisasi oleh mke2fs. Ini mempercepat inisialisasi filesystem secara nyata, tetapi membutuhkan kernel untuk menyelesaikan inisialisasi filesystem di latar belakang ketika filesystem pertama kali dipasang. Jika nilai opsi dihilangkan, nilai defaultnya adalah 1 untuk mengaktifkan inisialisasi tabel inode malas.

Alex Wheeler
sumber
3
Secara teknis ini sebenarnya tidak membuat format berjalan lebih cepat, tetapi ini memungkinkan Anda memasang dan menggunakan sistem file saat format selesai di latar belakang.
Wyzard
Terima kasih banyak! Pekerjaan ini sangat baik, dokter / petugas tidak jelas bagi saya sampai tahu apa yang harus dicari! Terima kasih banyak!
macet
Saya telah melihat referensi tentang versi kernel minimum, yang merupakan minimum yang diperlukan untuk menggunakan ini?
Xarses
8

Standarnya adalah format cepat; menyiapkan struktur untuk volume ext * membutuhkan waktu lebih lama daripada volume NTFS, karena ada lebih banyak lagi. Anda dapat mengurangi jumlah superblok, tetapi itu pun hanya sejauh ini.

Ignacio Vazquez-Abrams
sumber
terima kasih atas informasinya, perangkat saya mulai memformat disk USB2 2TB sekitar 20 jam yang lalu, masih berjalan - perangkat ini berdaya rendah, pikir Raspberry Pi dengan RAM 64MB. untuk memulai format saya harus mengatur paging ke disk USB yang sama sedang diformat adakah yang bisa saya lakukan untuk mempercepat ini? saya akan sangat bagus jika saya bisa mendapatkan kinerja di bawah satu atau dua jam?
Terjebak
2
lazy_itable_init melakukan trik untuk saya, ini bukan default dan membuat pemformatan lebih cepat
macet
4

Jika Anda akan menyimpan sebagian besar file yang lebih besar, Anda dapat meningkatkan jumlah byte per inode, sehingga mengurangi jumlah inode yang dibuat. Ini secara substansial dapat mempercepat waktu pembuatan.

rnxrx
sumber