GNU/Linux >> Belajar Linux >  >> Linux

Di linux, bagaimana Anda memeriksa apakah sebuah disk terfragmentasi?

Anda dapat menjalankan fsck.ext2 dengan aman pada sistem file ext2 ext3 atau ext4 bahkan jika dipasang seperti ini

sudo fsck.ext2 -fn /dev/sdXY

Jika drive dipasang, itu akan menghasilkan banyak kesalahan, tetapi argumen -n memberitahunya untuk tidak menyentuh drive.

$ sudo fsck.ext2 -fn /dev/sda1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Ubuntu_Rescue: 291595/1222992 files (0.2% non-contiguous), 1927790/4882432 blocks

Keluarga ext modern dari filesystem mempertimbangkan keseimbangan dan kedekatan saat mengalokasikan file. Dalam ext3 dan ext4 balancing umumnya diurus dengan menerapkan entri jurnal secara berurutan, dan dalam ext4 secara khusus, dengan pra-alokasi luasan sistem file untuk meningkatkan blok yang berdekatan. Mengejar tingkat fragmentasi yang lebih rendah dari 20% mungkin tidak sebanding dengan waktu Anda, terutama jika sistem Anda mengakses beberapa file berulang kali. Saya menyarankan untuk mengikuti taktik ini untuk meningkatkan kecepatan baca untuk satu sistem disk:

  • meningkatkan ram:ini meningkatkan cache sistem file

  • tingkatkan ukuran blok:dengan berpindah dari ukuran blok 1k ke 4k, Anda mendapatkan kinerja yang lebih baik dalam membaca file yang mendekati atau lebih besar dari ukuran blok Anda

  • jika Anda bertele-tele, Anda dapat mengatur file besar dan file kecil ke dalam partisi berdasarkan ukuran bloknya, Anda mungkin hanya ingin melakukan ini jika Anda menyimpan foto, video, dan kode sumber di direktori terpisah

  • tingkatkan pengaturan baca-depan Anda menggunakan hdparm dan/atau utilitas mode laptop

  • buat cadangan dan pulihkan sistem file Anda secara linier seperti dengan tar

Jika Anda memiliki banyak disk dan menggunakan raid striping dan/atau LVM, pertimbangkan faktor lain, seperti ukuran strip.


Ya, ada fsck khusus doa (sebagai root, atau sudo):

$ fsck /dev/sdXY

Ganti X dan Y dengan parameter yang benar untuk kasus Anda (mis. /dev/sda1 ).

JANGAN JALANKAN INI PADA PARTISI TERPASANG! Ini dapat merusak sistem file Anda secara serius.

Untuk informasi lebih lanjut tentang Linux dan defragmentasi, lihat jawaban saya di sini.

Jika Anda tidak perlu menjalankan fsck secara khusus, tetapi hanya ingin memeriksa fragmentasi drive Anda, skrip berikut (diambil dari sini) bisa membantu:

#!/usr/bin/perl -w

#this script search for frag on a fs
use strict;

#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;

#search fs for all file
open (FILES, '-|', "find '$ARGV[0]' -xdev -type f -print0");

$/ = "\0";

while (defined (my $file = <FILES>)) {
        open (FRAG, "-|", "filefrag", $file);
        my $res = <FRAG>;
        if ($res =~ m/.*:\s+(\d+) extents? found/) {
                my $fragment = $1;
                $fragments += $fragment;
                if ($fragment > 1) {
                        $fragfiles++;
                }
                $files++;
        } else {
                print ("$res : not understand for $file.\n");
        }
        close (FRAG);
}
close (FILES);

print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n"); 

Anda kemudian dapat menjalankannya di direktori (atau titik pemasangan) yang dimaksud:

$ frag_check.pl $HOME/
  1.32410691664555% non contiguous files, 1.05380668862427 average fragments.

Linux
  1. Cara mempartisi disk di Linux

  2. Cara Memeriksa Zona Waktu di Linux

  3. Cara Mengganti Nama File di Linux

  1. Cara menemukan file di Linux

  2. Cara Memeriksa Ruang Disk di Linux

  3. Cara memeriksa versi Redhat

  1. Cara Menghapus Partisi di Linux

  2. Cara memeriksa versi Kali Linux

  3. Cara Memeriksa Bad Sector atau Bad Block pada Hard Disk di Linux