2021-05-12 14:32:11
Linux 磁碟管理實踐
問題描述
研一的小夥伴向我反應實驗室的 Confluence 知識管理系統上傳不了附件,經過排查發現是磁碟空間不足了,使用 df
命令檢視磁碟使用量如下圖:
實驗室的Linux檔案伺服器有三塊硬碟,分別為 250GB、1TB、1TB,對應的裝置檔名分別為 /dev/sda
、/dev/sdb
、/dev/sdc
,但圖中看到只有兩塊硬碟的資訊,是因為第二塊磁碟作為物理的 RAID1 備份第三塊磁碟。
現在檔案系統的掛載資訊如下:
磁碟分割區 | 裝置名 | 大小 | 可利用率 | 掛載點 |
---|---|---|---|---|
Disk1 Partition1 | /dev/sda1 | 194MB | 62% | /boot |
Disk1 Partition2 | /dev/sda2 | 40GB | 100% | / |
Disk1 Partition4 | /dev/sda4 | 104GB | 31% | /var/ftp/cluster |
Disk3 Partition1 | /dev/sdc1 | 917GB | 2% | /home |
通過下面的 du
命令可以看到 Confluence 的工作目錄 /var/atlassian
已占用 22GB:
[root@archlab-server2 /]# du -sh /var/atlassian/
22G /var/atlassian/
當時搭建伺服器的時候磁碟規劃不合理,才導致現在磁碟空間不足的現象。那現在補救的方法只能是重新劃分磁碟分割區,初步計劃是完成下面兩步:
- 減小磁碟3上分割區1的大小,在磁碟3上增加一個新的分割區;
- 將新增分割區掛載到
/var/atlassian
目錄下,將以前該目錄在磁碟1上的檔案拷貝到新分割區並釋放以前分割區空間。
減小分割區大小
首先減小 Disk3 的第一個分割區的大小,由於該分割區已經掛載到 /home
目錄下,因此先要解除安裝該分割區(在解除安裝之前做備份,將該目錄全部拷貝到另一個分割區上),使用命令 umount
解除安裝:
[root@archlab-server2 /]# umount /dev/sdc1
umount: /home: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
提示裝置忙的資訊,原因是由於 /home
目錄正在被某個進程使用,可以使用 fuser
命令來終止使用該目錄的所有進程:
[root@archlab-server2 /]# fuser -km /home
/home: 2639m
再完成解除安裝即可。現在可以調整該分割區的大小,有兩種方法:一種是使用命令列命令來操作,另一種是使用圖形化的軟體 GParted。其實圖形化軟體也是呼叫 Linux 的命令來實現的,這裡為了簡便我就安裝了 GParted,使用該軟體完成調整分割區的大小(該軟體操作很簡單,就不多說),如下圖:
將 /dev/sdc1
調整到近 420GB。最後別忘了通過命令 mount
將 /dev/sdc1
重新掛載到 /home
目錄下,否則存取 /home
目錄下的檔案就自動去 /dev/sda2
磁碟分割區下尋找:
[root@archlab-server2 /]# mount /dev/sdc1 /home
新增分割區
接下來在未分配的 500 多GB 上再分出一個分割區(200GB),也可以使用 GParted 來分配,這裡我使用命令 fdisk
來完成:
[root@archlab-server2 /]# fdisk /dev/sdc
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x358b358b
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 54721 439544800+ 7 HPFS/NTFS
Partition 1 does not start on physical sector boundary.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (54721-121601, default 54721):
Using default value 54721
Last cylinder, +cylinders or +size{K,M,G} (54721-121601, default 121601): +200G
Expert command (m for help): w
The partition table has been altered!
使用指令 m 可以列出所有指令的含義,指令 p 列印出該磁碟的所有分割區資訊,n 建立分割區,輸入新建分割區的資訊(如分割區型別、分割區起始結束位置等),這裡為新增分割區分配了 200GB 的空間,完成之後輸入 w 才執行實際的操作,更改分割區表。
格式化分割區
分割區完成後要進行檔案系統的格式化,使用命令 mkfs
指定格式化檔案系統的型別:
[root@archlab-server2 /]# mkfs -t ext4 /dev/sdc2
掛載分割區
新增並格式化一個分割區之後,就到最後一步,將該分割區掛載到 /var/atlassian
目錄下,操作步驟如下:
- 將
/dev/sdc3
掛載到一個臨時的目錄,如/home/tmp
- 將
/var/atlassian
目錄下所有檔案剪下到/home/tmp
下,即為/dev/sda2
釋放空間 - 將
/dev/sdc3
從/home/tmp
目錄下解除安裝 - 最後將
/dev/sdc3
掛載到/var/atlassian
下
由於都是使用 mount
和 umount
兩個命令來完成,就不寫出命令過程了。
那麼通過上述幾步即完成了 /var/atlassian
目錄下的資料由以前存放在 磁碟1分割區2 到 新增的磁碟3分割區2 上的轉移,
最後我們用塊裝置檢視命令 lsblk
檢視系統塊裝置資訊:
[root@archlab-server2 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 149.1G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 40G 0 part /
├─sda3 8:3 0 4G 0 part [SWAP]
└─sda4 8:4 0 104.9G 0 part /var/ftp/cluster
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 931.5G 0 part
sdc 8:32 0 931.5G 0 disk
├─sdc1 8:33 0 419.2G 0 part /home
└─sdc2 8:34 0 331.5G 0 part /var/atlassian
總結
- 熟練掌握幾個磁碟管理的命令 ——
df
/du
/fdisk
/mkfs
/mount
/umount
等 - 理解磁碟分割區、檔案系統、掛載點的概念
在 Linux 下你所不知道的 df 命令的那些功能 http://www.linuxidc.com/Linux/2015-02/112634.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-04/116556.htm
相關文章