iops:i/o per second:每秒的讀寫次數。linux
桌面用的固態硬盤的接口通常是SATA的。c++
並口:同一個線纜能夠接多塊設備shell
串口:只能接一個。windows
機械硬盤:由不少盤片組成,盤片上有不少同心圓中心有一個同心軸(叫主軸),每一個盤片的正反面都有一個磁頭,就像留聲機,有一個手臂(arm),支撐全部磁頭。centos
硬盤結構圖片請參考:硬盤的物理結構和工做原理微信
track:磁道ide
sector:扇區,512bytes學習
cylinder:柱面:圓柱體的外表面(除去上下2個圓面)ui
分區劃分是以柱面爲單位的。this
平均尋道時間:硬盤的同心軸旋轉的速度。越快IO越好。
5400轉/分,7200轉/分,10000轉/分,15000轉/分
最外層的磁道,同一段時間內轉過的長度最大,因此IO最快,因此把C盤劃分到外層,因此windows的操做系統都裝在C盤上。
Linux的哲學思想:一切皆文件
設備號:
major:主設備號:區分設備的類型(鼠標仍是鍵盤),用於標明所須要的驅動程序。
minor:次設備號:區分同種類型下的不一樣設備(有2個顯示器,區分是哪一個顯示器)。是特定設備的訪問入口。
建立設備文件命令:mknod
:make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
# mknod testdev c 111 1 # ll testdev crw-r--r--. 1 root root 111, 1 Dec 25 18:42 testdev # mknod -m 664 testdev1 c 111 1 # ll testdev1 crw-rw-r--. 1 root root 111, 1 Dec 25 18:42 testdev1
設備文件的名字不是隨便的,是有標準的,由ICANN制定。
操縱系統給硬盤的設備文件的命名規則:
# ll /dev/sda* brw-rw----. 1 root disk 8, 0 Dec 25 10:10 /dev/sda brw-rw----. 1 root disk 8, 1 Dec 25 10:10 /dev/sda1 brw-rw----. 1 root disk 8, 2 Dec 25 10:10 /dev/sda2
設備的引用問題:
因此有了下面的設備引用方式:
硬盤的空間很大,爲了更細緻的使用它,要給它劃分紅獨立的區域,叫分區。如何識別分區呢?使用/dev/sda#,/dev/hda#。
#:爲數字,多是1位的數字,也多是2位的數字。
注意:centos5根據硬盤接口的類型,把IDE的命名位hd,把SCSI等的命名位sd。可是centos6和7,不論是什麼接口的硬盤,一概用sd[a-z]來命名了。
硬盤分區類型:
MBR:Master boot record:主引導記錄(扇區)
在0號track(磁道),0號sector(扇區)裏,有512bytes
這512bytes分爲3部分:
前446bytes:bootloader程序,引導操做系統啓動的程序。
接下來的64bytes:分區表(fat),用16個字節標識一個硬盤的可以使用區域,因此一共只能有4個分區(硬盤的可以使用區域)。
若是想要超過4個分區怎麼辦?
讓某一個分區,不直接指定硬盤空間的具體可以使用區域,而是指向硬盤的一個小地方,這個地方又放了一張分區表(fat),這個分區表的大小能夠隨意指定,因此這個分區表裏就能夠放n多的分區的索引,再由此索引,指定具體的分區(硬盤的可以使用區域)。
因此就能夠有了:
最後2個bytes:MBR區域是否有效的標識。若是是55AA(16進制),則說明有效。不然,說明無效。
GPT:未調查
fdisk
查看硬盤裏的分區狀況:fdisk -l [-u][device...]
不指定設備文件的話,就顯示全部硬盤的分區狀況。
指定設備文件的話,就顯示指定硬盤的分區狀況。
# fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors(扇區) Units = sectors of 1 * 512 = 512 bytes(每一個扇區是512bytes) Sector size (logical/physical): 512 bytes / 512 bytes(扇區的邏輯/物理size都是512bytes) I/O size (minimum/optimal): 512 bytes / 512 bytes(IO大小512bytes) Disk label type: dos(dos表明是MBR的分區類型) Disk identifier: 0x000bc639(磁盤的UUID,16位的數字) Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 125829119 61864960 8e Linux LVM # fdisk -l /dev/sda Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000bc639 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 125829119 61864960 8e Linux LVM
管理分區:fdisk device
fdisk提供一個交互式接口來管理分區,進入交互式之後,在裏面可使用不少子命令。
全部操做的結果都是暫時保存在內存中,尚未寫入到磁盤,直到使用了w命令後,纔會把操做反應到磁盤,也就是操做才生效。這個命令很是危險。
Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition(刪除分區) g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types(顯示磁盤種類,也就是上面用fdisk -l命令的指向結果裏的Id) 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(修改分區的Id,也就是修改文件系統的種類) u change display/entry units v verify the partition table w write table to disk and exit(保存並退出) x extra functionality (experts only)
下圖是在虛擬機上新添加的硬盤,大小是1GB。
添加硬盤前:
# ll /dev/sda* brw-rw----. 1 root disk 8, 0 Dec 25 10:10 /dev/sda brw-rw----. 1 root disk 8, 1 Dec 25 10:10 /dev/sda1 brw-rw----. 1 root disk 8, 2 Dec 25 10:10 /dev/sda2
添加硬盤後:發現多了一個/dev/sdb,因此新添加的硬盤被操做系統識別到了。
# ll /dev/sd* brw-rw----. 1 root disk 8, 0 Dec 26 13:26 /dev/sda brw-rw----. 1 root disk 8, 1 Dec 26 13:26 /dev/sda1 brw-rw----. 1 root disk 8, 2 Dec 26 13:26 /dev/sda2 brw-rw----. 1 root disk 8, 16 Dec 26 13:28 /dev/sdb
查看一下新硬盤的狀況:
發現硬盤大小是:1073MB,和添加的1GB大小符合;硬盤分區類型是MBR
# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Command (m for help): p Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0e2a2184 Device Boot Start End Blocks Id System
建立一個主分區:
Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p(問你是建立主分區p,仍是擴展分區e) Partition number (1-4, default 1): 1(由於上面選的是主分區,因此問你主分區的分區號) First sector (2048-2097151, default 2048): 2048(正在建立的這個分區,從哪一個扇區開始建立) Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +200M(建立多大的分區) Partition 1 of type Linux and of size 200 MiB is set(告訴你一個200M的分區建立成功了) Command (m for help): p Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x87b57c10 Device Boot Start End Blocks Id System /dev/sdb1 2048 411647 204800 83 Linux Command (m for help): w(保存!) The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
上面建立了一個/dev/sdb1分區。
查看剛建立的分區是否被操做系統識別了:查看文件/proc/partitions,發現/dev/sdb1已經在裏面了,就說明了操做系統已經識別了剛建立的分區了。
# cat /proc/partitions major minor #blocks name 8 0 62914560 sda 8 1 1048576 sda1 8 2 61864960 sda2 8 16 1048576 sdb 8 17 204800 sdb1 11 0 1048575 sr0 253 0 38834176 dm-0 253 1 4063232 dm-1 253 2 18960384 dm-2
上面建立分區的操做是在centos7裏作的,因此操做系統才能立刻就識別到剛建立的分區/dev/sdb1,可是若是是centos5或者6,就不能立刻識別出剛建立出來的分區。須要用下面的命令,告訴操做系統我剛建立了一個分區,請識別它,謝謝。下面的命令通常執行第一次時,不會成功,再執行一次就行了。
centos5:partprobe [device]
centos6/7:partx
,kpartx
partx -a [device]
kpartx -af [device]
因此,在劃分數據區的時候,最好預留一塊區域,當滿了的時候,管理員能夠啓動這塊預留區域,而後操做系統就能工做了。