มีวิธีวัดความก้าวหน้าของ ext4lazyinit หรือไม่?


17

ผมได้ถามคำถามเกี่ยวกับ ext4lazyinit ที่นี่ จากทั้งหมดที่ฉันได้อ่านและทำความเข้าใจมันช่วยให้คุณเริ่มใช้ hdd โดยไม่ต้องสร้าง inodes ทั้งหมดสำหรับระบบไฟล์ของคุณ

วิธีเดียวที่คุณรู้หรือวัดสามารถคือการตรวจสอบในext4lazyinit iotopมีวิธีในการรับความคืบหน้าเป็นเปอร์เซ็นต์หรือไม่


2
ตรวจสอบการแก้ไขแพทช์นี้
Krzysztof Stasiak

คุณลองใช้ยูทิลิตี้ bar [1] หรือ pv [2] หรือไม่? [1]: [ archlinux.org/packages/community/any/bar/] [2]: [ archlinux.org/packages/community/x86_64/pv/]
mattia.b89

@ mattia.b89 ext4lazyinit ไม่ใช่โปรแกรม userspace เป็นกระบวนการเคอร์เนลพื้นหลัง ตรวจสอบลิงก์ในคำถามที่ชี้ไปที่คำถามดั้งเดิมของ shirish เกี่ยวกับเรื่องนี้เพื่อรับข้อมูล
Austin Hemmelgarn

นอกจากนี้ฉันมักจะเห็นด้วยกับการประเมินของ Ted T'so ในการสนทนาแก้ไขที่ @KrzysztofStasiak เชื่อมโยงหากคุณอยู่ในสถานการณ์ที่คุณต้องรอให้เสร็จคุณอาจไม่ควรใช้มัน
Austin Hemmelgarn

@ KrzysztofStasiak คุณสามารถตอบได้ไหมฉันคิดว่านี่เป็นคำตอบที่ใกล้ที่สุด FWIW Ted Tso มีความหมายเหมือนกันกับ ext * ดังนั้นความเชื่อของเขาก็สำคัญ
2560

คำตอบ:


1

ตรวจสอบการสนทนาแก้ไขนี้ คุณสามารถเริ่มต้นระบบได้โดยไม่ต้องขี้เกียจ แต่ไม่สามารถวัดได้ หากคุณมีเวลารอเพียงแค่รอ คุณสามารถลองแก้ไขจากการสนทนา แต่ตาม Patchwork มันมีสถานะ "ปฏิเสธ"


1

ฉันดูเหมือนจะได้พบวิธีประมาณความคืบหน้าของ ext4lazyinit

TL; DR: ดูสคริปต์ด้านล่าง

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

ขั้นตอนที่ 1 : เปรียบเทียบขนาดพาร์ติชันใน fdisk (แปลงเป็น kiB) กับจำนวนบล็อก 1K ที่แสดงใน df ลบออก (จำนวนบล็อก 1K) จาก (ขนาดพาร์ติชันเป็น kiB) เพื่อรับ (ขนาดโดยประมาณของตาราง inode)

แก้ไข: ตัวอย่าง fdisk:

Sector size (logical/physical): 512 bytes / 4096 bytes
(...omitted...)
Device     Start         End     Sectors  Size Type
/dev/sdd1   2048 11720978398 11720976351  5.5T Linux filesystem

DF:

Filesystem              1K-blocks       Used  Available Use% Mounted on
/dev/mapper/workbackup 5813233164 1217095176 4596121604  21% /mnt/backup_work

11720976351 เซกเตอร์ * 512 ไบต์ / เซกเตอร์ / 1024 = 5860488175.5 kiB (เกือบ 5.5 TiB เหมือนที่ fdisk พูด) 5813233164 ลบ df เท่ากับ 47255011.5 kiB (บาง 45 GiB) สำหรับขนาดตาราง inode โดยประมาณ

ขั้นตอนที่ 2 : รับ (kiB ทั้งหมดเขียนไปยังพาร์ติชัน):

awk '{ print $3"\t"$10 }' /proc/diskstats

เลือกบรรทัดที่เหมาะสมสำหรับพาร์ติชันของคุณและแปลงเป็น kiB

แก้ไข: ตัวอย่าง:

sdb     260040
sdb1    260040
sdd     2530109116
sdd1    2530108940

การใช้ sdd1 ในกรณีของฉัน kiB ทั้งหมดเขียน = 2530108940 ภาค * 512 ไบต์ / ส่วน / 1024 = 1265054470 kiB (เกือบ 1.2 TiB)

ขั้นตอนที่ 3 : จำเป็นเฉพาะเมื่อคุณได้เขียนข้อมูลใด ๆ ไปยังระบบไฟล์แล้ว ลบออก (จำนวนบล็อก 1K ที่ใช้แสดงในรูป df) จาก (kiB ทั้งหมดที่เขียนไปยังพาร์ติชัน) เพื่อรับ (ประมาณ kiB เขียนไปยังตาราง inode)

แก้ไข: ตัวอย่าง: kiB โดยประมาณที่เขียนลงในตาราง inode = 1265054470 (จากขั้นตอนที่ 2) - 1217095176 (ดู df เอาต์พุตในขั้นตอนที่ 1) = 47959294 kiB (45.7 GiB)

ขั้นตอนที่ 4 : หาร (ประมาณ kiB เขียนไปยังตาราง inode) โดย (ขนาดโดยประมาณของตาราง inode ในหน่วย kiB) และคูณด้วย 100 เพื่อรับความคืบหน้าเป็นเปอร์เซ็นต์

แก้ไข: ตัวอย่าง: ความคืบหน้าโดยประมาณ = 47959294 / 47255011.5 * 100% = 101.5%

ต้นฉบับ

หรือเขียนว่าเป็นสคริปต์บางส่วน (ที่ฉันปฏิเสธที่จะเรียกสคริปต์เพื่อ fdisk ด้วยเหตุผลด้านความปลอดภัย):

let sectorsize=$(cat /sys/block/sda/queue/hw_sector_size)
let partsize=$2*$sectorsize/1024
let fssize=$(df -- "$3" | tail -n -1 | awk '{print $2}')
let approxinodetablesize=$partsize-$fssize
let tkw=$(awk "/$1/"' {print $10}' /proc/diskstats | head -n 1)*$sectorsize/1024
let used=$(df -- "$3" | tail -n -1 | awk '{print $3}')
let tkw_inodetable=$tkw-$used
echo "Approximate progress: $(bc -l <<< "$tkw_inodetable*100.0/$approxinodetablesize") %"

โทรด้วย $ 1 = "ชื่อของพาร์ติชัน" (เช่น sdd1), $ 2 = "ส่วนของพาร์ติชันตาม fdisk", $ 3 = "จุดเชื่อมต่อโดยไม่มีเครื่องหมายทับ"

ผลการทดสอบ

ฉันได้ทดสอบวิธีการของฉันเพียงครั้งเดียว ติดตั้ง:

  • พาร์ติชั่น 6 TB

  • การเข้ารหัสโดยใช้ cryptsetup

  • ระบบไฟล์ที่สร้างด้วยพารามิเตอร์ดีฟอลต์ยกเว้น -m 0

  • ไฟล์ 279 GiB ที่เขียนไปยังพาร์ติชันก่อนที่ ext4lazyinit จะเสร็จสิ้น

ผลลัพธ์ : การอ่าน 99.7% ณ เวลาที่ดำเนินการเสร็จ :-)

แก้ไข: ดิสก์เดียวกันหลังจากที่เขียนข้อมูลไปยัง TiB อีกเกือบหนึ่งตอนนี้ให้ผลการประเมินที่ 101.5% แม่นยำพอที่จะเป็นประโยชน์ฉันคิดว่า


มันคงจะดีกว่าถ้ามีตัวอย่างให้เห็นดังนั้นเราจึงมีความคิดเกี่ยวกับสิ่งที่เราจะมอง
Shirish

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