Czy istnieje coś takiego jak „szybki” format dla ext4?

28

W systemie Windows formatowanie w systemie NTFS jest bardzo szybkie. Mam słabo zasilaną maszynę Linux, z małą pamięcią RAM. Formatowanie woluminu 2 TB na ext4 zajmuje dużo czasu.

Czy mogę coś przyspieszyć? Nie mogę sobie wyobrazić, co trwa tak długo? (co trwa tak długo)

oblepiony
źródło
1
Jakich poleceń używasz do formatowania?
tacot wtorek
Jako obejście. spróbuj zrobić to jako mniejszą objętość lvm i powiększać w razie potrzeby? To i tak obniżyłoby początkowe koszty ogólne.
Sirex
1
lub użyj XFS, jeśli czas tworzenia systemu plików naprawdę Ci przeszkadza - mkfs.xfs jest o wiele szybszy niż mkfs.ext4 (ponieważ nie robi - ani nie musi - tyle). ale mkfs to coś, co zwykle musisz zrobić tylko raz na system plików - prawdopodobnie są lepsze rzeczy do zoptymalizowania.
cas
lub użyj ZFS. Tworzenie systemów plików za pomocą ZFS jest niemal natychmiastowe, bez względu na ich rozmiar.
jlliagre
ZFS należy używać tylko, jeśli masz sprzęt klasy korporacyjnej, w szczególności jeśli masz pamięć ECC RAM i UPS. Nie zaleca się używania ZFS bez tych wymagań. Odzyskiwanie może być niemożliwe po błędzie parzystości pamięci i / lub awarii zasilania. W takim przypadku cały wolumen zostanie utracony. Zostałeś ostrzeżony.
Richard Gomes

Odpowiedzi:

16

Ścisła odpowiedź

Rozwiązania takie jak -E lazy_itable_initnie zmieniają wyniku, tylko przyspieszają proces. O to wyraźnie pytano, ale w wielu przypadkach ludzie potrzebują więcej.

Dodatkowa premia

W większości przypadków faktycznie potrzebujesz opcji, które pasują do twoich wzorców użytkowania i nie tylko przyspieszają tworzenie systemu plików, ale także umożliwiają szybsze użycie i więcej użytecznej przestrzeni.

Właśnie zrobiłem test. Nawet bez użycia -E lazy_itable_initponiższe opcje przyspieszają czas tworzenia systemu plików 2 TB z 16 minut 2 sekund do 1 minuty 21 sekund (jądro 3.5.0 64bit na Intel i7 2.2GHz, dysk 2 TB na USB2 - SATA prawdopodobnie byłby szybszy) .

W systemie plików, który pomieści duże pliki, używam tej kombinacji:

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

gdzie -T largefile4wybiera opcje, w /etc/mke2fs.confktórych zazwyczaj zawierają coś takiego:

    inode_ratio = 4194304
    blocksize = -1

Zrób man mke2fsszczegółowe informacje na temat każdej z tych opcji.

Oto odpowiednie wyciągi:

               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 0mówi tylko, aby nie rezerwować 5% na root, co jest dobre dla systemu plików danych (nie boot / root). 5% dysku o pojemności 2 TB oznacza 100 GB. To dość znacząca różnica.

Stéphane Gourichon
źródło
1
Pamiętaj, że zezwolenie systemowi plików na zapełnienie w ponad 95% doprowadzi do skrajnej fragmentacji, co znacznie spowolni wydajność. Jeśli cokolwiek, jeśli dba się o wydajność jego partycji danych, należy ją zwiększyć do 10%
Matija Nalis
Jeśli twój dysk pomieści nie tylko duże pliki, ale także małe pliki , przeczytaj to: zmniejszenie współczynnika i-węzła pozwoli zaoszczędzić najwyżej około 1,5% przestrzeni dyskowej, kosztem wszechstronności. inode_ratio = xoznacza, że ​​jeśli średni rozmiar pliku na woluminie jest mniejszy niż x bajtów, to zmierzasz do wyczerpania i-węzłów, zanim zabraknie miejsca w pamięci . W tym scenariuszu możesz zmarnować dosłownie tysiące więcej niż oczekiwano.
Stéphane Gourichon
Innymi słowy, jeśli średni rozmiar pliku jest mniejszy niż 4 MB, nie używaj „-T largefile4”. W przypadku ogromnych dysków używam teraz tego, -T hugeco robi inode_ratio = 65536. W razie wątpliwości, po prostu nie należy ustawiać -ialbo -Ti niech mądrych ludzi, którzy dokonali ext2 / 3/4 wybrać dla Ciebie. Zarezerwujesz znaną niewielką część miejsca na sprzątanie i (chyba że przechowujesz miliony bardzo małych plików) masz gwarancję, że nie zmarnujesz arbitralnego procentu rzeczywistego miejsca do przechowywania. Jak ludzie piszą, wymyślne oprogramowanie jest fajne, ale dobry system plików musi być nudny i po prostu działać.
Stéphane Gourichon
w moim przypadku mkfs.ext4jest szybszy (czas real 0m16.001s:) niż mkfs.ext3(czas real 2m10.336s:).
coanor
19

Dodaj flagę -E lazy_itable_init

Oto, co mówi strona podręcznika:

Jeśli włączone i włączona jest funkcja uninit_bg, tabela i-węzłów nie zostanie w pełni zainicjowana przez mke2fs. Przyspiesza to zauważalnie inicjalizację systemu plików, ale wymaga on, aby jądro zakończyło inicjalizację systemu plików w tle, gdy system plików zostanie po raz pierwszy zamontowany. Jeśli wartość opcji zostanie pominięta, wartość domyślna to 1, aby umożliwić inicjalizację leniwej tabeli i-węzłów.

Alex Wheeler
źródło
3
Technicznie nie przyspiesza to formatu, ale pozwala zamontować system plików i korzystać z niego, gdy format kończy się w tle.
Wyzard
Dzięki wielkie! to naprawdę dobrze, doktorzy / mężczyzna nie byli dla mnie jasne, dopóki nie wiedzieli, czego szukać! Dziękuje bardzo!
utknął
Widziałem referencje na temat minimalnej wersji jądra, które jest minimum niezbędne do korzystania z tego?
Xarses,
8

Domyślnie jest to szybki format; konfigurowanie struktur dla woluminu ext * zajmuje znacznie więcej czasu niż dla woluminu NTFS, ponieważ jest ich więcej. Możesz zmniejszyć liczbę superbloków, ale nawet to idzie tak daleko.

Ignacio Vazquez-Abrams
źródło
dzięki za informacje, moje urządzenie zaczęło formatować dysk USB2 2 TB około 20 godzin temu, wciąż działa - urządzenie ma niską moc, pomyśl Raspberry Pi z 64 MB pamięci RAM. aby rozpocząć format musiałem skonfigurować stronicowanie na tym samym dysku USB, który jest formatowany, czy jest coś, co mogę zrobić, aby to przyspieszyć? byłbym świetny, gdybym mógł sprawić, by występ był mniej niż godzinę lub dwie?
utknąłem
2
lazy_itable_init wystarczyły dla mnie to existing domyślne formatowanie i nie make znacznie szybciej
zatrzymany
4

Jeśli będziesz przechowywać głównie większe pliki, możesz zwiększyć liczbę bajtów na i-węzeł, zmniejszając w ten sposób liczbę utworzonych i-węzłów. Może to znacznie przyspieszyć tworzenie.

rnxrx
źródło