การเลิกใช้งาน SDCardFS

ระบบเลิกใช้งาน SDCardFS ในอุปกรณ์ที่เปิดตัวด้วย Android 11 ขึ้นไปและใช้เคอร์เนลเวอร์ชัน 5.4 ขึ้นไป ในอุปกรณ์ดังกล่าว การทดสอบ VTS ไม่อนุญาตให้ระบบไฟล์ที่ติดตั้งแสดงเป็น SDCardFS อุปกรณ์ที่เปิดตัวด้วย Android 11 ขึ้นไปแต่ใช้เคอร์เนลเวอร์ชัน 4.19 หรือต่ำกว่าจะใช้ SDCardFS ต่อได้ แต่ Google จะไม่ให้การสนับสนุนเพิ่มเติม

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

ฟังก์ชันการแทนที่ SDCardFS

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

กำหนดค่าฟังก์ชันการเปลี่ยนการ์ด SD

หากต้องการเปิดใช้โควต้าโปรเจ็กต์และการแปลงอักขระเป็นตัวพิมพ์เล็กสำหรับพื้นที่เก็บข้อมูลจำลองโดยไม่มี SDCardFS ในอุปกรณ์ที่เปิดตัวด้วย Android 11 ขึ้นไป ให้รับค่าจาก emulated_storage.mk ในไฟล์ device.mk ดังนี้

$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)

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

เหตุผลที่ควรเลิกใช้งาน SDCardFS

การเลิกใช้งาน SDCardFS มีสาเหตุหลายประการ

ความเสถียร

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

ความเท่าเทียมของข้อมูลในระบบอัปสตรีม

SDCardFS ต้องใช้แพตช์เพิ่มเติมใน VFS เพื่อรองรับตัวเลือกการเปลี่ยนแปลงใน การต่อเชื่อมการเชื่อมโยง การแก้ไขเหล่านี้ทำให้ต้องทํางานเพิ่มเติมเพื่อยอมรับการเปลี่ยนแปลงจาก upstream ในพื้นที่เหล่านี้ คอมโพเนนต์ต้นทางสามารถจำลองฟีเจอร์ของ SDCardFS ได้ ซึ่งจะช่วยขจัดปัญหานี้

ความเท่าเทียมของฟีเจอร์กับ API

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