Skip to main content

linux disk management command used commonly

· 8 min read
zaxro

disk management command

在管理上會去檢視硬碟使用量,資料夾資料大小,如果掛硬碟跟卸下硬碟也會有專用 command

df -h: 列出所有已掛載的硬盤的分區信息以及剩餘空間大小,結果長這樣

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs 7.6G 0 7.6G 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 7.7G 801M 6.9G 11% /run
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/nvme0n1p1 100G 6.0G 95G 6% /
/dev/nvme1n1 300G 7.1G 293G 3% /var/gogo
tmpfs 1.6G 0 1.6G 0% /run/user/1000

du -sh *: 列出當前目錄下所有文件和子目錄的大小

[root@72slaves ~]# du -sh *
0 123
4.0K 123.sh
4.0K anaconda-ks.cfg
60K app
156K async-fastapi-mongo
2.8M cf-workers-status-page-v1
36K docker
......

lsblk -f:檢視是否有任何磁碟區已在啟動時映射,但尚未格式化和掛載。 以下是一般都有掛載時.

NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sr0 iso9660 CentOS 7 x86_64 2020-04-22-00-54-00-00
vda
├─vda1 xfs 68c17843-072c-45ce-b3ea-c48a6eb5317c /boot
└─vda2 LVM2_member 4GHWpr-dPQk-Dn22-Uhou-uxN4-4ZbT-r9OY0H
├─centos-root xfs ff74c584-efb1-40b3-b607-c0f0b5d37fa1 /
├─centos-swap swap 8d866b90-7445-4ee7-ae20-f3742e5971ec [SWAP]
└─centos-home xfs 0119a471-e11b-4803-9c19-42e637ed372a /home
danger

如果您要掛載的磁碟區已有資料 (例如,從快照建立的磁碟區),請不要使用此命令。

mkfs -t xfs /dev/urdisk:格式化硬碟並指定檔案系統.

mkdir -p /data:先建立好/data 資料夾

mount /dev/urdisk /data:把硬碟掛載到/data 資料夾(請先建立好/data 資料夾)

umount /data:由/data 卸載硬碟

how to mount disk in aws

以 aws 為例,要申請硬碟並在 instance 上用機器掛載

  1. 開啟 AWS EC2 控制台
  2. 選擇要掛載硬碟的實例,並在左側選單點擊「Volumes」
  3. 在「Volumes」頁面點擊「Create Volume」
  4. 設定硬碟大小、AZ、類型等資訊,並點擊「Create Volume」
  5. 等待硬碟創建完成,沒有完成你 attach volume 做
  6. 在「Volumes」頁面勾選剛剛創建的硬碟,點擊「Actions」,選擇「Attach Volume」
  7. 在「Attach Volume」彈出框中選擇要掛載硬碟的 EC2 實例,以及設定掛載路徑和裝置名稱
  8. 點擊「Attach」
  9. 登入 EC2 實例,執行指令 lsblk -f 確認硬碟是否掛載成功,去找那個沒有 FSTYPE 的 NAME,EX:xvdf,:
NAME        FSTYPE  LABEL   UUID                        MOUNTPOINT
xvda
├─xvda1 xfs / d0c265c4-6ea1-4060-b815-520e1c2aae05 5.8G 26% /
├─xvda127
└─xvda128 vfat FAT16 606C-CF35
xvdf
  1. 如果硬碟還沒有格式化,執行指令 sudo mkfs -t xfs /dev/xvdf 格式化硬碟(假設硬碟裝置名稱是 /dev/xvdf)
  2. 建立要掛載硬碟的目錄,例如 sudo mkdir /data
  3. 將硬碟掛載到目錄上,例如 sudo mount /dev/xvdf /data
  4. 確認掛載成功,執行指令 df -h 查看!
  5. lsblk -f 去看 UUID
[root@ford-ec2-bastion-uw1 ~]# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
xvda
├─xvda1 xfs / d0c265c4-6ea1-4060-b815-520e1c2aae05 5.8G 26% /
├─xvda127
└─xvda128 vfat FAT16 606C-CF35
xvdf xfs 8dbb60fe-5653-4668-8a7f-7cdeba1e7839
  1. 若要在每次系統開機時掛載連接的 EBS 磁碟區,先用 lsblk -f 看 UUID,並 vim /etc/fstab 加入以下(UUID 換成自己的).
/etc/fstab
UUID=8dbb60fe-5653-4668-8a7f-7cdeba1e7839  /data  xfs  defaults  0  0
info

在以上範例中,將 UUID aebf131c-6957-451e-8d34-ec978d9581ae 的裝置掛載至掛載點 /data,並使用 xfs 檔案系統.

第四欄是檔案系統參數,可以上網查個選項!

第五欄是 dump,dump 會根據這個設定決定是否需要備份,一般為 0, 即不備份;1 為每日備份;2 為隔日備份,dump 僅支援 EXT 家族,若使用 xfs 檔案系統,則不用考慮 dump 項目。因此直接輸入 0 即可。

第六欄: fsck ,早期開機的流程中,會有一段時間去檢驗本機的檔案系統,看看檔案系統是否完整 (clean)。 不過這個方式使用的主要是透過 fsck 去做的,我們現在用的 xfs 檔案系統就沒有辦法適用,因為 xfs 會自己進行檢驗,不需要額外進行這個動作!所以直接填 0 就好了。(以上四五六項內容參考自鳥哥)

  1. 檢查是否有掛載成功
# Verify mount disk successfully
umount /data
mount -a

how to umount disk in aws

  1. 先做好備份,如果做錯了,該怎麼還原要先想好
  2. 檢查該 300G 是否有被啟動的服務使用到 指令 ex.lsof /dev/vda1
  3. 停掉相關有使用的服務
  4. 將該 300G 的硬碟 umount 掉 ex.umount /data
  5. 檢查/etc/fstab 上有無設定掛載那 300G 硬碟
  6. 將/etc/fstab 有設定的那 300G 註解掉
  7. 下 mount -a 檢查有沒有確實拿掉,這樣在下次重開機就不會在吃到的
  8. 從 AWS 上直接把那顆硬碟做刪除

how to extend disk in aws

擴充硬碟可以透過熱擴展的方式,不用先停機!以下是依據官網這篇操作

  • 先擴充硬碟空間(到EBS那邊針對你要擴充的硬碟做modify)
  • 到主機上使用以下指令
    • 檢查是否有分割區,請使用lsblk指令
xvda     202:0    0    22G  0 disk
├─xvda1 202:1 0 21.9G 0 part /
├─xvda14 202:14 0 4M 0 part
└─xvda15 202:15 0 106M 0 part /boot/efi

舉以上為例,正常有分配完的磁碟區並具有分割區會長得像以上這樣

xvda     202:0    0    22G  0 disk
├─xvda1 202:1 0 8G 0 part /
├─xvda14 202:14 0 4M 0 part
└─xvda15 202:15 0 106M 0 part /boot/efi

沒有分配好的則會像這樣,可以看到/dev/xvda的空間是大於下方分割區加總.

  • 擴充硬碟 growpart /dev/xvda 1
  • 確認檔案系統格式是ext4還是xfs,已確認擴充檔案系統指令,請使用df -hT
root@ip-10-0-0-83:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/root ext4 22G 15G 7.0G 68% /
tmpfs tmpfs 479M 0 479M 0% /dev/shm
tmpfs tmpfs 192M 952K 191M 1% /run
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/xvda15 vfat 105M 6.1M 99M 6% /boot/efi
tmpfs tmpfs 96M 4.0K 96M 1% /run/user/1000
overlay overlay 22G 15G 7.0G 68% /var/lib/docker/overlay2/5efc459a6424331257227c5f5152d25d735ed0b1ef6e4b68a781d0092f21e6e2/merged
  • 因為我擴充改root,檔案系統是ext4,所以會用resize2fs指令,對應到前面擴充的分割區xvda1,就會使用resize2fs /dev/xvda1.

Brief summary

各家申請硬碟方式不一樣,但是 linux command 是可以共用的!