linux磁盘管理与分区 转载
原文:http://zhengjianglong.leanote.com/post/linux%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA
一、基礎知識
一塊磁盤可以分為多個分區(partition),如window的C、D、E盤一樣。linu系統是安裝在磁盤上,在linux中設備都是以文件類型存在。
1.1 磁盤接口
個人計算機常見的磁盤接口有兩種,分別是IDE和SATA:
- IDE
使用的排線較寬,每條線上可以接兩個IDE設備(Master/Slave),磁盤驅動器上提供調整跳針來指定master或slave.一般助理都會提供兩個IDE接口,因此最多可以接到4個IDE設備。傳輸133MB每秒。這四個IDE設備文件名如下:
| IDE1(Primary) | /dev/hda | /dev/hdb |
| IDE2(Secondary) | /dev/hdc | /dev/hdd |
- SATA
插槽比IDE小,排線較細有利于主機內部散熱和安裝。傳輸速度300MB每秒。目前大部分機器都采用了SATA。
1.2 磁盤組成
磁盤由盤片、機械手臂、磁頭和主馬達組成。而對于每個盤片又可以細分出扇區(Sector)、柱面(Cylinder)兩個單位。
盤面
硬盤一般會有一個或多個盤片,每個盤片可以有兩個面(Side),即第1個盤片的正面稱為0面,反面稱為1面;第2個盤片的正面稱為2面,反面稱為3面…依次類推。每個盤面對應一個磁頭(head)用于讀寫數據。第一個盤面的正面的磁頭稱為0磁頭,背面稱為1磁頭;第二個盤片正面的磁頭稱為2磁頭,背面稱為3磁頭,以此類推。盤面數和磁頭數是相等的。關機時磁頭停留在盤片啟停區,開機時磁頭“飛行”在磁盤片上方。為了避免磁盤和磁頭損壞,建議不要強制關機。
磁道
每個盤片的每個盤面被劃分成多個狹窄的同心圓環,數據就是存儲在這樣的同心圓環上,我們將這樣的圓環稱為磁道(Track),每個盤面可以劃分多個磁道。關機時磁頭停留在硬盤的著陸區(Landing Zone),這個著陸區以前是位于離盤心最近的區域,不存放任何數據。
在每個盤面的最外圈,離盤心最遠的地方是“0”磁道,向盤心方向依次增長為1磁道,2磁道,等等。硬盤數據的存放就是從最外圈開始
扇區
每個磁道劃分成若干弧段,每段稱為一個扇區(Sector)。扇區是硬盤上存儲的物理單位,每扇區大小是512字節,大小不可改變。
柱面
柱面其實是我們抽象出來的一個邏輯概念,不同面上相同磁道編號則組成了一個圓柱面,即所稱的柱面(Cylinder)。這里要注意,硬盤數據的讀寫是按柱面進行,即磁頭讀寫數據時首先在同一柱面內從0磁頭開始進行操作,依次向下在同一柱面的不同盤面(即磁頭上)進行操作,只有在同一柱面所有的磁頭全部讀寫完畢后磁頭才轉移到下一柱面,因為選取磁頭只需通過電子切換即可,而選取柱面則必須通過機械切換。電子切換比從在機械上磁頭向鄰近磁道移動快得多。因此,數據的讀寫按柱面進行,而不按盤面進行。讀寫數據都是按照這種方式進行,盡可能提高了硬盤讀寫效率。
簇
將物理相鄰的若干個扇區稱為了一個簇。
容量計算公式:
硬盤容量=盤面數×柱面數×扇區數×512字節
1.3 硬盤讀寫數據的過程
現代硬盤尋道都是采用CHS(Cylinder Head Sector)的方式,硬盤讀取數據時,讀寫磁頭沿徑向移動,移到要讀取的扇區所在磁道的上方,這段時間稱為尋道時間(seek time)。因讀寫磁頭的起始位置與目標位置之間的距離不同,尋道時間也不同。目前硬盤一般為2到30毫秒,平均約為9毫秒。磁頭到達指定磁道后,然后通過盤片的旋轉,使得要讀取的扇區轉到讀寫磁頭的下方,這段時間稱為旋轉延遲時間(rotational latencytime)。
1.4 磁盤分區表
磁盤上的第一個扇區特別主要,它記錄兩個重要的信息:
1. 主引導分區(Master Boot Record,MBR)。可以安裝引導加載程序的地方,有446bytes。MBR是系統開機的時候會主動去讀取這個區塊的內容,這樣系統才會知道你的程序放在哪里且該如何開機。
2. 分區表(partition table):記錄整塊硬盤分區的狀態,有64bytes。
第一扇區結構如下:
分區表
分區表只有64bytes,最多能容納4個分區記錄,這四個分區被稱為主(Primary)和擴展(Extended)分區。分區的最小單位是柱面,也是文件系統的最小單位。分區表記錄了每個分區起始和結束的柱面號碼。為什么要進行磁盤分區呢?有以下好處:
1. 數據的安全性。對某個分區數據重整時不影響其他分區。
2. 系統性能。數據一般存放在同一個分區中,使得數據分布更加集中,有助于數據讀取的速度和性能。
雖然分區表只能分配4個分區,但可以利用擴展分區使額外的扇區來記錄分區信息,擴展分區本身不能被格式化。從擴展分區切出來的分區叫做邏輯分區。如圖:
上述分區在linux系統中文件名分別為:
- P1:/dev/hda1 (主分區)
- P2:/dev/hda2 (擴展分區)
- L1:/dev/hda5
- L2:/dev/hda6
- L3:/dev/hda7
- L4:/dev/hda8
- L5:/dev/hda9
邏輯分區從5開始,前面的4個號碼都是保留給主分區和擴展分區用。分區還具有以下特性:
- 主分區和擴展分區最多只有四個(硬盤限制)
- 擴展分區最多只有一個(操作系統限制)
- 邏輯分區是有擴展分區持續切割出來的分區
- 能夠被格式化后作為數據訪問的分區為主分區和邏輯分區,擴展分區無法格式化
- linux系統中,IDE硬盤最多有59個邏輯分區(5~63),SATA硬盤則有11個邏輯分區(5~15)
1.5 固態硬盤和機械硬盤
二、安裝時分區
2.1 掛載
掛載是利用一個目錄當成進入點,將磁盤分區的數據放置在該目錄下,也就是說進入該目錄就可以讀取該分區的意思。這個進入點的目錄就稱為”掛載點”
例如 partion1 掛載在根目錄上,partion2掛載在/home,意味著/home下數據都存放在partion2上,其他數據都放在partion1上。
3.1 分區規劃
最簡單的分區方法就是僅分出根目錄和內存交換空間(/ & swap)即可。但是這樣的分區不保險,如果任何一個細節壞掉(例如壞軌的產生),你的根目錄將可能整個損毀。
分多個區有以下幾個目的:
- 避免磁盤一些細節壞掉,使得整個目錄損毀
- 在不損失數據的情況下重裝系統,比如獨立設置/home掛載點,重裝系統的時候直接標記回/home,數據不會有任何損失。
- 針對不同掛載點的特性分配合適的文件系統以合理發揮性能,比如對/var使用reiserfs,對/home使用xfs,對/使用ext4。
- 針對不同的掛載點開啟不同的掛載選項,如是否需要即時同步,是否開啟日志,是否啟用壓縮。
- 大硬盤搜索范圍大,效率低
- 磁盤配額只能對分區做設定
- /home、/var、/usr/local 經常是單獨分區,因為經常會操作,容易產生碎片
建議掛載的幾大目錄:
| / | 根目錄,唯一必須掛載的目錄。 | 10~15G |
| swap | 交換分區,可能不是必須的。 | 一般為內存2倍,最大指定2G即可 |
| /home | 用戶目錄,存放用戶文件,是讀寫很頻繁的一個目錄。最好分配一個分區 | 最大的剩余空間 |
| /usr | 應用程序目錄。大部分的軟件都安裝在這里,如果您計劃安裝許多軟件,建議也給它分配一個分區 | 最大的剩余空間的一半 |
| /var | 包含系統運行時要改變的數據。通常這些數據所在的目錄的大小是要經常變化的,系統日志記錄也在/var/log下。一般多用戶系統或者網絡服務器要建立這個分區,設立這個分區,對系統日志的維護很有幫助。 | 一般設置2-3G大小 |
| /boot | 包含了操作系統的內核和在啟動系統過程中所要用到的文件。 | 100M左右 |
| /tmp | 臨時文件,方便加載ISO鏡像文件使用,對于多用戶系統或者網絡服務器來也有獨立掛載的必要。臨時文件目錄,也是最常出現問題的目錄之一。 | 一般設置1-5G |
三、安裝后新增硬盤
系統安裝完成之后,有時候因為硬盤容量不夠等原因會新增一些新的硬盤。那么添加新的硬盤之后應該做些什么?
1. 對磁盤進行分區,以新建可用的分區
2. 對該分區進行格式化,以創建系統可用的文件系統
3. 可對剛新建的文件系統進行檢驗
4. 創建掛載點,掛載新硬盤
1. 查看當前磁盤使用情況
首先查看當前硬盤使用情況,看看哪些地方需要增加存儲容量。
雖然此刻各目錄還有足夠的空間,但考慮/home和/usr 后續還有一些新增數據。因此確定新增硬盤用于掛載到/home和/usr上。
2. 查看新增硬盤設備
命令的作用是列出當前系統中所有硬盤設備及其分區的信息(fdisk只有root才能執行)。新的硬盤設備還未進行初始化,沒有包含有效的分區信息。/dev/sda1、/dev/sda2、/dev/sda3是已經存在的硬盤。/dev/sdb 是新增的硬盤。
Device:分區的設備文件名稱。
Boot:是否是引導分區,是,則有“*”標識。
Start:該分區在硬盤中的起始位置(柱面數)。
End:該分區在硬盤中的結束位置(柱面數)。
Blocks:分區的大小,以Blocks(塊)為單位,默認的塊大小為1024字節。
Id:分區類型的ID標記號,對于ext3分區為83,LVM分區為8e。
System:分區類型。
3. 分區
fdisk交互命令:
| a | 設置可引導標記 |
| b | 編輯bsd磁盤標簽 |
| c | 設置Dos操作系統兼容標記 |
| d | 刪除一個分區 |
| l | 顯示已知的文件系統類型,82為Linux swap分區,83為Linux分區 |
| m | 顯示幫助菜單 |
| n | 新建分區 |
| o | 建立空白的DOS分區表 |
| p | 列出當前磁盤的分區表信息 |
| q | 不保存退出 |
| s | 新建空白SUN磁盤標簽 |
| t | 改變一個分區的系統ID |
| u | 改變顯示記錄單位 |
| v | 驗證分區表 |
| w | 保存退出 |
| x | 附加功能 |
根據以上命令,我們可以通過以下指令進行分區。
新增分區過程:
1. fdisk /dev/sdb # /dev/sdb是新增的硬盤
2. n: 創建分區,這時候會讓你選擇一個分區數字,比如1
3. w或q: w是保存退出,這個需要謹慎使用,后果自負。q是不保存退出,練習時可以用。
設置分配好的分區,輸入w保存退出。如果這時提示要重啟才能生效,因為分區表被占用無法重新取得分區表信息。如果此刻不想重啟又想讓其生效,可以使用下面命令:
注:root在進行磁盤分區的時候,最好是在單用戶維護模式下比較安全。
fdisk沒有辦法處理大于2TB以上的磁盤分區
4. 進行格式化(創建文件系統)
1)查看/home的文件格式
2)格式化分區
如果需要在創建文件系統的時候指定系統的卷標(label)、block的大小以及inode的數量,那么需要使用mkfs2命令
。
-b: 可以設置每個block大小。目前支持1024,2048,4096
-i: 多少容量給予一個inode
-c:磁盤錯誤檢查,下達一個-c進行快速讀取測試。下達兩次-c -c,會測試讀寫。
-L: 卷標名稱
-j: 成為EXT3,不加為EXT2
5. 檢查
- fsck用來檢查和修正文件系統錯誤的命令。通常情況下只有root且文件系統有問題時才使用,否則正常情況下使用此命令,可能會造成對系統的傷害。
- badblocks用來檢查硬盤或軟盤扇區有沒有壞軌的命令
6. 掛載
掛載前需要注意一下事情:
- 單一文件系統不應該被重復掛載在不同的掛載點
- 單一目錄不應該重復掛載多個文件系統
- 作為掛載點的目錄,理論上都應該是空目錄才是。如果掛載的目錄不為空,那么掛載了文件系統之后,原目錄下的東西就會暫時消失(被隱藏,而不是被覆蓋)。
如果直接將新的分區,如 “/dev/sdb1”掛載到某個目錄下,如 “/home”下,則會導致 “/home” 目錄以前的全部文件被覆蓋,但并未消失。且不會將此前的目錄容量加上,這會導致嚴重的問題。
- 所以我們需要先將 “/dev/sdb1” 掛載到 “/mnt” 下;
- 再將 “/home/*” 所有東西復制到 “/mnt/”;
- 接著刪除 “/home/*” 全部文件;若因為與此目錄有關的程序運行占用目錄導致無法刪除 “/home”,則利用 lsof 命令找到這些程序的 PID,然后 “kill -9 PID” 后在刪除 “/home” 。lsof 命令 列出被進程所打開的文件的信息
- 之后再解掛載 “/mnt”;
- 最后再將 “/dev/sdb1” 掛載到 “/home”;
- 將此寫進 /etc/fstab 配置文件中,讓它開啟自讀取
將此寫進 /etc/fstab 配置文件中,讓它開啟自讀取
第一字段:設備名或設備卷標名。
第二字段:文件系統的掛載點目錄的位置。
第三字段:文件系統類型,如ext3、swap等。
第四字段:掛載參數,即mount命令“-o”選項后可使用的參數,如defaults、rw等。
第五字段:表示文件系統是否需要dump備份,一般設為1時表示需要,設為0時將被dump所忽略。
第六字段:該數字用于決定在系統啟動時進行磁盤檢查的順序,0表示不進行檢查,1表示優先檢查,2表示其次檢查。對于根分區應設為1,其他分區設為2.
系統文件/etc/fstab是系統自動掛載文件,所以不能寫錯,一旦寫錯可能導致系統直接崩潰。所以我們在保存/etc/fstab文件之后,我們必須使用命令mount -a自動實現掛載
四、交換區的構建
如果在安裝系統的時候沒有分配swap,為了應付物理內存不足的情況下造成的內存擴展記錄,可以構建swap在硬盤上暫時存放內存中的信息。構建步驟:
1. 分區:利用fdisk分出一個分區作為swap.
2. 格式化:利用“mkswap 設備文件名”格式化一個swap。
3. 使用:將該swap啟動,“swapon 設備文件名”
4. 查看:通過free查看內存狀態。
五、磁盤管理相關命令
- df 命令可以獲取硬盤被占用了多少空間,目前還剩下多少空間等信息,它也可以顯示所有文件系統對i節點和磁盤塊的使用情況;
- du的英文原義為“disk usage”,含義為顯示磁盤空間的使用情況,統計目錄(或文件)所占磁盤空間的大小;
- fdisk 命令用于磁盤分區;上一節已經講過
- mkfs 格式化并創建文件系統。
- fsck、badblocks磁盤檢驗
- unmount 卸載
-f: 強制卸載
-n: 不更新 /etc/mtab的情況下卸載。filesystem的掛載是記錄到/etc/mtab與/proc/mounts這兩個檔案中的。每次我們在更動filesystem的掛載時,也會同時更動這兩個檔案。參考[/etc/mtab和/proc/mounts的區別]
- e2label:修改設備label。e2label 設備名稱 新的label名稱
- du
查看當前文件大小,du -h –max-depth=1
參考
[1] Linux 磁盤分區
[2] 硬盤的存儲原理和內部架構
[3] Linux 安裝分區設置 分區大小 功能
[4] Linux系統安裝時分區的選擇
[5] 安裝Linux前的規劃
[6] 玩轉 Linux 之:磁盤分區、掛載知多少?
[7] 給Linux新增硬盤之后
[8] 《鳥哥私房菜》磁盤的分區、格式化、檢驗與掛載
轉載于:https://www.cnblogs.com/migrantworkers/p/9162642.html
總結
以上是生活随笔為你收集整理的linux磁盘管理与分区 转载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】单元测试框架unites
- 下一篇: Linux centosVMware N