พื้นที่สว็อปมีระบบไฟล์หรือไม่?


26

สำหรับการทำงานกับอุปกรณ์เก็บข้อมูลเราต้องการระบบไฟล์แล้วพื้นที่สว็อปล่ะ?

หากไม่มีระบบไฟล์ระบบปฏิบัติการจะทำงานอย่างไร ข้อมูลถูกเขียนไปยังดิสก์อย่างไรและเข้าถึงได้อย่างไรอีกครั้ง


6
สลับไม่จำเป็นต้องมีระบบไฟล์ มันไม่ได้จัดเก็บไฟล์
Pilot6

3
มันเก็บหน้า RAM
Pilot6

2
คุณช่วยอธิบายสิ่งที่คุณพยายามจะทำอย่างไร คุณกำลังบอกว่าสิ่งที่คุณต้องการคือที่สำหรับเก็บข้อมูลชั่วคราว?
Jake

6
"ฉันต้องการทราบว่าเป็นไปได้อย่างไรที่จะเขียนลงในพื้นที่จัดเก็บโดยไม่มีระบบไฟล์" - คุณเขียนไปยังพื้นที่เก็บข้อมูล คิดเกี่ยวกับสิ่งนี้: หากระบบไฟล์จำเป็นต้องเขียนไปยังพื้นที่เก็บข้อมูลระบบไฟล์จึงไม่มีอยู่เนื่องจากระบบไฟล์ต้องสามารถเขียนลงในหน่วยเก็บข้อมูลได้โดยไม่ต้องตัดสินใจเลือกระบบไฟล์ "ตามคำตอบของคุณฉันสามารถพูดได้ว่า RAM มีระบบไฟล์ขนาดเล็กและไฟล์สลับใช้ระบบไฟล์นี้สำหรับการทำงานกับหน้า?" - ไม่ระบบไฟล์ใช้สำหรับจัดเก็บไฟล์ พื้นที่สว็อปไม่ได้จัดเก็บไฟล์
Jörg W Mittag

4
เป็นเรื่องปกติที่จะเขียนไฟล์เดียว (ala tar และ dd) ไปยังหน่วยเก็บข้อมูลที่ไม่ได้ฟอร์แมตและยังพบได้บ่อยกว่าที่จะมีระบบไฟล์ที่ซ้อนกัน (ดิสก์เสมือน,. iso, squashfs) เกมบนฟลอปปี้บางครั้งจะเขียนคะแนนสูงไปยังตำแหน่งแน่นอน (คงที่) และบางแอปพลิเคชั่นนั้น ได้แก่ Cylinder, Head, Sector สลับพาร์ติชั่นยังคงเป็นพาร์ติชั่น, แต่ไม่มี, ไม่มีระบบไฟล์, หรือ "แมป" นอกเหนือจากออฟเซ็ตและรัน?
mckenzm

คำตอบ:


28

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

 25 union swap_header {
 26     struct 
 27     {
 28         char reserved[PAGE_SIZE - 10];
 29         char magic[10];
 30     } magic;
 31     struct 
 32     {
 33         char     bootbits[1024];
 34         unsigned int version;
 35         unsigned int last_page;
 36         unsigned int nr_badpages;
 37         unsigned int padding[125];
 38         unsigned int badpages[1];
 39     } info;
 40 };

แต่ละพาร์ติชันมีรหัสเฉพาะที่เกี่ยวข้องและตามTLDP :

รหัสสำหรับ ext2 คือ 0x83 และการแลกเปลี่ยน linux คือ 0x82

เมื่อมีการแลกเปลี่ยนไฟล์นั่นเป็นเรื่องที่แตกต่างออกไปเล็กน้อย เคอร์เนลต้องเคารพความจริงที่ว่าระบบไฟล์อาจมีวิธีการจัดโครงสร้างข้อมูลของตนเอง จากลิงค์ kernel.org เดียวกัน:

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

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

คุณได้ถามด้วย

ฉันต้องการทราบว่าเป็นไปได้อย่างไรที่จะเขียนลงในพื้นที่จัดเก็บโดยไม่มีระบบไฟล์

พูดอย่างเคร่งครัดไม่จำเป็นต้องจัดโครงสร้างแรม อย่างไรก็ตามส่วนของ RAM สามารถจัดโครงสร้างเป็นtmpfsภายใต้ระบบปฏิบัติการ Unix-like นอกจากนี้ยังมีramfsและ initramfs ซึ่งเป็นสิ่งที่ได้รับการโหลดในระหว่างกระบวนการบูต แต่ในทางเทคนิคแล้วข้อมูล RAM นั้นควรจะเป็นข้อมูลดิบ 1 และ 0 ดังนั้นจึงไม่จำเป็นต้องจัดโครงสร้างข้อมูลเหล่านั้น


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

ฉันคิดว่าพวกเขาหมายถึงพื้นที่ดิสก์ที่นี่ "ฉันต้องการทราบว่าเป็นไปได้อย่างไรที่จะเขียนลงในพื้นที่เก็บข้อมูลที่ไม่มีระบบไฟล์" แทนที่จะเป็น RAM?
Anwar

@ อันวาร์ใช่ แต่ฉันเข้าใจแล้ว
ซิโนโนช

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

1
ตกลง โดยพื้นฐานแล้วมันสามารถอธิบายได้ว่าเป็นพื้นที่ที่แมปแล้ว มันไม่ได้เป็นส่วนขยายของหน่วยความจำจริง แต่เป็นพื้นที่ทำงานเพื่อจัดเก็บชิ้นส่วนที่สามารถซ้อนทับได้ตามต้องการ
mckenzm

14

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

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


13

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

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

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

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

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