วิธีการดีแฟรกระบบไฟล์ ext4


65

ฉันไม่ต้องการคำตอบใด ๆ ที่บอกว่าไม่จำเป็นโปรด!

คำตอบ:


66

ใช้ e4defrag เพื่อจัดเรียงไฟล์ของคุณ

หากระบบไฟล์ ext4 ของคุณถูกสร้างขึ้นด้วยextentตัวเลือก (เป็นค่าเริ่มต้นใน distros ล่าสุด) คุณสามารถใช้e4defragยูทิลิตีเพื่อตรวจสอบและจัดเรียงข้อมูลแบบออนไลน์โดยไม่ต้องติดตั้ง

เพียงตรวจสอบระดับการแตกแฟรกเมนต์ด้วยสิ่งนี้ (คุณต้องเป็นรูทเพื่อดูรายละเอียด):

sudo e4defrag -c /path/to/myfiles

นี่คือตัวอย่างของผลลัพธ์ที่คุณจะได้รับ:

$ sudo e4defrag -c iso/
<Fragmented files>                             now/best       size/ext
1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso
                                                 7/1         111177 KB
2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso
                                                 4/1         100897 KB
3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso
                                                 6/1         116053 KB
4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso
                                                 8/1          76160 KB
5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso
                                                15/1          75712 KB

 Total/best extents             40/5
 Average size per extent            90577 KB
 Fragmentation score                0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (iso/) does not need defragmentation.
 Done.

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

e4defrag /path/to/myfiles

ผู้ใช้ของคุณสามารถรันบนไฟล์ของตนเองได้โดยไม่จำเป็นต้องรูทหากคุณไม่ต้องการทำงานกับผู้ใช้คนอื่นหรือไฟล์ระบบ

e4defragอยู่ใน e2fsprogsแพ็คเกจและฉันคิดว่าติดตั้งไว้แล้วในระบบ Ubuntu ของคุณ


2
e4defrag -c ไม่ส่งคืน แต่doneอย่างใด นั่นหมายความว่าไม่มีการแยกส่วน?
hrzhu

3
ขออภัยฉันลืมที่จะพูดถึงว่าคุณจำเป็นต้องเรียกใช้e4defrag -cด้วยsudoหรือเป็นรากเพื่อรับข้อมูลรายละเอียดเกี่ยวกับการกระจายตัวของไฟล์ของคุณ แต่ไม่จำเป็นต้องรูทเพื่อจัดเรียงข้อมูล
gerlos

@gerlos เกิดอะไรขึ้นถ้าฉันพยายามที่จะ defrag ไฟล์ระบบราก/?
Pavel Sayekat

2
@PavelSayekat คุณเพียงแค่ต้องเป็น root (เช่นใช้sudo) เพื่อเรียกใช้e4defrag /และไม่จำเป็นต้องทำอะไรเป็นพิเศษ e4defragจะตรวจสอบทุกไฟล์ที่นั่นดังนั้นพร้อมที่จะรอให้ไดรฟ์อ่านทุกอย่าง จำไว้ว่ามันอาจเป็นการเสียเวลามาก ส่วนใหญ่หากคุณมีพื้นที่ว่างเพียงพอในระบบไฟล์คุณจะมีไฟล์ที่กระจัดกระจายเพียงไม่กี่ไฟล์และบ่อยครั้งที่ไฟล์เหล่านั้นจะอยู่ในอุปกรณ์ที่เกี่ยวข้องกับกิจกรรมเว็บเบราว์เซอร์ของคุณ ตัวอย่างเช่นบนเดสก์ท็อปพีซีของฉันที่ฉันใช้ทุกวันe4defragรายงานว่ามีไฟล์ที่กระจัดกระจายเพียง 5 ไฟล์ทั้งหมดอยู่ใน Chromium config และแคช dir
gerlos

สิ่งนี้ defrags เฉพาะ extents insides ไฟล์เอง แต่ไม่ใช่ไฟล์ระหว่างกัน นั่นคือถ้าฉันมีไดเรกทอรีที่มีสามไฟล์ที่ตำแหน่งทางกายภาพที่แตกต่างกันมากบนดิสก์มันจะยังคงช้าในการใช้ไฟล์เหล่านี้พร้อมกันหลังจากใช้เครื่องมือนี้ มีวิธีใดที่จะจัดเรียงไฟล์บนดิสก์หรือ "จัดระเบียบพื้นที่ว่าง" ในบางครั้งเรียกว่า?
fuzzyTew

29

ลองดูในe2fsprogs สิ่งนี้ยังมีอยู่ในแพ็คเกจ Ubuntu มันให้โปรแกรม e4defrag


5
สิ่งนี้มีประโยชน์จริง ๆ กับระบบไฟล์ ext4 ที่สร้างขึ้นด้วย -O scope ซึ่งไม่ใช่ค่าเริ่มต้น
dobey

คนที่แต่งตัวประหลาดตอบเกี่ยวกับการ defrag มันอาจจะเป็นไปได้กับ e4defrag cuestion ไม่ได้ระบุเฉพาะการบันทึกภายนอกหรือไม่เขาไม่สมควรได้รับ -1
เฟลิเป้อัลคาซิบาร์

8
@dobey Ubuntu 12.04 (.3) LTS บรรจุextentไว้ในstanza ext4ของ[fs_types]หัวข้อใน/etc/mke2fs.conf- ดังนั้นจึงเป็น "default" แม้ว่าโดยไม่คำนึงถึงการกำหนดค่าเวลาสร้างของเครื่องที่เชื่อมต่อกับระบบไฟล์คุณควรปิดการตรวจสอบระบบไฟล์ด้วยตัวเอง: tune2fs -l </dev/with/ext4> | grep extent(หรือดูที่บรรทัด "คุณสมบัติของระบบไฟล์" ในเอาต์พุต tune2fs ที่สมบูรณ์) โปรดทราบว่าฉันเพิ่งรันe4defrag -c ...ระบบไฟล์ 1TB แบบเต็ม 100% ด้วยextentและมีไฟล์ที่กระจัดกระจายเพียง 5 ไฟล์และ "คะแนนการแตกแฟรกเมนต์" 0. YMMV
Richard Michael

@RichardMichael FYI: e2defrag -c /pathพิมพ์ไฟล์ที่กระจัดกระจาย 5 ไฟล์แรกเท่านั้นที่พบ (ไม่ใช่แม้แต่ไฟล์ที่กระจัดกระจายที่สุด) เรียกใช้e2defrag -v /pathเพื่อดูว่ามันช่วยลดจำนวนขอบเขตได้อย่างไร
Tino

17

ใช้ Gparted เพื่อดีแฟรกระบบไฟล์ของคุณ

หากคุณมีพื้นที่เพียงพอในฮาร์ดไดรฟ์คุณสามารถใช้Gpartedเพื่อจัดเรียงข้อมูลระบบไฟล์ของคุณ ( ext2, ext 4, nfts, ฯลฯ ) คุณต้องบูตจากแผ่นดิสก์สำหรับบูต CD / DVD / USB เพราะต้องถอดไดร์ฟออก คุณต้องมีพื้นที่ว่างที่ไม่ได้ใช้มากกว่าพื้นที่ใช้งานเพื่อให้ทำงานได้และอาจใช้เวลาสักครู่

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

ด้วยพาร์ติชันที่คุณต้องการจัดเรียงข้อมูลเป็นพาร์ติชันล่าสุดของไดรฟ์:

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

ตอนนี้จัดระเบียบแล้ว

และฉันรู้ว่าคุณไม่ได้สนใจในทำไม / ทำไมไม่ defrag อูบุนตู แต่ฉันจะโพสต์ลิงค์ไปทำไม-is-จัดระเบียบ-ที่ไม่จำเป็นอยู่แล้ว


หลังจากหดตัวและขยับไปทางขวาทำไมคุณถึงเติบโตจากนั้นหดตัวอีกครั้งแทนที่จะขยับไปทางซ้าย
Jason C

นอกจากนี้ฉันสังเกตเห็นว่าหลังจากขั้นตอนการเติบโตซ้ายข้อมูลตัวเองถูกย้ายจริงอีกครั้ง (หลักฐานจากข้อมูลการย้าย gparted ตรวจสอบโดยการตรวจสอบโดยตรงของอุปกรณ์บล็อกหลังจากนั้น) ดังนั้นเว้นแต่ว่าเป็นรุ่น / ระบบไฟล์ขึ้นอยู่กับพฤติกรรมสุดท้าย shrink + regrow สามารถข้ามได้ มันจะปรากฏขึ้นเพื่อให้เพียงพอที่จะเพียง แต่ทำ: 1) หดตัวลงและย้ายไปทางขวา 2) ใช้ 3) การเจริญเติบโตทางด้านซ้าย
Jason C

การย้ายพาร์ติชั่นที่เรียบง่ายที่คุณต้องการจัดเรียงข้อมูลไปเป็นครั้งสุดท้ายนั้นไม่จำเป็นว่าจะต้องย้ายพาร์ติชั่นไปยังจุดสิ้นสุดที่แท้จริงของ HD การขยายพาร์ติชันไปทางซ้ายไปจนถึงขนาดสูงสุดทำให้แน่ใจว่าพาร์ทิชันปลายทางนั้น "ย้าย" จริง ๆ ไปยังส่วนท้ายสุดของฮาร์ดไดรฟ์
James

การย้ายไปทางขวาจะเป็นการย้ายไปยังจุดสิ้นสุดของฮาร์ดไดรฟ์ พาร์ติชั่นบาร์ที่ด้านบนของ gparted GUI เป็นตัวแทนที่ถูกต้องของรูปแบบข้อมูล (อย่างน้อยที่สุดเท่าที่มองเห็นได้ในระบบปฏิบัติการอุปกรณ์แฟลชเช่นแมปโลจิคัลแผนที่ไปยังตำแหน่งทางกายภาพในอีกด้านหนึ่งของตัวควบคุม แต่สำหรับ HDD ทั่วไปมันถูกต้อง) สิ่งนี้สามารถตรวจสอบได้โดยการสังเกตตำแหน่งเริ่มต้นใหม่ในตารางพาร์ติชัน :)
Jason C

อ๊ะเรากำลังสื่อสารผิดกันอยู่ คุณหมายถึงการจัดลำดับพาร์ติชันใหม่เพื่อให้ล่าสุด ฉันหมายถึงย้ายพาร์ติชั่นไปที่ส่วนท้ายของไดรฟ์และนั่นคือสิ่งที่ฉันคิดว่าคุณหมายถึงเช่นกัน (คุณสามารถย้ายพาร์ติชันรอบ ๆ ไดรฟ์ได้โดยไม่ต้องแบ่งพาร์ติชันใหม่) :)
Jason C

3

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

นอกจากนี้โปรดทราบว่าคุณต้องทำในฐานะผู้ใช้ขั้นสูงเฉพาะในกรณีที่คุณต้องการจัดเรียงข้อมูลโดยไม่ต้องถอดออก

การใช้คำสั่ง apropos

e4defrag -vc /path #verbose output with count

2

Ubuntu 14.04 LTS วาง (อย่างน้อยไดรฟ์หลัก) ลงในพาร์ติชัน EXT4 เมื่อติดตั้งในการติดตั้งใหม่ทั้งหมด (ไม่ได้อยู่ด้านบนของ Win-Junk)

ในกรณีนี้หากคุณมีเพียงแค่ตั้งค่าระบบใหม่หรือการจัดรูปแบบใหม่ในระบบเก่าและแล้วก็สะอาดติดตั้งแล้วโดยเริ่มต้นด้วย 14.04 LTS คุณมี Partition Ext4 /dev/sda1ที่

ตอนนี้เพียงแค่เปิด Terminal ( CTRL- ALT- T) และพิมพ์:

sudo e4defrag -c /dev/sda1

และอดทนจนกว่าการตรวจสอบจะเสร็จสมบูรณ์และคุณจะได้รับรายงานการแตกแฟรกเมนต์กลับมา

หากคุณไม่มั่นใจเกี่ยวกับการมี Partition Ext4 บนไดรฟ์ OS df -Tของคุณเพียงแค่ไปที่บ้านและประเภท ดูว่าพาร์ทิชัน sda * ของคุณถูกตั้งค่าเป็นอะไร (ลองที่ 14.04LTS และคุณจะเห็น EXT4 ยกเว้นว่าคุณเลือกพาร์ทิชันประเภทอื่นตามการตั้งค่าฮาร์ดไดรฟ์)


เตรียมพร้อมนอกหัวข้อเล็กน้อยและแทบไม่ได้เพิ่มคุณค่าใด ๆ ให้กับคำถามโดยเฉพาะอย่างยิ่งกับคำพูดสุดท้าย
Fernando Silveira

คุณสามารถจัดเรียงข้อมูลมากกว่าหนึ่งพาร์ติชั่นด้วยคำสั่งเดียวกัน: sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay

1

e2fsck -D /dev/sda1 เพิ่มประสิทธิภาพไดเรกทอรีโดยการเรียงลำดับและทำดัชนีใหม่ซึ่งมักจะเพิ่มความเร็วในสิ่งต่างๆ อาจไม่ได้รับการพิจารณาว่าเป็น Defrag ของระบบไฟล์แบบเต็ม แต่ไม่ใช่ทุกระบบที่มี e4defrag

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