請選擇 進入手機版 | 繼續訪問電腦版

米柚愛好者論壇

 找回密碼
 立即註冊
查看: 1302|回覆: 13

Android平台中 檔案系統 的說明 (MI2S可用只有25.38G的原因)

[複製鏈接]

195

主題

54

好友

1萬

積分

顧問團

Rank: 12Rank: 12

發表於 2014-1-13 01:55:17 |顯示全部樓層
其他
產品名稱: -
本帖最後由 鸚鵡 於 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


已有 7 人評分經驗 貢獻 收起 理由
JH_Chen + 2 讚! 獲益良多 ^_^
ace + 1 讚!
bland579 + 1 讚!
凱366 + 5 + 1 幹的好!
道奇兔 + 4 無法同意你更多~
harry.potertw + 5 + 1 讚!
愛米熊 + 5 讚!

總評分: 經驗 + 23  貢獻 + 2   查看全部評分

很多新手都會私訊問我問題。以後請統一在 問題求助 專區提問,在 @ 我 或是請其他人幫忙 @
一來我忙 時間不多,其他人會的話 會先協助您
二來是相關的討論內容,也可以給其他人當參考

11

主題

13

好友

1510

積分

資源組

Rank: 12Rank: 12

發表於 2014-1-13 06:33:27 |顯示全部樓層
有點概念了....感謝資訊分享...
已有 1 人評分經驗 收起 理由
鸚鵡 + 2 讚!

總評分: 經驗 + 2   查看全部評分

68

主題

30

好友

1萬

積分

資源組

啾靠北的~~~啾啾

Rank: 12Rank: 12

發表於 2014-1-13 11:18:52 |顯示全部樓層
真專業的表現....果然是高手在民間
柔弱生之徒,老氏誡剛強。

102

主題

36

好友

1萬

積分

顧問團

業餘啦低塞組

Rank: 12Rank: 12

真實姓名
ㄚ港伯
發表於 2014-2-11 17:04:51 |顯示全部樓層
我看完了,釐清很多觀念...但是還是需要多看幾遍好消化消化...
已有 1 人評分經驗 收起 理由
鸚鵡 + 2 讚!

總評分: 經驗 + 2   查看全部評分

102

主題

36

好友

1萬

積分

顧問團

業餘啦低塞組

Rank: 12Rank: 12

真實姓名
ㄚ港伯
發表於 2014-2-11 17:26:47 |顯示全部樓層
另外請教一個 @Mi2Sir 問過哈利的問題(好像他沒有得到解答吧!)...

我看紅米不同的 ROM 裡面的 updater-script 去 mount \system 的寫法有所不同...

mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/system");
大陸官方版的大都是這段、TWRP 作者那版也是

mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
台灣版的大都是用這段

這到底有何區別呢?

點評

鸚鵡  大陸官方版 我看也都是 p3 TD版的沒看 我都看 WCDMA 版的  發表於 2014-2-11 17:31

86

主題

23

好友

1萬

積分

碩班

歪樓特攻隊(沉默的艦隊)

Rank: 9

發表於 2014-2-11 17:27:07 |顯示全部樓層
收藏先
有空再來慢慢消化

195

主題

54

好友

1萬

積分

顧問團

Rank: 12Rank: 12

發表於 2014-2-11 17:28:31 |顯示全部樓層
bland579 發表於 2014-2-11 17:26
另外請教一個 @Mi2Sir 問過哈利的問題(好像他沒有得到解答吧!)...

我看紅米不同的 ROM 裡面的 updater-sc ...

這個我也有問哈利

我也沒搞懂
很多新手都會私訊問我問題。以後請統一在 問題求助 專區提問,在 @ 我 或是請其他人幫忙 @
一來我忙 時間不多,其他人會的話 會先協助您
二來是相關的討論內容,也可以給其他人當參考

102

主題

36

好友

1萬

積分

顧問團

業餘啦低塞組

Rank: 12Rank: 12

真實姓名
ㄚ港伯
發表於 2014-2-11 17:31:56 |顯示全部樓層
鸚鵡 發表於 2014-2-11 17:28
這個我也有問哈利

我也沒搞懂

所以是不是也要先知道紅米的磁碟分割,然後才能釐清?

102

主題

36

好友

1萬

積分

顧問團

業餘啦低塞組

Rank: 12Rank: 12

真實姓名
ㄚ港伯
發表於 2014-2-11 17:41:43 |顯示全部樓層
鸚鵡 發表於 2014-2-11 17:28
這個我也有問哈利

我也沒搞懂

剛剛稍微找了一下,有一個發現...

有做內存、SD互換的(vold.fstab)都是 p3 ...
沒做互換的都是 p5...

我想這應該是跟掛載那一個磁碟有關吧!

195

主題

54

好友

1萬

積分

顧問團

Rank: 12Rank: 12

發表於 2014-2-11 17:54:43 |顯示全部樓層
bland579 發表於 2014-2-11 17:41
剛剛稍微找了一下,有一個發現...

有做內存、SD互換的(vold.fstab)都是 p3 ...

你可以看一下 /

/emmc@android 指向 是 p5
/emmc@usrdata 指向 是 p7

p3 好像是 /emmc@protect_f 對應的
很多新手都會私訊問我問題。以後請統一在 問題求助 專區提問,在 @ 我 或是請其他人幫忙 @
一來我忙 時間不多,其他人會的話 會先協助您
二來是相關的討論內容,也可以給其他人當參考
您需要登錄後才可以回帖 登錄 | 立即註冊

手機版|米柚愛好者論壇

GMT+8, 2016-12-6 04:44 , Processed in 0.046196 second(s), 33 queries .

Powered by MIUI@EZBOX

© 2014-2016 EZBOX

回頂部