ใน linux คุณจะตรวจสอบว่าดิสก์มีการแยกส่วนได้อย่างไร


28

เมื่อทำการบู๊ต fsck บางครั้งจะรายงานการสละสิทธิ์สำหรับดิสก์: "5.3% ไม่ติดกัน"

ฉันจะรับข้อมูลนี้ด้วยตนเองได้อย่างไร มีการร้องขอ fsck เฉพาะหรือไม่

คำตอบ:


27

คุณสามารถรัน fsck.ext2 อย่างปลอดภัยบนระบบไฟล์ ext2 ext3 หรือ ext4 แม้ว่าจะถูกเมานต์แบบนี้

sudo fsck.ext2 -fn /dev/sdXY

หากไดรฟ์ติดตั้งอยู่จะส่งผลให้เกิดข้อผิดพลาดจำนวนมาก แต่อาร์กิวเมนต์ -n จะบอกให้ไม่แตะต้องไดรฟ์

$ 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

ขอบคุณ! fsck.ext2 พบข้อผิดพลาดหลายอย่างในพาร์ติชันของฉัน ตอนนี้ฉันต้องการซ่อม นี่เป็นคำถาม: ฉันจะซ่อมแซมพาร์ติชันที่บ้านของฉันได้อย่างไรซึ่งฉันจำเป็นต้องติดตั้งเพื่อเข้าสู่ระบบ
Michael

3
@Michael หากไดรฟ์ของคุณติดตั้งอยู่ให้รันการตรวจสอบมันจะรายงานข้อผิดพลาดเสมอ อย่างไรก็ตามหากคุณต้องการตรวจสอบระบบไฟล์ในการรีบูตครั้งถัดไปให้รันsudo tune2fs -C 16000 /dev/sda1และรีบูต
Rucent88

1
fsck ตรวจสอบว่ามีอะไรอยู่ในดิสก์ / ที่เก็บข้อมูล แต่ถ้าติดตั้งจะมีสิ่งที่กำลังดำเนินอยู่ (เขียนครึ่ง) นั่นคือสาเหตุที่คุณจะเห็นข้อผิดพลาดไม่ใช่ข้อผิดพลาดจริง แต่เป็นข้อผิดพลาดที่ผิดพลาด ไม่สนใจพวกเขา
ctrl-alt-delor

8

ระบบไฟล์ตระกูล ext ที่ทันสมัยคำนึงถึงความสมดุลและความต่อเนื่องในการพิจารณาเมื่อทำการจัดสรรไฟล์ ในการปรับสมดุล ext3 และ ext4 โดยทั่วไปแล้วจะได้รับการดูแลโดยใช้รายการบันทึกตามลำดับและใน ext4 โดยเฉพาะโดยการจัดสรร extents ระบบไฟล์ล่วงหน้าเพื่อเพิ่มบล็อกที่ต่อเนื่องกัน การไล่ระดับแฟรกเมนต์ที่ต่ำกว่า 20% อาจไม่คุ้มค่ากับเวลาของคุณโดยเฉพาะหากระบบของคุณกำลังเข้าถึงไฟล์บางไฟล์ซ้ำ ๆ ฉันขอแนะนำให้ใช้กลยุทธ์เหล่านี้เพื่อเพิ่มความเร็วในการอ่านสำหรับระบบดิสก์เดียว:

  • เพิ่ม ram: นี่เป็นการเพิ่มแคชของระบบไฟล์

  • เพิ่มขนาดบล็อก: โดยการเลื่อนจาก 1k เป็นขนาดบล็อก 4k คุณจะได้รับประสิทธิภาพที่ดีขึ้นในการอ่านไฟล์ใกล้หรือใหญ่กว่าขนาดบล็อกของคุณ

  • หากคุณเชื่องช้าคุณสามารถจัดระเบียบไฟล์ขนาดใหญ่และไฟล์ขนาดเล็กเป็นพาร์ติชั่นตามขนาดบล็อกคุณอาจต้องการทำสิ่งนี้หากคุณจัดเก็บรูปภาพวิดีโอและซอร์สโค้ดในไดเรกทอรีแยกต่างหาก

  • เพิ่มการตั้งค่าล่วงหน้าของคุณโดยใช้ hdparm และ / หรือยูทิลิตี้โหมดแล็ปท็อป

  • สำรองและกู้คืนระบบไฟล์ของคุณในแบบเชิงเส้นเช่น tar

หากคุณมีดิสก์หลายตัวและใช้แถบการจู่โจมและ / หรือ LVM คุณจะต้องพิจารณาปัจจัยอื่นเช่นขนาดสไทรพ์


4

ใช่มีการfsckเรียกเฉพาะ(เป็น root หรือ sudo):

$ fsck /dev/sdXY

แทนที่ X และ Y ด้วยพารามิเตอร์ที่ถูกต้องสำหรับเคสของคุณ (เช่น/dev/sda1)

อย่าเรียกใช้สิ่งนี้บนพาร์ทิชันที่ติดตั้ง! มันสามารถสร้างความเสียหายอย่างร้ายแรงต่อระบบไฟล์ของคุณ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับลินุกซ์และจัดเรียงข้อมูลให้ดูคำตอบของฉันที่นี่


หากคุณไม่จำเป็นต้องเรียกใช้ fsck เป็นพิเศษ แต่เพียงต้องการตรวจสอบการแตกแฟรกเมนต์ของไดรฟ์สคริปต์ต่อไปนี้ (ที่นำมาจากที่นี่ ) ควรทำเคล็ดลับ:

#!/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"); 

จากนั้นคุณสามารถเรียกใช้ในไดเรกทอรี (หรือจุดเชื่อมต่อ) ที่มีปัญหา:

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

นั่นเป็นเพียงการเรียก fsck บนพาร์ติชันและเมื่อเราทั้งคู่รู้แล้วมันจะทำลายพาร์ติชันที่เมาท์ มีวิธีการใช้ fsck ในแบบอ่านอย่างเดียวบอกฉันว่าวิธีการแยกส่วน - ฉัน - ดิสก์ - เป็นวิธี?
Peltier

ไม่เท่าที่ฉันรู้ @Peltier ฉันคิดว่าคุณสามารถบูทได้ในระดับที่ต่ำกว่ายกเลิกการเมานท์ดิสก์ที่เกี่ยวข้องและรัน fsck ในกรณีใด ๆ อย่างจริงจังคุณสามารถละเว้นการแตกแฟรกเมนต์ในระบบ Linux ส่วนใหญ่ได้
terdon

@Peltier ดูคำตอบที่อัปเดตของฉัน
terdon

1
ใช่มันช้า ใจคุณใช้เวลาประมาณ 2-3 นาทีใน 500GB / home / partition อีกครั้งฉันเน้นว่าการกระจายตัวของไดรฟ์ไม่ใช่ปัญหาอีก โดยเฉพาะอย่างยิ่งถ้าคุณใช้ระบบไฟล์ EXT3-4
terdon

1
@KentFredric Ah! ใช่แน่นอน. ฉันเห็นสิ่งที่คุณหมายถึงตอนนี้ ฉันแก้ไขตามนั้นขอบคุณ ลองลบความคิดเห็นเพื่อลบความยุ่งเหยิง
terdon

0

คุณสามารถใช้เครื่องมือเช่น e2defrag เพื่อรับข้อมูลนี้

โปรดทราบว่าเนื่องจากลักษณะของระบบไฟล์ Linux การจัดเรียงข้อมูลจึงไม่จำเป็น


คุณอยากทราบรายละเอียดคำตอบของคุณไหม? ฉันพยายามรับข้อมูลด้วยe4defrag -cแต่ไม่ได้ผล
Peltier

@Peltier ชี้ไปยังจุดที่ผิดพลาด Ext3 หรือ Ext4 หลังจาก-cตัวเลือกเป็นอาร์กิวเมนต์สุดท้าย และ ... "ไม่ทำงาน"? คุณได้รับข้อผิดพลาดอะไร
gertvdijk

มันบอกว่า "เสร็จสิ้น" อย่างไรก็ตามฉันไม่ได้ชี้ไปที่อุปกรณ์โดยตรง แต่ไปที่จุดเชื่อมต่อ ฉันลองอีกครั้งกับอุปกรณ์
Peltier

โปรดทราบว่าใช้เวลานานในขณะที่ fsck เร็วมาก
Peltier

เพิ่งลองอีกครั้งกับอุปกรณ์มันแค่พูดว่า "เสร็จสิ้น"
Peltier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.