Ubuntu ของฉันใช้ fsck ทุกครั้งที่บูทเครื่อง


19

ทุกครั้งที่บูตเครื่องมันเหมือนกัน:

/dev/sda1: clean, 908443/38690816 files, 44176803/154733312 blocks

Ubuntu มีตัวเลือกบางอย่างที่ใช้เพื่อให้แน่ใจว่าระบบไฟล์มีความสอดคล้องหรือมีบางสิ่งผิดปกติกับ HDD ของฉันหรือไม่? fsckใช้เวลานานถึง 30 วินาทีในขณะที่ทำการบู๊ตและจะเพิ่มเวลาอีกสามเท่าเมื่อต้องการ

เอาท์พุทเต็มรูปแบบ (บางส่วนในเยอรมัน):

Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
Begin: Running /scripts/local-bottom ... done.
done.
Begin: Running /scripts/init-bottom ... done.
fsck von util-linux 2.20.1
/dev/sda1: sauber, 908443/38690816 Dateien, 44176803/154733312 Blöcke
udevd[623]: unknown key 'SYSFS{idVendor}' in /lib/udev/rules.d/45-libticables.rules:6

udevd[623]: invalid rule '/lib/udev/rules.d/45-libticables.rules:6'

 * Starting mDNS/DNS-SD daemon                                                 [ OK ]
 * Starting Reload cups, upon starting avahi-daemon to make sure remote queues are populated                                                                   [ OK ]
 * Starting configure network device security                                  [ OK ]
 * Starting bluetooth daemon                                                   [ OK ]
 ####* Starting all other stuff

Ubuntu รุ่นใดที่คุณใช้อยู่ ระบบของคุณปิดอย่างสมบูรณ์หรือไม่
ubfan1

Raring x64 = 13.04 64 บิต Shutdown ทำงานเรียบร้อยเท่าที่ผมสามารถพูดได้ (ที่ไหน logfile ปิด?)
s3lph

1
fsck บอกว่ามันไม่ทำงานเสียงดังนั้นสะอาด
psusi

แต่องค์ประกอบการตรวจสอบต้องทำงานเพื่อบอกว่าสะอาดใช่มั้ย
s3lph

คำตอบ:


25

/ dev / sda1: ล้าง, 908443/38690816 ไฟล์, 44176803/154733312 บล็อก

สายการผลิตข้อความที่เป็นนี้ :

/* Print the summary message when we're skipping a full check */
log_out(ctx, _("%s: clean, %u/%u files, %llu/%llu blocks"),

มันข้ามการ "ตรวจสอบทั้งหมด" แต่ให้แน่ใจว่าการทดสอบอย่างรวดเร็วไปยังวารสารนั้นสะอาดและไม่มี inodes เด็กกำพร้า:

cat /var/log/boot.log 
fsck from util-linux 2.20.1
fsck from util-linux 2.20.1
/dev/sda1: clean, 260598/771552 files, 1684682/3080192 blocks
/dev/sdb10: recovering journal
/dev/sdb10: Clearing orphaned inode 142568 (uid=1000, gid=1000, mode=0100664, size=32768)
/dev/sdb10: Clearing orphaned inode 138527 (uid=1000, gid=1000, mode=0100600, size=9580)
/dev/sdb10: clean, 54957/991232 files, 3498365/3958006 blocks

นี่เป็นเรื่องปกติและคาดหวัง หากเป็นการตรวจสอบอย่างละเอียดจริง ๆ จะใช้เวลานานกว่า แต่ปกติจะใช้เวลาไม่กี่วินาที systemd-fsck(8)หน้าคู่มือSystemd มีเงื่อนไขที่จะทำการตรวจสอบเต็มรูปแบบ:

systemd-fsck-root.service รับผิดชอบการตรวจสอบระบบไฟล์ในระบบไฟล์รูท แต่เฉพาะในกรณีที่ระบบไฟล์รูทไม่ได้ถูกตรวจสอบใน initramfs systemd-fsck @ .service ใช้สำหรับระบบไฟล์อื่นทั้งหมดและสำหรับระบบไฟล์รูทใน initramfs

บริการเหล่านี้เริ่มต้นเมื่อเริ่มระบบหาก passno ใน / etc / fstab สำหรับระบบไฟล์ถูกตั้งค่าเป็นศูนย์มากกว่า การตรวจสอบระบบไฟล์สำหรับรูทจะดำเนินการก่อนระบบไฟล์อื่น ระบบไฟล์อื่นอาจถูกตรวจสอบพร้อมกันยกเว้นเมื่ออยู่ในดิสก์หมุนเดียวกัน

systemd-fsck ไม่ทราบรายละเอียดใด ๆ เกี่ยวกับระบบไฟล์ที่เฉพาะเจาะจงและเพียงดำเนินการตรวจสอบระบบไฟล์ที่เฉพาะเจาะจงสำหรับแต่ละประเภทระบบไฟล์ (/sbin/fsck.*) ผู้ช่วยนี้จะตัดสินใจว่าควรตรวจสอบระบบไฟล์จริงตามเวลาตั้งแต่การตรวจสอบครั้งล่าสุดจำนวนการเมานต์ยกเลิกการต่อเชื่อมที่ไม่สะอาด ฯลฯ

คุณสามารถตรวจสอบได้ว่าการทดสอบนั้นไม่มีอะไรให้รัน (ถ้าคุณใช้ systemd):

sudo systemd-analyze blame | grep fsck
          1.608s systemd-fsck@dev-disk-by\x2duuid-408535fe\x2d28e6\x2d4d82\x2dbb59\x2d9810ead089a3.service
            87ms systemd-fsck@dev-mapper-vlhome\x2dlvhome.service

คำตอบ Q /etc/fstabได้ที่ลิงค์ของคุณบอกว่าคุณสามารถควบคุมการทำงานโดยการปรับเปลี่ยน เป็นไปได้0หรือไม่ที่จะตั้งค่าหรือ1หรือฉันสามารถบอกระบบของฉันเมื่อต้องทำการทดสอบ "เร็ว" นี้?
s3lph

@the_Seppi ไม่คุณไม่สามารถปิดการใช้งาน fsck ใน fstab ได้ แต่คำสั่งคำตอบอื่น ๆ ของฉันจะอธิบายเพียงแค่อ่านมันเกี่ยวกับการสิ้นสุดของมัน
Braiam

ฉันอ่านว่าการเปลี่ยนตัวเลขสุดท้ายเป็น 0 ปิดใช้งาน fsck บน mount
s3lph

@the_Seppi ใช่คุณพูดถูก1และ2ตรวจสอบคำสั่งซื้อ แต่0ไม่มีใครบอกว่าไม่จำเป็น แต่ฉันมีค่าทั้งสองใน 0 และยังได้รับการตรวจสอบ
Braiam

2
มีข้อผิดพลาดรายงานเมื่อวันที่ Launchpad คือข้อผิดพลาดพุ่งพรวด # มันมีวิธีการแก้ปัญหาที่เป็นไปได้ในการแสดงความคิดเห็น #
azurkin

1

คุณแน่ใจหรือว่าเป็น fsck ที่ใช้เวลา 30 และไม่ใช่แค่ข้อความคอนโซลถัดไปที่เกี่ยวข้องกับ udevd ใช้เวลา 30 วินาที? กล่าวอีกนัยหนึ่ง udevd อาจใช้เวลา 30 วินาทีในการหยุดการทำงานของ libticables ก่อนที่จะแสดงข้อความคอนโซล

ลองลบ (หรือย้ายสถานที่อื่นชั่วคราว)

/lib/udev/rules.d/45-libticables.rules

และดูว่าช่วยได้ไหม


ไม่เป็นอย่างนั้นแน่นอน Running /scripts/init-bottom ...doneจะมีการพิมพ์ที่ 3s เกี่ยวกับทำความสะอาด fsck ที่เกี่ยวกับ 30s
s3lph

คุณใช้ระบบไฟล์ประเภทใด
Joseph Santaniello

ฉันใช้ EXT4
s3lph

หยุดชั่วคราวก่อนที่จะพิมพ์ "fsck von ... " หรือก่อน "/ dev / sda ... " หรือไม่
Joseph Santaniello

คุณกำลังติดตั้ง / dev / sda1 อยู่ที่ไหน คุณอาจลองเพิ่ม: noauto,x-systemd.automountในตัวเลือก fstab หากเป็น / home หรืออะไรบางอย่าง ดังนั้นระบบจะข้ามการติดตั้งจนกว่าจะได้รับการอนุมัติตาม: wiki.archlinux.org/index.php/Systemd#Automount
Joseph Santaniello

0

fsck นี้ในการบู๊ตทุกครั้งเกิดขึ้นกับฉันเนื่องจากนาฬิกาไม่ดี ปรากฏว่า systemd-fsck @ ทำงานก่อน systemd-timesyncd และหากไม่มี RTC สำรองแบตเตอรี่เวลาของระบบจะไม่ถูกต้องในเวลาที่ fsck ทำงาน

ฉันยืนยันว่านี่เป็นสิ่งที่ทำให้เกิดการตรวจสอบเต็มรูปแบบ (แทนที่จะออกจาก fsck อย่างรวดเร็ว) โดยการปิดใช้งาน systemd-timesynd การตั้งค่านาฬิกาเป็นค่าการซิงค์ล่วงหน้าที่พบใน journalctl และการทำงาน fsck จากนั้น e2fsck จะดำเนินการตรวจสอบอย่างเต็มรูปแบบเมื่อตรวจพบว่าเวลาเขียน superblock ล่าสุดเป็นไปในอนาคต:

fsck from util-linux 2.29.2
e2fsck 1.43.4 (31-Jan-2017)
Superblock last write time (Mon Jun 19 00:48:11 2017,
    now = Tue Jan 31 20:09:28 2017) is in the future.
Fix<y>? yes
Pass 1: Checking inodes, blocks, and sizes
...

โปรดทราบว่าทริกเกอร์นี้สำหรับการตรวจสอบเต็มรูปแบบจะไม่เกี่ยวข้องกับทริกเกอร์อื่นของจำนวนสูงสุดของการเมานต์และช่วงเวลานับตั้งแต่การตรวจสอบครั้งล่าสุดที่เห็นในdumpe2fs -hกล่าวถึงในคำตอบอื่น ๆ ที่นี่

โปรดทราบว่าโดยไม่ต้องตั้งค่านาฬิกา (นั่นคือการปล่อยให้เวลาซิงค์กับซิงค์) fsck จะไม่ทำการตรวจสอบเต็มรูปแบบ แต่จะออกอย่างรวดเร็วด้วยข้อความ 'ระบบไฟล์ที่สะอาด'

วิธีแก้ปัญหาฉันปิดใช้งาน fsck ใน / etc / fstab โดยการตั้งค่าฟิลด์ 'pass' เป็น 0 ในที่สุดฉันจะซื้อแบตเตอรี่ RTC สำรองสำหรับอุปกรณ์นี้


-1

การค้นหาของฉันทำให้ฉันสรุปได้ว่าจำนวนสูงสุดของการเมานต์เริ่มต้นของ Ubuntu ถูกตั้งค่าเป็น -1 ซึ่งหมายความว่า fsck จะไม่ทำงานในการบู๊ตใด ๆ โดยไม่คำนึงถึงจำนวนการเมาท์ คุณสามารถตรวจสอบด้วยคำสั่ง -

sudo dumpe2fs -h /dev/sda8 | grep -i 'mount count'

tune2fsคุณสามารถเพิ่มขึ้นอยู่กับความต้องการของคุณโดยใช้ ตัวอย่างทั่วไปมีดังนี้ -

sudo tune2fs -c 30 -i 1w /dev/sda8

ปรับแต่งมันตามความต้องการของคุณ


1
ไม่นั่นหมายความว่าค่าจะถูก disreagrded โดยเคอร์เนลและ e2fsck: linux.die.net/man/8/tune2fs "ถ้า max-mount-counts เป็น 0 หรือ -1 จำนวนครั้งที่ระบบไฟล์ถูกเมาท์จะถูกเพิกเฉย โดย e2fsck (8) และเคอร์เนล "
HappyCactus

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