在日常的服務器管理維護過程中,每天都要和磁盤進行親密接觸。那幾天就來談一談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命令來進行格式化:
假設我有一塊4GB的磁盤需要進行徹底的格式化: #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 <硬盤寫速度參照> 這個命令同樣也可以測試硬盤的讀寫速度<上面的操作可以當做寫速度的參照> 讀速度測試: #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 <這個可以作為讀速度的參照>
用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 保存退出
創建好分區之后,還要創建對應的文件系統:
[root@localhost ~]# 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桌面工具)。