磁盤管理 df、du、fdisk、parted

第四章 Linux磁盤管理

4.1 df命令

df命令用於顯示已掛載磁盤分區上的可以使用的磁盤空間,默認顯示單位爲KB。node

語法: df [選項] [參數]
選項:
-h:使用合適的單位顯示
-i:查看inodes使用狀況
-k:以KB爲單位顯示
-m:以MB爲單位顯示linux

df命令解析

eg:
默認狀況以K爲單位顯示工具

[root@3 ~]# df
文件系統          1K-塊    已用     可用 已用% 掛載點
/dev/sda3      29140072 1195120 27944952    5% /
devtmpfs         494380       0   494380    0% /dev
tmpfs            504196       0   504196    0% /dev/shm
tmpfs            504196    6860   497336    2% /run
tmpfs            504196       0   504196    0% /sys/fs/cgroup
/dev/sda1        201380  111468    89912   56% /boot
tmpfs            100840       0   100840    0% /run/user/0

使用-h以合適的單位顯示ui

[root@3 ~]# df -h
文件系統        容量  已用  可用 已用% 掛載點
/dev/sda3        28G  1.2G   27G    5% /
devtmpfs        483M     0  483M    0% /dev
tmpfs           493M     0  493M    0% /dev/shm
tmpfs           493M  6.7M  486M    2% /run
tmpfs           493M     0  493M    0% /sys/fs/cgroup
/dev/sda1       197M  109M   88M   56% /boot
tmpfs            99M     0   99M    0% /run/user/0

查看inodes使用狀況this

[root@3 ~]# df -i
文件系統          Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/sda3      14577152   32100 14545052       1% /
devtmpfs         123595     377   123218       1% /dev
tmpfs            126049       1   126048       1% /dev/shm
tmpfs            126049     446   125603       1% /run
tmpfs            126049      16   126033       1% /sys/fs/cgroup
/dev/sda1        102400     330   102070       1% /boot
tmpfs            126049       1   126048       1% /run/user/0

4.2 du命令

du命令用來查看某個目錄或文件所佔空間大小。默認顯示單位KB。spa

語法: du [選項] [參數]
選項:
-a:=all,顯示所有文件與目錄的大小
-b:以byte爲單位顯示內容
-k:以KB爲單位顯示內容
-m:以MB爲單位顯示內容
-h:系統自動調節單位顯示內容
-c:最後加總
-s:只列出總和命令行

4.3-4.4 磁盤分區

fdisk命令

fdisk用來對小於2T的磁盤進行分區,若是大於2T需用parted工具。code

語法: fdisk [-l] [設備名稱]
用法說明:
加-l表示查看磁盤設備以及分區;不加-l表示對指定設備進行分區。內存

-l:後面不跟設備名會列出系統中全部的磁盤設備以及分區表,加上設備名會列出設備的分區表。虛擬機

[root@3 ~]# fdisk -l

磁盤 /dev/sda:32.2 GB, 32212254720 字節,62914560 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x00009bac

   設備 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
/dev/sda3         4605952    62914559    29154304   83  Linux

對磁盤進行分區

在關機(虛擬機)狀態爲虛擬機增長一塊虛擬磁盤!

[root@3 ~]# fdisk -l    啓動後查看磁盤情況

磁盤 /dev/sda:32.2 GB, 32212254720 字節,62914560 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x00009bac

   設備 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
/dev/sda3         4605952    62914559    29154304   83  Linux

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

開始分區:

[root@3 ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x6f751d98 建立新的 DOS 磁盤標籤。

命令(輸入 m 獲取幫助):m
命令操做
   a   toggle a bootable flag   
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition    
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

經常使用選項:n、p、b、d

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分區號 (1-4,默認 1):
起始 扇區 (2048-20971519,默認爲 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認爲 20971519):+2G
分區 1 已設置爲 Linux 類型,大小設爲 2 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分區號 (2-4,默認 2):2
起始 扇區 (4196352-20971519,默認爲 4196352):
將使用默認值 4196352
Last 扇區, +扇區 or +size{K,M,G} (4196352-20971519,默認爲 20971519):+2G
分區 2 已設置爲 Linux 類型,大小設爲 2 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    12584959     1048576   83  Linux

可建立4個主分區,若是想建立更多分區須要使用擴展分區,擴展分區+主分區數目最多爲4個。

命令(輸入 m 獲取幫助):n   
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.     
即建立4個主分區後沒法再建立新分區!!!

命令(輸入 m 獲取幫助):d    刪除一個主分區!!!
分區號 (1-4,默認 4):4
分區 4 已刪除

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e    建立一個擴展分區!!!
已選擇分區 4
起始 扇區 (10487808-20971519,默認爲 10487808):
將使用默認值 10487808
Last 扇區, +扇區 or +size{K,M,G} (10487808-20971519,默認爲 20971519):+4G    
分區 4 已設置爲 Extended 類型,大小設爲 4 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended

接下來在擴展分區下繼續建立分區——邏輯分區(此時再也不詢問所建立分區的類型)

命令(輸入 m 獲取幫助):n
All primary partitions are in use
添加邏輯分區 5
起始 扇區 (10489856-18876415,默認爲 10489856):+1G
值超出範圍。
起始 扇區 (10489856-18876415,默認爲 10489856):
將使用默認值 10489856
Last 扇區, +扇區 or +size{K,M,G} (10489856-18876415,默認爲 18876415):+1G
分區 5 已設置爲 Linux 類型,大小設爲 1 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended
/dev/sdb5        10489856    12587007     1048576   83  Linux

刪除分區:刪除主分區後主分區號一塊兒被刪除,做爲預留號留空;刪除邏輯分區後,邏輯分區號不會留空

命令(輸入 m 獲取幫助):d
分區號 (1-6,默認 6):1
分區 1 已刪除

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended
/dev/sdb5        10489856    12587007     1048576   83  Linux
/dev/sdb6        12589056    14686207     1048576   83  Linux

命令(輸入 m 獲取幫助):d
分區號 (2-6,默認 6):5
分區 5 已刪除

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x6f751d98

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    10487807     1048576   83  Linux
/dev/sdb4        10487808    18876415     4194304    5  Extended
/dev/sdb5        12589056    14686207     1048576   83  Linux   
   注意扇區號的變化!!!

劃分完成後輸入q直接退出,不保留分區,輸入w會保存分區配置!
先建立擴展分區:

[root@3 ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x210e6716 建立新的 DOS 磁盤標籤。

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x210e6716

   設備 Boot      Start         End      Blocks   Id  System

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): e
分區號 (1-4,默認 1):
起始 扇區 (2048-20971519,默認爲 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認爲 20971519):+3G  
分區 1 已設置爲 Extended 類型,大小設爲 3 GiB

命令(輸入 m 獲取幫助):p

磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標籤類型:dos
磁盤標識符:0x210e6716

   設備 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6293503     3145728    5  Extended

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)

先建立擴展分區時,再添加分區時,分區類型提示發生變化。
刪除擴展分區時會把其下邏輯分區同時刪除。
擴展分區不能被格式化!

擴展 parted命令

咱們在課上講的fdisk分區工具,它的分區格式爲MBR,特色是,最多分4個主分區,磁盤大小不能超過2T。而GPT分區格式,突破了這些限制,它沒有主分區、擴展分區、邏輯分區之分,在一塊磁盤上最多能夠分128個分區出來,支持大於2T的分區,最大卷可達18EB。 相信,隨着存儲級別的升級,未來的分區格式逐漸會淘汰MBR,而GPT成爲主流。

parted工具經常使用功能:

當在命令行輸入parted後,進入parted命令的交互模式。輸入help會顯示幫助信息,下面講一下經常使用功能:

  • check:簡單檢查文件系統。建議使用其餘命令檢查文件系統,如fsck
  • help:顯示幫助信息
  • mklabel:建立分區表,即便用msdos(MBR)仍是使用gpt,或者是其餘方式分區表
  • mkfs:建立文件系統。該命令不支持ext3格式,所以建議不使用,最好使用parted分區完成以後,退出parted交互模式,用其餘命令濟寧分區,eg:mkfs.ext3
  • mkpart:建立分區
    • 語法:
      mkpart PART-TYPE [FS-TYPE] START END
    • PART-TYPE類型主要有primary(主分區), extended(擴展分區), logical(邏輯區). 擴展分區和邏輯分區只對msdos。
    • fs-type 文件系統類型,主要有fs32,NTFS,ext2,ext3等。
    • start end 分區的起始和結束位置。
  • mkpartfs: 創建分區及其文件系統。目前還不支持ext3文件系統,所以不建議使用該功能。最後是分好區後,退出parted,而後用其餘命令創建文件系統。
  • print: 輸出分區信息。該功能有3個選項:
    • free: 顯示該盤的全部信息,並顯示磁盤剩餘空間
    • number: 顯示指定的分區的信息
    • all: 顯示全部磁盤信息
  • resize: 調整指定的分區的大小。目前對ext3格式支持不是很好,因此不建議使用該功能。
  • rescue: 恢復不當心刪除的分區。若是不當心用parted的rm命令刪除了一個分區,那麼能夠經過rescue功能進行恢復。恢復時須要給出分區的起始和結束的位置。而後parted就會在給定的範圍內去尋找,並提示恢復分區。
  • rm:刪除分區。命令格式 rm number 。如:rm 3 就是將編號爲3的分區刪除。
  • select:選擇設備。當輸入parted命令後直接回車進入交互模式是,若是有多塊硬盤,須要用select 選擇要操做的硬盤。如:select /dev/sdb。
  • set:設置標記。更改指定分區編號的標誌。標誌一般有以下幾種:boot hidden raid lvm 等。 boot 爲引導分區,hidden 爲隱藏分區,raid 軟raid,lvm 爲邏輯分區。eg:set 3 boot on 設置3分區爲啓動分區。

注: 以上內容爲parted經常使用的功能,因爲該工具目前對ext3支持得不是很好,所以有些功能沒法應用,好比move(移動分區)和resize等。

parted分區功能事例

一、用命令模式 爲/dev/sdb建立gpt類型文件分區表,並分500G分區。而後爲該分區建立ext3文件系統。並將該分區掛載在/test文件夾下。
#  parted  /dev/sdb  mklabel     —建立分區表
#  parted  /dev/sdb  mkpart  ext3  0  500000    —建立500G分區/dev/sdb1
# mkfs.ext3  /dev/sdb1      —-將分區/dev/sdb1格式化成ext3格式文件系統
# mount  /dev/sdb1 /test   —將/dev/sdb1 掛載在/test下
若是讓系統自動掛載/dev/sdb1 需手工編輯/etc/fstab文件。並在文件末尾添加以下內容:
/dev/sdb1             /test                ext3    defaults        0 0
二、建立大小爲4G的交互分區。因爲已經建立了500G的/dev/sdb1 ,所以再建立的分區爲/dev/sdb2
# parted /dev/sdb mkpart swap 500000 504000 —建立4G分區/dev/sdb2
# mkswap  /dev/sdb2   —-將/dev/sdb2建立爲交換分區
# swapon /dev/sdb2   —-激活/dev/sdb2
若是讓系統自動掛載/dev/sdb2這個交換分區,需手工編輯/etc/fstab文件。並在文件末尾添加以下內容:
/dev/sdb2             swap                swap    defaults        0 0
三、恢復被誤刪除的分區(也能夠參考testdisk命令)。因爲parted直接寫磁盤,所以一旦不當心刪除了某一分區,建議當即用rescue恢復。下面經過事例來理解恢復過程。
# parted /dev/sdb mkpart ext3 504000 514000 —-建立10G分區/dev/sdb3
# mkfs.ext3 /dev/sdb3  —將/dev/sdb3格式化成ext3文件系統。
# parted /dev/sdb rm 3 —-刪除/dev/sdb3
# parted /dev/sdb rescue 504000 514000    —依照屏幕提示,輸入yes便可恢復被誤刪除分區
相關文章
相關標籤/搜索