1. 硬盤類型 /dev/sda VS /dev/hda
/dev/sda
- ide (integrated drive electronics) 把盤體和控制器集成在一起
- sata (serial ATA(advanced technology attachment))
- scsi (small computer system interface)
- 光纖通道 fibre channel
其中hda、hdb分別代表第一個IDE、第二個IDE。假如你電腦上插有2個IDE硬盤,就會出現hda、hdb嗎?不一定,因為貌似IDE硬盤默認有兩個部分,Master和Slave,即主分區和擴展分區,而且a、b是根據IDE接口插槽順序來分的。這樣的話,第一IDE插槽主分區為hda,擴展分區為hdb,第二IDE插槽主分區為hdc,擴展分區為hdd。
但是SATA硬盤好像沒有擴展分區,而且Linux識別SATA等類型裝置的順序不是按插槽順序來的,是按照設備被偵測到的順序來定的,比如SATA的第1、5插槽分別插有硬盤,電腦上還插有一個USB,那么啟動Linux的時候,先后偵測到SATA的第1、5插槽的硬盤和USB設備,那么分配的名稱就分別是sda,sdb,sdc。
但貌似,Ubuntu自8.04起,所有硬盤都編號為“sdx”,即不管IDE還是SATA,一律認作SCIS硬盤。
2. 分區
計算機中存放信息的主要的存儲設備就是硬盤,但是硬盤不能直接使用,必須對硬盤進行分割,分割成的一塊一塊的硬盤區域就是磁盤分區。在傳統的磁盤管理中,將一個硬盤分為兩大類分區:主分區和擴展分區。主分區是能夠安裝操作系統,能夠進行計算機啟動的分區,這樣的分區可以直接格式化,然后安裝系統,直接存放文件。
在一個MBR分區表類型的硬盤中最多只能存在4個主分區。如果一個硬盤上需要超過4個以上的磁盤分塊的話,那么就需要使用擴展分區了。如果使用擴展分區,那么一個物理硬盤上最多只能3個主分區和1個擴展分區。擴展分區不能直接使用,它必須經過第二次分割成為一個一個的邏輯分區,然后才可以使用。一個擴展分區中的邏輯分區可以任意多個。
磁盤分區后,必須經過格式化才能夠正式使用,格式化后常見的磁盤格式有:FAT(FAT16)、FAT32、NTFS、ext2、ext3等。
那么sda1、sda2又分別代表什么呢?代表分區(Partition),比如
- P1:/dev/hda1
- P2:/dev/hda2
- L1:/dev/hda5
- L2:/dev/hda6
- L3:/dev/hda7
- L4:/dev/hda8
- L5:/dev/hda9
為什么沒有hda3、4呢?因為P1~4保存給了Primary和Extended分區。一個硬盤的結構如下:
MBR|主分區1|主分區2|主分區3|主分區4(擴展分區)|, 其中擴展分區可以分為: |邏輯分區1|邏輯分區2|……|邏輯分區n|
所以說上面的P1、2指明系統有兩個主分區,L1~5代表有5個邏輯分區。主分區(包括擴展分區)的總個數不能超過四個;也不能把擴展分區包圍在主分區之間。
參考: http://blog.csdn.net/zollty/article/details/7001950
fdisk 命令
root@dev:/home/s1# fdisk -l
Disk /dev/sda: 250.1 GB, 250059350016 bytes //這個硬盤有250.1 GB的容量
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors //255個磁頭;63個扇區每磁道,30401個磁柱
Units = sectors of 1 * 512 = 512 bytes //每個 cylinder(磁柱)的容量是512字節
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d7bf1
存儲容量=磁道(柱面)數×磁頭數×每道扇區數×每扇區字節數 = 30401 * 255 * 63 * 512 = 25396387380 bytes
Device Boot Start End Blocks Id System //Start (開始)/End (結束):表示的一個分區從X cylinder(磁柱)開始/結束
/dev/sda1 * 2048 484298751 242148352 83 Linux //引導(Boot):表示引導分區,在上面的例子中 hda1 是引導分區
/dev/sda2 484300798 488396799 2048001 5 Extended //Blocks:表示的意思的確是容量的意思,其單位是K
/dev/sda3 484298752 484300797 1023 83 Linux
/dev/sda5 484300800 488396799 2048000 82 Linux swap / Solaris //大小,2048000/1024=2G
奇怪:這里start和end的磁柱怎么遠遠超過30401?
這里有一個主分區sda1,一個擴展分區sda2,sda2包括兩個邏輯分區sda3和sda4.
硬盤總容量=主分區(包括擴展分區)總容量
- 主分區大小為 242148352 /1024 = 236473 M = 236 G
- 擴展分區大小為:2014001 / 1024 = 2000M = 2G
- 磁盤總容量大小為:236 + 2 = 238G
擴展分區容量=邏輯分區總容量
我們估算一個硬盤是否完全被划分,我們只要看 fdisk -l 輸出的內容中的 cylinders(柱體) 上一個分區的End 和 下一個分區的Start是不是一個連續的數字,另外要看一下每個硬盤設備的fdisk -l 的開頭部份,看一下他的 cylinders(柱體)的值。可見上圖中,擴展分區都分完了。
df -h 命令:
注: df 下沒有顯示swap分區
改變Linux分區大小
1. linux根分區容量是不允許改變的,一旦改變,掛載根分區就找不到磁盤首尾位置,導致啟動失敗
2.實在要改變,推薦用gparted-LiveCD進行調整
一、准備
1、下載最新版本的gparted鏡像文件:http://sourceforge.net/project/s ... p;package_id=173828
2、將gparted鏡像文件刻錄成光盤或壓制在U盤上制成LiveUSB
3、雖說是無損調整,但為了安全起見(萬一停電咋辦?),建議備份重要數據到移動硬盤上
4、在BIOS中,將啟動順序設置為首先光驅啟動(如果是用LiveUSB,應設為USB-HDD)
二、調整分區
1、將光盤放入光驅(如果是用LiveUSB,插上U盤),重啟電腦
2、進入gparted啟動界面,直接選Defalt settings
3、第二個界面繼續按回車7 y: O. l3 A" E/ P N0 L: j
4、接下來選語言,輸入“26”回車(就是簡體中文,盡管漢化不全)
5、接着提示將要進入X-Windows界面,回車
6、進入gparted,就會發現和瘟到死的PQ相似的界面,實際操作也是一樣的,而且也支持瘟到死分區的調整
7、點擊你要騰出空間的分區,彈出右鍵菜單選擇“Resize/Move”& Z)
8、用鼠標托動或數字精確調整要釋放的空間大小,若要釋放在分區頭部拉左側的控制條(輸入第一行數值),若要釋放在分區尾部拉右側的控制條(輸入第三行數值),調整好之后點“更改大小/移動”按鈕。
9、點擊欲擴大容量的分區,彈出右鍵菜單選擇“Resize/Move”
10、按照第8步的方法操作,只是現在變成擴大分區容量而已
11、點擊“Edit”菜單,選擇“Apply All Operations”3
12、再次確認要調整分區容量后,gparted開始調整分區,完成后點“Close”按鈕
13、點“gparted”菜單,選“Quit”關閉gparted窗口,再雙擊左上角的“Exit”按鈕退出gparted系統
14、在彈出的窗口中選“Reboot”重啟電腦,退出時系統會提示你取出光盤
三、可能存在的問題
可能會發生swap分區丟失的情況,可在終端中用“free -m”命令查看swap分區是否激活(是否顯示容量),如果未激活,可用“sudo mkswap /dev/sdaX”命令(X為swap分區的編號)進行激活,並將激活所得的UUID碼替換掉“/etc/fstab”文件(需要管理員權限)中原來 swap分區的UUID編碼,重啟后即可自動激活掛載
具體操作方法,請進Ubuntu官方論壇中查找,有教程帖8 z. \0 s8 }- M& c
警告:對swap分區的激活操作及對fstab文件的修改應謹慎,必需仔細核對修改的值
3. 掛載和掛載點
一個掛載點就是一個文件夾,將分區掛載到一個掛載點,掛載點就成了分區的入口。沒有掛載分區的掛載點將使用根目錄的空間,沒有掛載到掛載點的分區是無法訪問的,如上邊第四個邏輯分區。
例如,如果分區 /dev/hda5 被 掛載在 /usr 上,這意味着所有在 /usr 之下的文件和目錄在物理意義上位於 /dev/hda5 上。因此文件 /usr/share/doc/FAQ/txt/Linux-FAQ 被儲存在 /dev/hda5上,而文件 /etc/X11/gdm/Sessions/Gnome 卻不是。
繼續以上的例子,/usr 之下的一個或多個目錄還有可能是其它分區的掛載點。例如,某個分區(假設為,/dev/hda7)可以被掛載到 /usr/local 下,這意味着 /usr/local/man/whatis 將位於 /dev/hda7 上而不是 /dev/hda5 上。
linux系統中每個分區都是一個文件系統,都有自己的目錄層次結構。linux會將這些分屬不同分區的、單獨的文件系統按一定的方式形成一個系統的總的目錄層次結構。將一個文件系統的頂層目錄掛到另一個文件系統的子目錄上,使它們成為一個整體,稱為掛載。把該子目錄稱為掛載點。
注意:1、掛載點必須是一個目錄。
2、一個分區掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內容將不可用。對於其他操作系統建立的文件系統的掛載也是這樣。但是需要理解的是:光盤、軟盤、其他操作系統使用的文件系統的格式與linux使用的文件系統格式是不一樣的。光盤是ISO9660;軟盤是fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和windowsXP是fat16、fat32、NTFS。
掛載前要了解linux是否支持所要掛載的文件系統格式。
掛載時使用mount命令:
格式:mount [-參數] [設備名稱] [掛載點]
其中常用的參數有
-t<文件系統類型> 指定設備的文件系統類型,常見的有:
minix linux最早使用的文件系統
ext2 linux目前常用的文件系統
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 網絡文件系統
iso9660 CD-ROM光盤標准文件系統
ntfs windows NT 2000的文件系統
hpfs OS/2文件系統
auto 自動檢測文件系統
-o<選項> 指定掛載文件系統時的選項。有些也可用在/etc/fstab中。常用的有
codepage=XXX 代碼頁
iocharset=XXX 字符集
ro 以只讀方式掛載
rw 以讀寫方式掛載
nouser 使一般用戶無法掛載
user 可以讓一般用戶掛載設備
提醒一下,mount命令沒有建立掛載點的功能,因此你應該確保執行mount命令時,掛載點已經存在。(不懂?說白了點就是你要把文件系統掛載到哪,首先要先建上個目錄。這樣OK?)
例子:windows98裝在hda1分區,同時計算機上還有軟盤和光盤需要掛載。
# mk /mnt/winc
# mk /mnt/floppy
# mk /mnt/cdrom
# mount -t vfat /dev/hda1 /mnt/winc
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom
現在就可以進入/mnt/winc等目錄讀寫這些文件系統了。
自動掛載:
在/etc/fstab文件里,第一列是掛載的文件系統的設備名,第二列是掛載點,第三列是掛載的文件系統類型,第四列是掛載的選項。添加新行實現自動掛載:
/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0
4. LVM幾個基本概念
操作: