Linux有著管理各種存儲設備的強大能力。Linux把所有磁盤都當作文件管理,從而簡化我們對其進行的讀寫等操作。
IDE接口的硬盤在Linux中命名為:/dev/hd{a|b|c……},比如/dev/hda;
其他硬盤比如SATA接口的硬盤命名為:/dev/sd{a|b|c……},比如/dev/sda。
注:{}表示任選一。
每個硬盤的分區命名:
IDE硬盤(以/dev/hda為例)為:
/dev/hda1
/dev/hda2
/dev/hda3
……
SATA或其他硬盤(以/dev/sda為例)為:
/dev/sda1
/dev/sda2
/dev/sda3
磁盤屬于塊設備,我們可以使用ls命令查看下服務器上所有已安裝的磁盤:
[root@CENTOSLINUX ~]# ls -l /dev | grep "[[:space:]][h|s]" | grep "^b" brw-rw----. 1 root disk 8, 0 Dec 3 11:10 sda brw-rw----. 1 root disk 8, 1 Dec 3 11:10 sda1 brw-rw----. 1 root disk 8, 2 Dec 3 11:10 sda2 brw-rw----. 1 root disk 8, 16 Dec 3 11:10 sdb brw-rw----. 1 root cdrom 11, 0 Dec 3 11:10 sr0
注:命令中的兩個grep命令用來過濾出磁盤所在的行。
說到分區,我們不得不提下MBR,MBR是mater boot recoder的簡寫,其存在于硬盤的0磁道0扇區,占據512B的空間(每個扇區也就512B),這512B的空間又細分如下:
446B:存放boot loader,幾開機引導程序;
64B:存放分區信息,每條分區信息占16B的空間,所以其最多存儲4條分區信息,
所以每個硬盤最多能分出4個主分區或3個主分區加一個擴展分區;
剩下的2B空間:是此MBR的有效性標識。
通過上面的信息我們知道每個硬盤最多能分出4個主分區或3個主分區加一個擴展分區,那是不是每個硬盤最多只能分4個分區呢?
非也,我們可以在這四個分區中留出一個做為擴展分區,擴展分區又可以細分出多個邏輯分區。擴展分區中的邏輯分區編號只能從5開始,比如我有一塊硬盤,劃分出2個主分區和1個擴展分區(主分區+擴展分區數量不能超過4個),擴展分區下又有兩個邏輯分區,其變號為:
Device Boot Start End Blocks Id System /dev/sdb1 1 262 2104483+ 83 Linux /dev/sdb2 263 524 2104515 83 Linux /dev/sdb3 525 1830 10490445 5 Extended /dev/sdb5 525 1178 5253223+ 83 Linux /dev/sdb6 1179 1830 5237158+ 83 Linux
但是分區是怎么劃分出來的呢?
是通過fdisk命令:
使用方法:fdisk /dev/DEVICE_NAME 或者 fdisk -l
直接在shell中輸入fdisk -l只會把所有的硬盤和分區信息輸出到屏幕,可以自行測試。
對于fdisk /dev/DEVICE
比如:
[root@CENTOSLINUX ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x1c365eed. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help):
會進入/dev/sdb的操作界面,直接在提示符處輸入對應的命令按提示操作即可,當不知道怎么操作時可以輸入m查看幫助:
Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
常用的輸入:
p: 顯示已有分區
n: 創建
d: 刪除
w: 保存
q: 退出
l: 列出可用的分區類型,類型很重要,比如swap只能用82類型的分區;
創建一個分區:
Command (m for help): n <---n表示創建新分區 Command action e extended p primary partition (1-4) p <---表示創建主分區,e表示創建擴展分區 Partition number (1-4): 1 <---輸入主分區號,第一個則輸入1 First cylinder (1-2610, default 1): <---輸入分區開始的磁柱,直接回車按默認即可 Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G <---輸入結束的磁柱,也可輸入大小,比如+2G或者+2000M。回車即創建完成。
創建擴展分區與創建主分區步驟相同;
在擴展分區下創建一個邏輯分區:
Command (m for help): n Command action l logical (5 or over) <---注意邏輯分區號是從5開始的。 p primary partition (1-4) l <---l(L的小寫)表示邏輯分區 First cylinder (525-1830, default 525): Using default value 525 Last cylinder, +cylinders or +size{K,M,G} (525-1830, default 1830): +5G
創建邏輯分區與創建主分區過程基本相同,只是創建邏輯分區不需要輸入分區號。
切記,操作完成退出前別忘了輸入w執行保存分區信息,否則分區失敗,也就是沒有分區;
最后輸入q,退出fdisk命令。
更多fdisk用法請自行man。
分區完成可以在shell中使用 fdisk -l 查看或者 cat /proc/partitions 查看。
若 cat /proc/partitions 后沒有顯示新建的分區,可以使用partx命令讓內核重新讀取分區信息:
partx -a /dev/sdb;
-a表示add;
更多partx用法請自行man。
創建分區后還是不能立即使用的,因為還要通過格式化和掛載才能使用,我們就先來看下怎么格式化分區吧;
格式化就是把分區格式化成特定的文件系統;
Linux支持的文件系統有:ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap;
其中ext2和VFAT為非日志文件系統,其余全部為日志文件系統;日志文件系統較為先進,穩定性較好。
還有兩個特殊的:
swap內存交換分區,用于存放內存交換頁面文件;
Linux的虛擬文件系統: VFS,用于虛擬所有的文件系統,給用戶提供統一的接口。
為什么需要文件系統呢?
文件系統是為方便操作系統對分區的管理而對空間進行的一系列規劃整理,打個比方,你要做一個書架,你是不是要好好的劃分下書架的空間以便于更好管理書架并放置更多的書呢?
ext系列文件系統在分區中是以如下方式組織分區空間的:
格式化分區的具體命令有mkfs,mke2fs,用法如下:
1. mkfs.FS_TYPE OPTION DEVICE 或者 mkfs -t FS_TYPE DEVICE
有用OPTION:
-L 'LABEL' 添加lable
注:FS_TYPE為ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap等文件系統名稱。
2. mke2fs OPTION DEVICE_NAME,DEVICE_NAME指分區名稱
OPTION:
-t {ext2|ext3|ext4}
-b {1024|2048|4096} 設置存儲基本單元block的大小
-L 'LABLE' 用于設置分區的LABEL
-j 相當于-t ext3, 即使用日志功能
-i #: 為數據空間中每多少個字節創建一個inode, 此大小不應該小于block的大小,
否則inode的數量將比block還多。。。。。。
-N #: 為數據空間創建多少個inode
-m #: 為管理人員預留的空間占據的百分比. 默認是5, 即5%
-O FEATURE[,…] 啟用指定特性
-O ^FEATURE[,…] 關閉指定特性
注:mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
其他常用命令:
1. blkid 分區: 顯示分區信息
或者:
blkid -U UUID 根據UUID查找設備
blkid -L LABEL 根據LABEL查找設備
2. e2lable DEVICE [LABEL],查看或設定LABEL
3. tune2fs OPTION DEVICE_NAME: 重新設定ext系統文件系統可調整參數的值
OPTION:
-l 查看超級塊信息
-L 'LABEL' 設定LABEL
-m # 修改預留給管理人員的空間百分比
-j: 打開日志功能, 將ext2 升級為ext3
-O 文件系統屬性啟用或禁用
-o 指定默認掛載選項
4. dumpe2fs OPTION DEVICE_NAME: 輸出DEVICE的信息
OPTION:
-h: 查看超級塊信息
5. mkswap: 創建交換空間
用法:mkswap [OPTION] DEVICE
注意:前提調整DEVICE類型為82,可用類型可以通過fdisk DEVICE然后輸入l查看。
文件系統監測與修復命令:
1.fsck: file system check的簡寫,用法如下:
fsck.FS_TYPE 或 fsck -t FS_TYPE
FS_TYPE 一定要與分區實際的文件系統類型對應
OPTION:
-a 自動修改錯誤
-r 交互式修復錯誤
e2fsck: ext系列文件系統專用
-y 自動回答為yes
-f 強制修復
原創文章,作者:Jacen,如若轉載,請注明出處:http://www.www58058.com/9634