在日常的服務(wù)器管理維護(hù)過程中,每天都要和磁盤進(jìn)行親密接觸。那幾天就來談一談CentOS下的磁盤管理機(jī)制。
20年前,一個(gè)60MB的磁盤大概需要花費(fèi)$1000,而現(xiàn)如今,一塊1TB的硬盤則大概需要$80。由此可見,磁盤這種東西已經(jīng)很親民了。但是作為計(jì)算機(jī)中不可或缺的一部分,磁盤扮演著很重要的角色?,F(xiàn)在市面上常見的硬盤分為兩種,機(jī)械盤和固態(tài)盤。
對(duì)于這兩種盤想必大家都有著比我更加深入的了解。當(dāng)然,固態(tài)盤對(duì)于我這種學(xué)生黨來說也算是奢侈品了。今天主要來看看傳統(tǒng)的機(jī)械盤。
以當(dāng)前市面上最流行的SATA盤來說吧。
linux會(huì)自動(dòng)識(shí)別block設(shè)備,并且自動(dòng)在/dev目錄下創(chuàng)建一個(gè)設(shè)備文件,以供內(nèi)核能夠訪問到該設(shè)備。通常SATA的命名規(guī)則是/dev/sda、/dve/sdb等(發(fā)現(xiàn)的第一塊設(shè)備就是/dev/sda,第二塊就是/dev/sdb….)。使用fidsk -l 或者parted -l 可以列出當(dāng)前系統(tǒng)上已經(jīng)識(shí)別的block設(shè)備的個(gè)數(shù)(包括usb設(shè)備)。
接著來看看磁盤的底層管理
格式化和壞塊管理:
安全格式化:要是確定一塊數(shù)據(jù)盤要格式化,而且不打算恢復(fù)可以使用dd命令來進(jìn)行格式化:
假設(shè)我有一塊4GB的磁盤需要進(jìn)行徹底的格式化: #dd if=/dev/zero of=/dev/your_device bs=1M count=4096 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB) copied, 6.1207 s, 702 MB/s <硬盤寫速度參照> 這個(gè)命令同樣也可以測試硬盤的讀寫速度<上面的操作可以當(dāng)做寫速度的參照> 讀速度測試: #dd if=/dev/your_device of=/dev/null bs=1M count=4096 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB) copied, 4.59378 s, 935 MB/s <這個(gè)可以作為讀速度的參照>
用SMART監(jiān)視磁盤(self-monitoring,analysis,and reporting technology)
在RED-HAT系列系統(tǒng)上都預(yù)裝了此應(yīng)用程序,通常由smartd守護(hù)進(jìn)程和smartctl管理工具兩部分。而/etc/smartd.conf定義了其后臺(tái)進(jìn)程的工作方式。
分區(qū)和格式化:
通常一個(gè)剛買的硬盤需要自己手動(dòng)格式化分區(qū),那么在CentOS命令行中該如何操作呢。
首先來看看有關(guān)分區(qū)的基礎(chǔ)知識(shí):
在許多允許有分區(qū)的系統(tǒng)上,通常會(huì)在磁盤的起始的第一個(gè)磁盤塊上有一個(gè)“記錄”,這個(gè)記錄標(biāo)明了分區(qū)的范圍。通常這個(gè)磁盤快被叫做MBR(Master Boot Record)主引導(dǎo)記錄。但是這個(gè)“主引導(dǎo)記錄”占據(jù)的磁盤塊只有512字節(jié),而前446個(gè)字節(jié)被一個(gè)叫(BootLoader)的家伙占據(jù)了,只有66字節(jié),最后兩個(gè)字節(jié)還要用來標(biāo)識(shí)BootLoader是否生效,所以留給磁盤分區(qū)的就只有64字節(jié)了。而一個(gè)分區(qū)表要占16字節(jié),所以這64字節(jié)最多只能分4張分區(qū)表,因此最多只能有四個(gè)主分區(qū)。那我就是想分五個(gè)區(qū)呢?就很難受了啊。所以,人們就提出了拓展分區(qū)的概念,將一個(gè)主分區(qū)表作為拓展分區(qū),而這個(gè)拓展分區(qū)上只存放一些列的分區(qū)指針,那么分區(qū)就可以不受4的限制了。
可以看到,當(dāng)我們使用擴(kuò)展分區(qū)時(shí),已經(jīng)突破了4個(gè)分區(qū)的限制,在CentOS中拓展分區(qū)不能直接使用,必須要在拓展分區(qū)上再創(chuàng)建邏輯分區(qū),才能夠使用,而且,拓展分區(qū)是要占用一個(gè)編號(hào)的(即圖中的/dev/sda4)所以在分區(qū)時(shí)應(yīng)該格外注意。
好了,來創(chuàng)建一個(gè)分區(qū)吧:
#fdisk /dev/sda 使用fdisk命令 指明要給那一塊磁盤創(chuàng)建分區(qū)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 創(chuàng)建一個(gè)新分區(qū) Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 指明這個(gè)分區(qū)為主分區(qū) Partition number (1-4, default 1): 指定分區(qū)編號(hào),默認(rèn)為1 First sector (2048-16777215, default 2048): 指定開始的扇區(qū),使用默認(rèn)即可 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): +4G 創(chuàng)建分區(qū)的大小 Partition 1 of type Linux and of size 4 GiB is set Command (m for help): w 保存退出
創(chuàng)建好分區(qū)之后,還要?jiǎng)?chuàng)建對(duì)應(yīng)的文件系統(tǒng):
[root@localhost ~]# mkfs -t ext4 -j /dev/sdb1 創(chuàng)建ext4文件系統(tǒng) 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/ 進(jìn)入test_file_system中創(chuàng)建文件試試吧 #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
到此一個(gè)主分區(qū)就創(chuàng)建完成了。創(chuàng)建邏輯分區(qū)的方法與之類似,但是一定要注意fdisk最多只能識(shí)別15個(gè)分區(qū),要是分區(qū)大于15個(gè),fdisk命令就不好用了。針對(duì)于此,有一個(gè)很好用的命令parted/gparted(這兩貨其實(shí)是一個(gè)工具,只不過一個(gè)是命令行工具,一個(gè)是xWindow桌面工具)。