พื้นที่เก็บข้อมูลแบบ Adoptable

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

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

เมื่อผู้ใช้เสียบสื่อเก็บข้อมูลใหม่ (เช่น การ์ด SD) ไว้ในตำแหน่งที่รองรับ Android จะถามว่าผู้ใช้ต้องการใช้สื่อนั้นอย่างไร โดยลูกค้าสามารถเลือกที่จะใช้สื่อ ซึ่งจะจัดรูปแบบและเข้ารหัสสื่อ หรือจะใช้สื่อต่อแบบเดิมเพื่อจัดเก็บไฟล์อย่างง่ายก็ได้ หากเลือกใช้ แพลตฟอร์มจะเสนอให้ย้ายข้อมูลเนื้อหาในพื้นที่เก็บข้อมูลที่ใช้ร่วมกันหลัก (โดยทั่วไปจะติดตั้งที่ /sdcard) ไปยังสื่อที่นำมาใช้ในแบบใหม่ ซึ่งจะช่วยประหยัดพื้นที่อันมีค่าในที่จัดเก็บข้อมูลภายใน ซึ่งแตกต่างจากพื้นที่เก็บข้อมูลแบบดั้งเดิมที่จำกัดไว้ที่ 2 TB เนื่องจากใช้ MBR แต่พื้นที่เก็บข้อมูลที่นำมาใช้ได้จะใช้ GPT จึงมีขีดจำกัดพื้นที่เก็บข้อมูลไฟล์ที่ประมาณ 9ZB

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

ความปลอดภัย

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

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

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

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

หากอุปกรณ์ใช้ FBE โปรดดูเอกสารประกอบเกี่ยวกับ FBE และเอกสารประกอบเกี่ยวกับการเข้ารหัสข้อมูลเมตาเพื่อดูวิธีกำหนดค่า FBE และการเข้ารหัสข้อมูลเมตาใน Adoptable Storage

ประสิทธิภาพและความเสถียร

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

เมื่อผู้ใช้ใช้อุปกรณ์เก็บข้อมูลใหม่ แพลตฟอร์มจะทำการทดสอบประสิทธิภาพและเปรียบเทียบกับพื้นที่เก็บข้อมูลภายใน หากอุปกรณ์ที่ใช้ทำงานช้ากว่าพื้นที่เก็บข้อมูลภายในอย่างมาก แพลตฟอร์มจะเตือนผู้ใช้เกี่ยวกับประสบการณ์การใช้งานที่อาจลดลง การเปรียบเทียบนี้มาจากลักษณะการทํางานจริงของ I/O ในแอป Android ที่ได้รับความนิยม ปัจจุบัน การใช้งาน AOSP จะเตือนผู้ใช้เมื่อเกินเกณฑ์เดียวเท่านั้น แต่ผู้ผลิตอุปกรณ์อาจปรับเปลี่ยนการดำเนินการนี้เพิ่มเติม เช่น ปฏิเสธการใช้งานโดยสิ้นเชิงหากการ์ดทำงานช้ามาก

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

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

การทดสอบ

หากต้องการทดสอบว่าพื้นที่เก็บข้อมูลแบบ Adoptable ใช้งานได้ ให้ทำการทดสอบ CTS นี้

cts-tradefed run commandAndExit cts-dev \
    -m CtsAppSecurityHostTestCases \
    -t android.appsecurity.cts.AdoptableHostTest

หากต้องการยืนยันลักษณะการทำงานของไดรฟ์ USB และการ์ด SD เมื่ออุปกรณ์ไม่มีช่องเสียบในตัวหรือเมื่อใช้ขั้วต่อ USB สำหรับการเชื่อมต่อ adb ที่ใช้งานอยู่ ให้ใช้คำสั่งต่อไปนี้

adb shell sm set-virtual-disk true