การเลิกใช้งาน 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 ไม่รองรับการตั้งค่าเหล่านี้ พื้นที่เก็บข้อมูลที่กำหนดขอบเขต