1. 程式人生 > >CentOS磁碟管理(一)

CentOS磁碟管理(一)

在日常的伺服器管理維護過程中,每天都要和磁碟進行親密接觸。那幾天就來談一談CentOS下的磁碟管理機制。

20年前,一個60MB的磁碟大概需要花費$1000,而現如今,一塊1TB的硬碟則大概需要$80。由此可見,磁碟這種東西已經很親民了。但是作為計算機中不可或缺的一部分,磁碟扮演著很重要的角色。現在市面上常見的硬碟分為兩種,機械盤和固態盤。

對於這兩種盤想必大家都有著比我更加深入的瞭解。當然,固態盤對於我這種學生黨來說也算是奢侈品了。今天主要來看看傳統的機械盤。

以當前市面上最流行的SATA盤來說吧。

linux會自動識別block裝置,並且自動在/dev目錄下建立一個裝置檔案,以供核心能夠訪問到該裝置。通常SATA的命名規則是/dev/sda、/dve/sdb等(發現的第一塊裝置就是/dev/sda,第二塊就是/dev/sdb....)。使用fidsk -l 或者parted -l 可以列出當前系統上已經識別的block裝置的個數(包括usb裝置)。

接著來看看磁碟的底層管理

格式化和壞塊管理:

安全格式化:要是確定一塊資料盤要格式化,而且不打算恢復可以使用dd命令來進行格式化:

假設我有一塊20GB的磁碟需要進行徹底的格式化:
#dd if=/dev/zero of=/dev/your_device bs=1M count=2048

用SMART監視磁碟(self-monitoring,analysis,and reporting technology)

在RED-HAT系列系統上都預裝了此應用程式,通常由smartd守護程序和smartctl管理工具兩部分。而/etc/smartd.conf定義了其後臺程序的工作方式。

分割槽和格式化:

通常一個剛買的硬碟需要自己手動格式化分割槽,那麼在CentOS命令列中該如何操作呢。

首先來看看有關分割槽的基礎知識:

在許多允許有分割槽的系統上,通常會在磁碟的起始的第一個磁碟塊上有一個“記錄”,這個記錄標明瞭分割槽的範圍。通常這個磁碟快被叫做MBR(Master Boot Record)主引導記錄。但是這個“主引導記錄”佔據的磁碟塊只有512位元組,而前446個位元組被一個叫(BootLoader)的傢伙佔據了,只有66位元組,最後兩個位元組還要用來標識BootLoader是否生效,所以留給磁碟分割槽的就只有64位元組了。而一個分割槽表要佔16位元組,所以這64位元組最多隻能分4張分割槽表,因此最多隻能有四個主分割槽。那我就是想分五個區呢?就很難受了啊。所以,人們就提出了拓展分割槽的概念,將一個主分割槽表作為拓展分割槽,而這個拓展分割槽上只存放一些列的分割槽指標,那麼分割槽就可以不受4的限制了。

可以看到,當我們使用擴充套件分割槽時,已經突破了4個分割槽的限制,在CentOS中拓展分割槽不能直接使用,必須要在拓展分割槽上再建立邏輯分割槽,才能夠使用,而且,拓展分割槽是要佔用一個編號的(即圖中的/dev/sda4)所以在分割槽時應該格外注意。

好了,來建立一個分割槽吧:

#fdisk /dev/sda   使用fdisk命令 指明要給那一塊磁碟建立分割槽Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x051a34dd.

Command (m for help): n            建立一個新分割槽
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p      指明這個分割槽為主分割槽
Partition number (1-4, default 1):   指定分割槽編號,預設為1
First sector (2048-16777215, default 2048): 指定開始的扇區,使用預設即可
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): +4G 建立分割槽的大小
Partition 1 of type Linux and of size 4 GiB is set



Command (m for help): w 儲存退出

建立好分割槽之後,還要建立對應的檔案系統:

[[email protected] ~]# mkfs -t ext4 -j /dev/sdb1  建立ext4檔案系統
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

最後掛載就可以使用了:

#mount /dev/sdb1 /mnt/test_file_system/
進入test_file_system中建立檔案試試吧
#cd /mnt/test_file_system
#touch test.sh 
#ls -l 
total 76
-rw-------. 1 root root  1422 Sep 11 10:08 anaconda-ks.cfg
-rw-r--r--. 1 root root 71826 Sep 13 08:39 smartd.conf
-rw-r--r--. 1 root root     0 Sep 13 09:30 test.sh

到此一個主分割槽就建立完成了。建立邏輯分割槽的方法與之類似,但是一定要注意fdisk最多隻能識別15個分割槽,要是分割槽大於15個,fdisk命令就不好用了。針對於此,有一個很好用的命令parted/gparted(這兩貨其實是一個工具,只不過一個是命令列工具,一個是xWindow桌面工具) 。