時間:2018-05-24
姓名:魏文應
一、硬盤
硬盤的正常使用流程:
購買設備 -> 設備聯機 -> 磁盤分區 -> 磁盤格式化(創建文件系統) -> 磁盤掛載 -> 正常使用
- sda磁盤.png
我們看 /dev/sda1
之類的:
-
/dev/
: 設備文件目錄。 -
sd
: SCSI接口類型的硬盤。 -
a
: 代表第幾塊盤,a代表第一塊盤。 -
1
: 分區,1、2、3、4是主分區,5、6、7、8、9等是邏輯分區。
二、使用fdisk管理分區
- 注意:fdisk 無法支持 2T 以上容量的磁盤分區,超過2T,請使用后面將會講到的parted工具。
實驗準備
做實驗之前,添加一塊硬盤,VMware虛擬機中,點擊添加,然后添加一塊硬盤:
- 添加一塊硬盤
然后重啟系統,用 fdisk -l
命令就可以看到新添加的硬盤了:
- sdb就是新添加的盤
圖中的 /dev/sdb 就是我們剛才添加的硬盤。
給一塊磁盤分區
實驗 fdisk 命令,加上磁盤,比如我要對sdb磁盤分區,執行 fdisk /dev/sdb
命令,然后會進入fdisk的一些命令提示中,輸入m打印幫助信息:
- fdisk幫助信息( 圖片來源:www.xuegod.cn)
然后輸入相應的分區命令:
- 分區過程
然后輸入 w 保存退出,分區完成,執行命令ls /dev/sd*
, 就能看到剛才分區得到的磁盤分區了。接下來,格式化分區:
mkfs.ext4 /dev/sdb1
這里我格式化為ext4類型文件系統,你也可以格式化為其它類型(輸入mkfs,再按兩下Tab鍵,就能看到有哪些文件系統類型可以選擇)。通過 blkid
命令,查看硬盤分區類型:
blkid /dev/sdb1
然后 掛載分區:
# 創建一個掛載點
mkdir /sdb1# 將/dev/sdb1分區掛載到/sdb1
mount /dev/sdb1 /sdb1# 查看一下掛載上了沒有
df -Th | tail 1
進入/sdb1這個目錄,如果看到 lost+found
文件夾,也你能說明掛載沒有問題。注意:磁盤掛載中,一個掛載點可以掛載多個磁盤,比如:
mount /dev/sdb2 /sdb1
mount /dev/sdb1 /sdb1
這里都掛載到/sdb1這個目錄下,那么去掉這個掛載點,你就要umount 兩次:
umount /sdb1
umount /sdb1
這樣 /sdb1 這個掛載點才沒有掛載磁盤。 當然,也可以直接指定設備去卸載:
umount /dev/sdb1
開機自動掛載分區
剛才mount 是手動掛載磁盤分區, 下面是開機自動掛載。在 /etc/fstab 文件中,加入下面一句話:
/dev/sdb1 /sdb1 ext4 defaults 0 0
它是什么意思呢? 意思如下:
/dev/sdb1 | /sdb1 | ext4 | defaults | 0 | 0 |
---|---|---|---|---|---|
要掛載的設備分區 | 掛載點 | 文件系統類型 | 掛載選項 | 是否要備份 | 是否檢測 |
考慮到 /dev/sdb1
不是唯一的(因為這個值是變的),比如:
/dev/sda 磁盤disk1
/dev/sdb 磁盤disk2
/dev/sdc 磁盤disk3
這里表示有三塊磁盤,如果 磁盤disk1 被拔下來了,重新開機時就是(因為系統檢測到磁盤,是a/b/c/d這樣來排列的,先從a開始表示第一塊磁盤):
/dev/sda 磁盤disk2
/dev/sdb 磁盤disk3
如果我們還認為 /dev/sda 是 磁盤disk1 ,就會發生問題,因為這時它是 磁盤disk2。為了解決這個問題,我們應該用 UUID標識 一塊磁盤(UUID具有全球唯一性),所以我們應該這樣:
UUID=9d0d24e5-0bbe-463e-9cfa-ec6c9f44cca8 /sdb1 ext4 defaults 0 0
這個 UUID 可以通過 blkid
這個命令查詢得到:
blkid /dev/sdb1
讓/etc/fstab內容立即生效
我們在修改了磁盤配置文件 /etc/fstab 這個文件以后,可以執行下面命令讓其生效:
mount -a
這個命令執行了 /etc/fstab 的配置信息。
將剩余磁盤容量都給邏輯分區
當我們創建了一些主分區以后,我們還想創建邏輯分區,那么我們就可以先執行操作,將剩下的容量都給了邏輯分區:
- 創建邏輯分區
我這里sdb4就是剩下容量。然后我們可以和之前創建主分區一樣的方法,創建邏輯分區。注意:這時候的sdb4是不能直接訪問的。 意思是我們要在sdb4的基礎上,創建邏輯分區。
三、使用parted分區工具
- GPT 分區表:全球唯一標識分區表, GPT對分區數量沒有限制(windows系統GPT有限制,最大128個分區,可管理磁盤大小18EB,NTFS文件系統最大才支持256TB)。
- MBR 分區表:最大4個分區表項。
- parted工具:適用于大容量磁盤的分區(超過2T)。
準備工作:
- 查看parted工具是否已經安裝:
rpm -rf `which parted`
。 - 查看磁盤狀態信息:
parted -l
- 在VMware設置中添加一塊新的磁盤,大小為
3T
(你的物理磁盤沒有這么大沒有關系,這是虛擬的),reboot重啟linux。 - 使用
fdisk -l
命令,看看有沒有我們剛才添加的3T磁盤,我這里是/dev/sdc。
然后對磁盤進行分區操作:
- 指定要分區磁盤:
parted /dev/sdc
。 - 上面一步開始,就進入了parted命令行操作。
- 指定分區表類型:
mklabel gpt
。 - 創建分區:
mkpart primary 0 100
(primary是分區名稱,你任意取一個,0是分區起始地址,100是100M大小)。 - 忽略警告信息(這是分區比較小的提示信息,如果大點就沒有這個警告了):
ignore
:warning: The resulting partition is not properly aligned for best performance. 警告:結果分區沒有正確對齊以獲得最佳性能。
- 可以查看一下分區結果:
print
。 - 最后退出parted :
quit
。
可以分一個大點的分區:
指定要分區磁盤:
parted /dev/sdc
。- parted工具分配磁盤過程
最后退出parted :
quit
。
對分區進行格式化和掛載:
- 格式化分區:
mkfs.ext4 /dev/sdc1
(我這里是/dev/sdc1這個分區,你根據自己要格式化的分區而定)。 - 創建掛載點:
mkdir /sdc1
。 - 掛載:
mount /dev/sdc1 /sdc1
。
在格式化分區時,如果沒有安裝相關文件系統格式化工具,可以用yum搜索安裝,比如安裝mkfs.xfs
工具,
yum search mkfs
或者
yum search xfs
比如結果顯示: xfsprogs.i686,那么用yum安裝它即可:yum -y install xfsprogs.i686
。
四、擴展swap分區
我們可以對swap分區大小進行修改。下面擴大swap分區:
創建兩個邏輯分區,我這里是/dev/sdb3、/dev/sdb5,這兩個分區100M。
格式化分區(swap專用工具):
mkswap /dev/sdb3
、mkswap /dev/sdb5
。可以查看一下內存情況:
free -m
(MB為單位顯示)。添加到swap中:
swapon /dev/sdb3
。再查看一下內存情況,你會發現內存swap分區變大了約100M:
free -m
。去除swap分區:
swapoff /dev/sdb3
(將剛才添加的sdb3從swap分區中去掉)。
開機時自動掛載swap分區:
-
打開配置文件:
vim /etc/fstab
,添加剛才的磁盤分區:/dev/sdb3 swap swap defaults 0 0
更好的做法是,通過
blkid /dev/sdb3
指令,查看 /dev/sdb3 的UUID,用UUID替代 /dev/sdb3:UUID=4fb2dd10-2bc7-48fe-8158-376dd4001c67 swap swap defaults 0 0
直接執行
mount -a
發現不起作用,reboot
重啟系統就可以了,然后通過free -m
查看一下。
十、問題處理
磁盤分區后,在/dev/目錄下找不到剛才新建的分區
如果分區以后,執行 ls /dev/sdb2
命令,沒有看到你的分區(比如我這里是sdb2分區),那么刷新一下磁盤:
partprobe /dev/sdb
如果執行 partprobe /dev/sdb
命令,提示下面錯誤信息:
Warning: WARNING: the kernel failed to re-read the partition table on /dev/sdb (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.
可能是這塊磁盤的哪個分區已經被掛載了:
df -Th
比如我們之前執行 mount /dev/sdb1 /sdb1
命令,將 /dev/sdb1/ 掛載了 /sdb1 上,那么我們可以先卸載這個掛載點:
umount /sdb1
然后再執行 partprobe /dev/sdb
命令。如果還是不行,看看磁盤是否有分區被掛載為了swap分區:
cat /proc/swaps
如果有sdb磁盤掛載到swap分區,可以關閉它:
swapoff /dev/sdb3