硬碟分割的觀念
一、 傳統 MBR 分割表
現在的硬碟那麼大, 卻讓 windows 一個作業系統佔據, 蠻可惜的。 學會分割 (partition) 硬碟, 可以在一顆硬碟上安裝 windows, 許多版本的 linux, *BSD, ... 等等多個作業系統, 一個出問題時, 可以拿其他系統救急。 也可以將作業系統和資料分開, 系統出問題時比較容易分開處理。
(右圖中, 藍底黃字的部分跟開機流程有關, 與本文無關, 可忽略) 一顆硬碟可以切成四個 主分割區 primary partitions, 代號分別為 1、2、3、4。 如果這還不夠用, 可以將其中一個 primary partition 改成 延伸分割區 extended partition, 再將它切成十來個 邏輯分割區 logical partitions。 當然, extended partition 只是一個空殼子; 真正拿來放作業系統或資料的, 不是 primary partition 就是 logical partition。 一顆硬碟上不論有幾個 primary partitions, 它的 logical partitions 的代號一律從 5,6,7, ... 開始數起。 如果 partition 6 被刪除, 則它後面所有的 partition 代號都會向前遞移。
另外, 每顆硬碟上各有一塊最特別、 最重要的區域稱為 Master Boot Record, 如果 BIOS 把開機主控權交給這一顆硬碟, 那必然是 MBR 最先取得控制權。 它是一段極短(446 bytes)的程式碼, 會再把控制權交給某一個 boot loader, 例如 grub/syslinux/LILO 之類的。 這個 boot loader 會印出一個清單 (也許包含背景圖片), 並且讓使用者用上下箭頭按鍵選擇要進入哪一個作業系統, 甚至可能允許使用者 (通常是按 Tab 鍵) 編輯開機命令列。 開機隨身碟無法直接用檔案總管拷貝, 就是因為檔案總管無法處理這一段流程。
另一方面, 有時候作業系統沒有壞, 卻無法開機 (例如先裝完 linux 之後才安裝 windows, 則 windows 會把 boot loader 蓋掉, 佔著茅坑不拉屎) 可能只是 MBR 裡面的 boot loader 被毀了而已, 也許並不需要重灌作業系統, 只需要重灌 boot loader 就好。
更多關於分割的詳細知識, 請見 spfdisk 計劃的 FAQ, 或是 Linux Partition HOWTO。
例: 下完 fdisk -l /dev/sda
指令之後, 看到以下。 請畫出 /dev/sda
這顆硬碟的分割圖。
Device Boot Start End Blocks Id System /dev/sda1 2048 8390655 4194304 83 Linux /dev/sda2 8390656 29362175 10485760 83 Linux /dev/sda3 29362176 50333695 10485760 83 Linux /dev/sda4 50333696 976773167 463219736 5 Extended /dev/sda5 50335744 934830129 442247193 83 Linux /dev/sda6 934834176 955801648 10483736+ 83 Linux /dev/sda7 955805696 976773167 10483736 83 Linux
看完理論, 開始動手吧。 在 Linux 底下, 一般的 SATA
裝置通常會呈現為 /dev/hda /dev/hdb ...
等等 device file 裝置名稱。 例如 cd /dev; ls
hd*
若出現 hda hda1 hda2 hda5 hda6 hdb hdc hdc1
那麼可能您有一顆硬碟, 切成一個 primary
partition, 一個 extended partition, 其中 extended partition 又切成兩個
logical partitions, 另外有一部不知道是光碟機還是讀卡機 (hdb),
還有一顆隨身碟, 全部就只有一個分割 (hdc1)。
拔出或插入隨身碟之前之後, 下 ls /dev/sd*
指令,
可以查出你的 linux 如何稱呼這顆隨身碟。
(也就是查出它的裝置名稱)。
切割硬碟的工具有很多; 建議學最陽春的, 所有版本 Linux 都提供的工具, 這樣在任何環境下都活得下去。 注意: 一旦用 fdisk 或 cfdisk 切割你的硬碟或隨身碟, 上面所有的資料就全部燒毀! (其實在 「寫入」 之前都還有機會反悔啦。) 使用前請先確認那顆硬碟或隨身碟上所有程式/影片/圖片/資料都不重要。 我自己習慣用命令列模式的 fdisk, 詳見以下教學文:
新手可以用文字選單模式的 cfdisk。 cfdisk 的操作很簡單:
上下鍵選取一個分割; 左右鍵決定要對它做什麼動作; 按
Enter 執行。 如果後悔, 隨時可以按 q 離開, 不會儲存修改。
但進入 cfdisk 之前, 要記得先把該碟的所有分割卸載下來:
umount /dev/sdz*
有時候 cfdisk 無法開啟的硬碟或
usb 碟 (主要是因為 partition table 亂掉了)
就要靠 fdisk 來處理。 或者可以乾脆將 partition
table 清空: dd count=1 < /dev/zero > /dev/sdz
再重新進入 cfdisk。 製作分割時, 要記得替每個分割指定一個十六進位代號,
介於 0-FF 之間。 常用的代號有 C (Win95 FAT32 LBA), 83 (Linux),
82 (Linux swap) 等等。 一切動作完成之後, 要記得儲存。
請參考: 1, 2,
3, 4
等等文章。
分割完成之後, 必須將這些新的分割 格式化 format, 建立新的 檔案系統 (file system), 這樣作業系統 (Linux 或 Windows 等等) 才能使用。 較常用的指令:
mkfs -t ext4 /dev/sdz99 # 建立 ext4 給 linux 用 mkfs -t vfat /dev/sdz97 # 建立 vfat 給 windows 用
在某些版本的 linux (例如 slackware 所衍生的版本) 上,
建立 vfat 的指令是 mkdosfs /dev/sdz97
現在多數版本的 linux 會自動偵測隨身碟/光碟, 只要插入,
即可從檔案總管當中看到上面的檔案。 但有些版本
(例如我所製作的開機光碟/隨身碟) 不會。
這時要手動掛載, 類似這樣: mount /dev/sdz1 /mnt/t1
其中 sdz1 要改成你的裝置名稱; 而 /mnt/t1 則是預先建好的任意空目錄,
稱為 掛載點 mount point -- 你希望從哪個目錄
(資料夾) 看見這顆隨身碟/這張光碟的內容?
用完之後記得卸下來: umount /dev/sdz1
或
umount /mnt/t1
下這些指令之前之後, 可以下 df
及
mount
注意前後有什麼變化, 會更瞭解這些指令的效果。
二、 GPT 分割表
MBR 分割表只適用於 2TB 以下的硬碟。 超過這個容量的話, 就必須採用較新的分割方式, 稱為 GUID Partition Table (GPT)。 採用這種方式切割的硬碟, 最多可以切成 128 個分割區。 詳見 T 客邦文章。
三、 LVM
LVM 新手必備指令集- 本頁最新版網址: https://frdm.cyut.edu.tw/~ckhung/b/sa/partition.php; 您所看到的版本: July 12 2020 12:22:28.
- 作者: 朝陽科技大學 資訊管理系 洪朝貴
- 寶貝你我的地球, 請 減少列印, 多用背面, 丟棄時做垃圾分類。
- 本文件以 Creative Commons Attribution-ShareAlike License 或以 Free Document License 方式公開授權大眾自由複製/修改/散佈。