กลับไปหน้าบทความ

อ่าน 4 นาที

tmpfs

tmpfs (ย่อมาจาก temporary file system ) คือ รูปแบบการจัดเก็บ ไฟล์ชั่วคราว ที่ใช้ใน ระบบปฏิบัติการ แบบ Unix หลายระบบ โดยมีจุดประสงค์เพื่อให้ปรากฏเหมือน ระบบไฟล์ ที่ถูกเมานต์...

tmpfs

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

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

ความหมาย

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

หน่วยความจำที่ tmpfs ใช้จะเพิ่มหรือลดลงเพื่อรองรับไฟล์ที่บรรจุอยู่ภายใน

ระบบปฏิบัติการ Unix หลายตัวเปิดใช้งานและใช้งาน tmpfs เป็นค่าเริ่มต้นสำหรับ ไดเร็กทอรี /tmpของระบบไฟล์หรือสำหรับหน่วยความจำที่ใช้ร่วมกันสามารถสังเกตได้จากคำสั่ง dfดังตัวอย่างนี้:

ระบบไฟล์ 1K บล็อก ใช้งานแล้ว เหลืออยู่ เปอร์เซ็นต์การใช้งาน ติดตั้งบน tmpfs 1686428 0 1686428 0% /dev/shm tmpfs 674572 1808 672764 1% /run tmpfs 1024 0 1024 0% /run/credentials/systemd-journald.service tmpfs 1686428 1628 1684800 1% /tmp tmpfs 1024 0 1024 0% /run/credentials/[email protected] tmpfs 1024 0 1024 0% /run/credentials/[email protected] tmpfs 337284 32 337252 1% /run/user/0 tmpfs 1024 0 1024 0% /run/credentials/[email protected] tmpfs 337284 280464 56820 84% /run/user/1000 

ระบบปฏิบัติการ Linux บางระบบ (เช่นDebianจนถึง Debian 13 [ 1 ] ) ไม่มี tmpfs ที่ติดตั้งบน/ tmpตามค่าเริ่มต้น ในกรณีนี้ ไฟล์ภายใต้/tmpจะถูกจัดเก็บในระบบไฟล์เดียวกันกับ/

ในระบบปฏิบัติการ Linux เกือบทุกรุ่น จะมีการเมานต์ tmpfs ไว้ที่/run/หรือ/var/run/เพื่อจัดเก็บไฟล์ชั่วคราวขณะรันไทม์ เช่นไฟล์ PIDและซ็อกเก็ตโดเมน Unix

การนำไปใช้

แนวคิด tmpfs นั้นมีหลายเวอร์ชันที่เป็นอิสระต่อกัน หนึ่งในเวอร์ชันแรกสุดได้รับการพัฒนาโดยSun Microsystemsสำหรับ SunOS และระบบปฏิบัติการอื่นๆ เช่น BSD และ Linux ก็ได้พัฒนาเวอร์ชันของตนเองเช่นกัน

ซันโอเอส

SunOS 4 ประกอบด้วยสิ่งที่น่าจะเป็นการใช้งาน tmpfs ครั้งแรก โดยปรากฏครั้งแรกใน SunOS 4.0 ในช่วงปลายปี 1987 พร้อมกับการจัดการพื้นที่แอดเดรสแบบตั้งฉากใหม่ที่อนุญาตให้แมปหน่วยความจำวัตถุใดๆ ก็ได้[ 2 ] [ 3 ]

ไดเร็กทอรี/tmp ของ Solaris ถูกสร้างขึ้นเป็นระบบไฟล์ tmpfs โดยค่าเริ่มต้นตั้งแต่ Solaris 2.1 [ 4 ]ซึ่งวางจำหน่ายในเดือนธันวาคม พ.ศ. 2535 [ 5 ] เอาต์พุตสำหรับคำสั่ง dfของ Solaris จะแสดงswapเป็นที่เก็บข้อมูลพื้นหลังสำหรับวอลุ่ม tmpfs ใดๆ:

# df -k ระบบไฟล์ (กิโลไบต์) ที่ใช้ ความจุที่ว่าง ติดตั้งบนสวอป 601592 0 601592 0% /tmp/test

ลินุกซ์

tmpfs ได้รับการสนับสนุนโดยเคอร์เนล Linuxตั้งแต่เวอร์ชัน 2.4 (4 มกราคม 2544) [ 6 ] Linux tmpfs (เดิมเรียกว่าshm fs ) [ 7 ]ใช้โค้ด ramfs ที่ใช้ระหว่างการบูตเครื่องและใช้แคชเพจ เช่นกัน แต่ต่างจาก ramfs ตรงที่รองรับการสลับเพจที่ใช้งานน้อยไปยังพื้นที่สวอป รวมถึงขนาดระบบไฟล์และข้อจำกัดของ inode เพื่อป้องกัน สถานการณ์ หน่วยความจำไม่เพียงพอ (ค่าเริ่มต้นคือครึ่งหนึ่งของ RAM ทางกายภาพและครึ่งหนึ่งของจำนวนเพจ RAM ตามลำดับ) [ 8 ]

บีเอสดี

4.2BSDได้แนะนำ MFS [ 9 ]ซึ่งเป็นระบบไฟล์แบบใช้หน่วยความจำที่นำมาใช้โดยการประยุกต์ใช้ ระบบไฟล์ดิสก์ FFS ที่มีอยู่ กับพื้นที่หน่วยความจำเสมือน

tmpfs ซึ่งเป็นระบบไฟล์หน่วยความจำที่ใช้โครงสร้างข้อมูลในหน่วยความจำแบบดั้งเดิมเพื่อปรับปรุงประสิทธิภาพของ MFS ได้รับการรวมเข้ากับซอร์สโค้ด อย่างเป็นทางการ ของ NetBSD เมื่อวันที่ 10 กันยายน พ.ศ. 2548 [ 10 ]และมีให้ใช้งานในเวอร์ชัน 4.0 และเวอร์ชันที่ใหม่กว่า

FreeBSDได้นำการใช้งานของ NetBSD มาใช้ ซึ่งมีให้ใช้งานในเวอร์ชัน 7.0 และเวอร์ชันที่ใหม่กว่า[ 11 ]

DragonFly BSDยังได้นำการใช้งานของ NetBSD มาปรับใช้ด้วย โดยมีให้ใช้งานในเวอร์ชัน 2.5.1 และเวอร์ชันที่ใหม่กว่า

OpenBSDได้นำการใช้งาน tmpfs ของ NetBSD มาใช้เช่นกัน โดยเริ่มต้นจาก Pedro Martelletto และได้รับการปรับปรุงโดยคนอื่นๆ อีกมากมาย มีการเปิดใช้งานในเวอร์ชันตั้งแต่ 17 ธันวาคม 2013 [ 12 ] OpenBSD เวอร์ชันแรกที่มี tmpfs รวมอยู่ด้วยคือ 5.5 [ 13 ] OpenBSD 6.0 ปิดใช้งาน tmpfs เนื่องจากขาดการบำรุงรักษา

ข้อดี

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

ข้อเสีย

ในระบบที่ไม่มีพื้นที่สวอปหรือพื้นที่สวอปเหลือน้อย tmpfs อาจใช้หน่วยความจำจำนวนมาก

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

  • "หน้าคู่มือการใช้งาน Solaris tmpfs(7FS)" สืบค้นเมื่อ 25 กุมภาพันธ์ 2013
  • "เอกสารประกอบ tmpfs จาก Kernel.org" สืบค้นเมื่อ2015-10-05
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Tmpfs&oldid=1334252796 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ tmpfs

tmpfs (ย่อมาจาก temporary file system ) คือ รูปแบบการจัดเก็บ ไฟล์ชั่วคราว ที่ใช้ใน ระบบปฏิบัติการ แบบ Unix หลายระบบ โดยมีจุดประสงค์เพื่อให้ปรากฏเหมือน ระบบไฟล์ ที่ถูกเมานต์...

ความหมาย

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

การนำไปใช้

แนวคิด tmpfs นั้นมีหลายเวอร์ชันที่เป็นอิสระต่อกัน หนึ่งในเวอร์ชันแรกสุดได้รับการพัฒนาโดย Sun Microsystems สำหรับ SunOS และระบบปฏิบัติการอื่นๆ เช่น BSD และ Linux ก็ได้พัฒนาเวอร์ชันของตนเองเช่นกัน

ซันโอเอส

SunOS 4 ประกอบด้วยสิ่งที่น่าจะเป็นการใช้งาน tmpfs ครั้งแรก โดยปรากฏครั้งแรกใน SunOS 4.0 ในช่วงปลายปี 1987 พร้อมกับการจัดการพื้นที่แอดเดรสแบบตั้งฉากใหม่ที่อนุญาตให้แมปหน่วยความจำวัตถุใดๆ ก็ได้ [ 2 ] [ 3 ]