- 註冊時間
- 2014-1-9
- 最後登錄
- 2025-6-8
- 帖子
- 4425
- 閱讀權限
- 100
- 積分
- 16848
- 精華
- 3
- 機型
- 小米6
- 版本
- 8.8.30
 
|
本帖最後由 鸚鵡 於 2014-7-25 16:44 編輯
手機的儲存空間我想多數的人都會有疑問
明明說是 32G 版的 MI2S,為何真正可以用的儲存空間 只有25.38G?
前些日子也有 Samsung 的 S4 16GB,卻發現可用的空間只有一半多一點點的 8.49GB
這裡我們從檔案系統的磁碟分割開始說明
微軟 把磁碟機(包含硬碟、光碟、磁碟陣列、軟碟、MD 等等儲存媒體之相關設備)
統一使用 A-Z 共26個英文字母來作為系統中的對應稱號,這是為了方便使用者記憶對應的實體儲存媒體
A 和 B 在 Dos 時代多是保留給磁碟機使用
所以從 DOS時期 開始安裝 DOS系統 的磁碟機(通常就是硬碟) 都會對應成 C
這個慣例也沿用至今,但不是絕對
因為 A 和 B 一樣可以被拿來使用,並非只能對應給軟碟機
在 Windows 環境 我想多數人都很熟悉了
一顆硬碟可以格式化為1個"槽",也可以分割成多個"槽"
"槽":很久以來多數人一直沿用的慣用稱呼
正確的名稱是 磁碟分割區(Partition)
一顆硬碟是可以切割成很多分割區的 端看個人怎麼去規劃
主要分割區和邏輯分割區 我們就先不討論囉,有興趣可以自行上網 Google 一下
再來我們談 磁碟分割 的應用
在 Windows檔案系統 中,磁碟分割 只會對應一個 A-Z 之間代號
直到 Vista 開始才破除這樣的限制
例如:可以將磁碟分割對應到 C 下面的某一個指定資料夾
這樣可以有較解決 26個磁碟分割 佔滿了之後 剩餘的磁碟分割無法有效利用的窘境
Windows 以 A-Z 來對應 磁碟分割,進而產生:有 A-Z 這26個 "區塊" 做資料分類的 "邏輯概念"
而每個區塊都有自己的 "根目錄"
我想多數人都知道 Android平台 是以 Linux 為基礎的系統
所以現在我們來瞭解 Linux 對 磁碟分割 的應用
硬碟一樣可以切割成多個 磁碟分割
Linux 的檔案系統不像 Windows,你有幾個"槽" 就有幾個根目錄
而是只會有一個 根目錄 "/" (根目錄 = 檔案系統的根 = root,此 root 非系統權限上的 root)
/system
/data
/dev
這些一般我都稱呼為 路徑 而非資料夾(或目錄),但是本文中 我還是會以 資料夾 來說明
Linux 的檔案系統中 需要一個磁碟分割 來 掛載(mount) "/" (根)
然後妳可以在 / 建立許多 資料夾,並且像在 Windows 一樣進行操作
/ 磁碟分割1
這時候,我們可以在 / 建立一個 system 的資料夾,也就是 /system
並且將另一個 磁碟分割 mount(掛載到) /system 這個資料夾 (路徑),所以
/ 磁碟分割1
/system 磁碟分割2
再來,我們可以在 / 建立一個 data 的資料夾,也就是 /data
並且在用一個 磁碟分割 mount(掛載到) /data 這個資料夾 (路徑),所以
/ 磁碟分割1
/system 磁碟分割2
/data 磁碟分割3
MI2S 是雙系統 所以需要兩個空間來分別擺放不同的系統
那我們就在 / 下建立 system1 的資料夾,也就是 /system1
也用一個 磁碟分割 來 mount
/ 磁碟分割1
/system 磁碟分割2
/data 磁碟分割3
/system1 磁碟分割4
重點來了
我在 / 建立一個 backup 資料夾:/backup
但是不用 磁碟分割 來掛載,那麼示意一下
磁碟分割1 /
/backup
然後在 /backup 裡面再建立一個 2013-06-28 的資料夾
磁碟分割1 /
/backup
/backup/2013-06-28
這時候我把一個新的 磁碟分割5 掛載到 /backup 這個資料夾 (路徑)
因為 磁碟分割5 是新的,所以裡面沒有資料,所以檔案系統就變成
磁碟分割1 /
磁碟分割5 /backup
那 /backup 裡的 2013-06-28 呢? 跑去哪了???
實際上他還是存在的,只是因為 /backup 這個資料夾(路徑) 我們用了一個磁碟分割 mount 上去
所以 /backup 實際上已經由 磁碟分割5 來負責 (原本就懂得人請容許我用這樣的方式來表達,較易理解)
但是 磁碟分割5 是全新的,所以當然就看不到 2013-06-28 這個資料夾囉
好,那我們現在在 /backup 裡面建立一個 2013-06-28-A 的資料夾
磁碟分割1 /
磁碟分割5 /backup
/backup/2013-06-28-A
這時候將 磁碟分割5 作一個 umount (解除掛載) 的動作
您想到了嗎? 結果就是
磁碟分割1 /
/backup
/backup/2013-06-28
沒錯 2013-06-28-A 還存在 磁碟分割5 上 只是因為沒有被 mount 掛載所以消失了
同時原本在 磁碟分割1 兩面的 /backup/2013-06-28 又出現了
最後,我在 / 下建立 temp 的資料夾
磁碟分割1 /
/backup
/backup/2013-06-28
/temp
並且將 磁碟分割5 mount(掛載) 到這個 /temp 這個路徑
磁碟分割1 /
/backup
/backup/2013-06-28
磁碟分割5 /temp
/temp/2013-06-28-A
磁碟分割 1~5 結構就會變成
/ 磁碟分割1
/system 磁碟分割2
/data 磁碟分割3
/system1 磁碟分割4
/temp 磁碟分割5
完整的檔案系統示意:
磁碟分割1 /
/backup
/backup/2013-06-28
磁碟分割2 /system
磁碟分割3 /data
磁碟分割4 /system1
磁碟分割5 /temp
/temp/2013-06-28-A
好,檔案系統講完了
回到原本的問題 32GB 的 2S 為什麼只有25.38GB?
32GB 指的是 手機內建32GB 的儲存空間
但是系統一定也需要空間囉 所以扣掉系統必須使用或保留下來的空間後
剩下的才留給使用者使用
系統保留例如:
系統1 系統2 使用者資料(data) recovery模式 faseboot模式 cache 等等
MI2S 32GB 機型
內建一張 32GB 的記憶卡
這張記憶卡被切割分成 27 個 磁碟分割,清單如下
Number Start (sector) End (sector) Size Code Name
1 34 174113 170K 0700 modem
2 174114 348193 170K 0700 modem1
3 348194 349217 1024 0700 sbl1
4 349218 350241 1024 0700 sbl2
5 350242 352289 2048 0700 sbl3
6 352290 354337 2048 0700 rpm
7 354338 356385 2048 0700 tz
8 356386 357409 1024 0700 DDR
9 357410 365601 8192 0700 aboot
10 365602 367649 2048 0700 misc
11 367650 373489 5840 0700 logo
12 373490 375049 1560 0700 m9kefs1
13 375050 376609 1560 0700 m9kefs2
14 376610 376611 2 0700 m9kefsc
15 376612 393215 16604 0700 bk1
16 393216 394775 1560 0700 m9kefs3
17 394776 524287 126K 0700 bk2
18 524288 555007 30720 0700 boot
19 555008 585727 30720 0700 boot1
20 585728 616447 30720 0700 recovery
21 616448 638975 22528 0700 bk3
22 638976 655359 16384 0700 persist
23 655360 1703935 1024K 0700 system
24 1703936 2752511 1024K 0700 system1
25 2752512 3538943 768K 0700 cache
26 3538944 10878975 7168K 0700 userdata
27 10878976 61071326 47.8M 0700 storage
透過 adb 工具來進行操作
DOS視窗下進入 adb.exe 所在目錄,執行指令:
adb shell busybox fdisk -l /dev/block/mmcblk0
磁碟分割掛載結構,可以透過下面的指令
adb shell busybox mount
相關掛載的磁碟分割的 容量資訊 可以透過下面的指令查詢
adb shell busybox df -h
欄位說明
Filesystem 檔案系統,實體設備都會是 /dev 下的某一個路徑
Size 磁碟容量(空間)大小
Used 已經使用的容量
Available 剩餘的容量
Use% 使用比例
Mounted on 掛在到系統上的路徑
補充說明
在 Linux 裡,所有硬體設備 都會用 /dev 裡的路徑 來對應
/dev/block/mmcblk0 這個路徑對應的就是手機上的內建記憶卡
/dev/block/mmcblk0p27 這路徑對應的是 內建記憶卡上的第27個 磁碟分區
下面這個也是對應到 記憶卡上的第27個磁碟分區
/dev/block/platform/msm_sdcc.1/by-name/storage
這是系統將所有 磁碟分割 以設定的名稱為依據 建立的關聯對應路徑
有興趣的可以執行
adb shell ls -l /dev/block/platform/msm_sdcc.1/by-name
看一下結果就知道囉
/storage/sdcard0 這是 MI2S 中 內部儲存空間 掛載的實際路徑
/sdcard 這個路徑實際上是連結對應到 /storage/sdcard0
|
-
總評分: 經驗 + 23
貢獻 + 2
查看全部評分
|