# Linux 筆記 | 基礎篇 #002 : 磁盤分區與掛載 在 Linux 系統中所謂的「磁盤分區」,意思是將物理設備的磁盤空間,劃分成多個抽象的邏輯區域,每個邏輯區域都可單獨格式化成特定的文件系統、作為不同的掛載點(後面說明何謂「掛載」),而磁盤分區的主要好處有下面幾個: 1. **提高系統穩定性**:一個分區的問題,不會影響到其他分區,也可避免一個分區的資料滿了影響整個系統。 2. **提高性能**:通過合理的磁盤分區,可以優化磁盤讀寫的效率,不同分區可選擇不同的文件系統或掛載選項,以針對不同類型的數據做優化。 3. **便於備份及管理**: 可針對不同分區採取不同數據備份、數據恢復的策略。 4. **提高安全性** : 可針對不同分區設置不同的文件權限和掛載選項,限制某些區域的訪問或執行權限。 ## 掛載 (Mount) 可以把「掛載」理解成類似於「映射」的概念,就是將一個物理設備的磁盤地址對應到系統抽象地址的動作,之後要訪問某個物理的磁盤分區,只要通過系統的「掛載點」也就是抽象地址就可達成了,例如下方的掛載指令: ``` mount /dev/sda1 /mnt/data ``` 這段指令的意思就是將 /dev/sda1 這一物理地址掛載到 /mnt/data 系統地址,從而讓用戶透過 /mnt/data 這個目錄訪問到磁盤分區上的資料。 ### 掛載選項 (Mount Options) 掛載選項是用來指定「如何掛載」的參數,這些選項參數可以控制設備的訪問方式、性能、權限等方面的行為,在掛載時由 mount 指令的 -o 參數來設置,舉例: - 將設備的磁盤分區掛載為只讀,用戶只能讀取不能異動 ``` mount -o ro /dev/sda1 /mnt/data ``` - 掛載為讀寫 ``` mount -o rw /dev/sda1 /mnt/data ``` - 掛載為只讀,並且禁止執行任何程式 ``` mount -o ro,noexec /dev/sda1 /mnt/data ``` ## Linux 系統中的常見分區 1. **/ (根目錄)** - 整個文件系統的起始點,所有其他目錄都是由這裡衍生出來的。 - 系統的核心部分,包含了所有系統文件和目錄結構,如 /bin、/etc、/lib 等,這些都是系統運行所需的基本檔案。。 - 所有的硬碟分區、設備文件都會在根目錄下建立目錄或文件。 2. **/boot (啟動分區)** - /boot 分區存放系統啟動過程中所需的檔案,如 Linux 內核、啟動加載器、初始化腳本等。 - 此分區是啟動過程的關鍵,系統會透過 /boot 來加載內核來啟動。 - 如 Linux 內核檔案 (vmlinuz)、引導加載程序 (如 grub) 的配置文件、initrd 跟 initramfs (幫助啟動時加載必要的驅動程式)。 3. **/root (根用戶目錄)** - 超級用戶的家目錄。 - 存放有關 root 用戶的個人配置文件和數據。 - 不應該放一般用戶的資料,是放重要系統文件的地方。 4. **/home (用戶目錄)** - 除了 root 用戶以外的普通用戶存放個人文件、配置、數據的地方。 - 每個用戶在家目錄下都有一個自己的子目錄,如 /home/user1 - 通常該分區的容量最大,類似於 MacOS 的 /Users/louisyang。 5. **/swap (交換空間)** - 虛擬記憶體空間,用於記憶體與磁盤數據交換,當作擴展的記憶體來使用。 - 當物理記憶體不夠用時,系統會將不活躍的頁面從記憶體交換到這個分區。 - 但磁盤讀寫效能遠低記憶體,所以過度交換會影響性能。 6. **/tmp (臨時目錄)** - 用於存放應用程序在運行時產生的臨時檔案。 - 如會話、臨時性緩存等等,重啟時會自動清空,系統也需要定期清理。 7. **/var (變動數據)** - 存放經常會變化的數據跟檔案。 - 如日誌、待處理的隊列或應用程式的緩存等。 - ex: /var/log、/var/cache。 8. **/srv (服務數據)** - 存放系統提供的服務相關數據。 - 如 Web 服務器的網站文件。 - FTP 服務器的共享文件。