Linux下的磁碟分區

来源:https://www.cnblogs.com/lbole/archive/2018/04/22/8904298.html
-Advertisement-
Play Games

一、硬碟介面類型 硬碟的介面主要有IDE、SATA、SCSI 、SAS和光纖通道等五種類型。其中IDE和SATA介面硬碟多用於家用產品中,也有部分應用於伺服器,SATA是一種新生的硬碟介面類型,已經取代了大部分IDE介面應用。SCSI 、SAS主要應用於伺服器上,普通家用設備一般不支持SCSI和SA ...


一、硬碟介面類型

  硬碟的介面主要有IDE、SATA、SCSI 、SAS和光纖通道等五種類型。其中IDE和SATA介面硬碟多用於家用產品中,也有部分應用於伺服器,SATA是一種新生的硬碟介面類型,已經取代了大部分IDE介面應用。SCSI 、SAS主要應用於伺服器上,普通家用設備一般不支持SCSI和SAS介面。SAS也是是一種新生的硬碟介面類型,可以和SATA以及部分SCSI設備無縫結合。光纖通道最初設計也不是為了硬碟設計開發的介面,是專門為網路系統設計的,但隨著存儲系統對速度的需求,才逐漸應用到硬碟系統中,並且其只應用在高端伺服器上價格昂貴。

二、硬碟和分區

  Linux中主要有兩種分區類型,分別為MBR(Master Boot Record)和GPT(GUID Partition Table),是在磁碟上存儲分區信息的兩種不同方式。這些分區信息包含了分區從哪裡開始的信息,這樣操作系統才知道哪個扇區是屬於哪個分區的,以及哪個分區是可以啟動的。在磁碟上創建分區時,你必須在MBR和GPT之間做出選擇。

  在Linux中會把設備映射成為一個/dev目錄下的系統文件,IDE介面類型的硬碟設備映射的文件名稱首碼為“hd”,SCSI、SATA、SAS等介面的硬碟設備映射的文件名稱首碼為“sd”(部分虛擬機或者雲主機的名稱可能是其他的,比如“vd”),後面拼接從“a”開始一直到“z”用來區分不同的硬碟設備,在硬碟名稱後面拼接數字形式的分區號用來區分不同的分區。

1、MBR分區
  MBR的意思是“主引導記錄”,它是存在於驅動器開始部分的一個特殊的啟動扇區。這個扇區包含了已安裝的操作系統的啟動載入器和驅動器的邏輯分區信息。MBR支持最大2TB磁碟,它無法處理大於2TB容量的磁碟。MBR格式的磁碟分區主要分為基本分區(primary partion)和擴展分區(extension partion)兩種主分區和擴展分區下的邏輯分區。主分區總數不能大於4個,其中最多只能有一個擴展分區。且基本分區可以馬上被掛載使用但不能再分區,擴展分區必須再進行二次分區後才能掛載。擴展分區下的二次分區被稱之為邏輯分區,邏輯分區數量限制視磁碟類型而定。

  MBR的主分區號為1-4,邏輯分區號為從5開始累加的數字。比如設備主板上裝了4塊硬碟,分別為2塊IDE介面硬碟,1塊SCSI介面硬碟和一塊SATA介面硬碟。其中2塊IDE介面硬碟的分區策略為2個主分區和2個邏輯分區,SCSI分區策略為3個主分區和3個邏輯分區,SATA分區策略為4個主分區。硬碟文件和分區名稱如下:

  硬碟  主分區1 主分區2 主分區3  主分區4  邏輯分區1  邏輯分區2  邏輯分區3 ......  邏輯分區n
IDE1 /dev/hda /dev/hda1(p) /dev/hda2(p) /dev/hda3(e) / /dev/hda5(l) /dev/hda6(l) / ...... /
IDE2 /dev/hdb /dev/hdb1(p) /dev/hdb2(p) /dev/hdb3(e) / /dev/hdb5(l) /dev/hdb6(l) / ...... /
SCSI /dev/sda /dev/sda1(p) /dev/sda2(p) /dev/sda3(p) /dev/sda4(e) /dev/sda5(l) /dev/sda6(l) /dev/sda7(l) ...... /
SATA /dev/sdb /dev/sdb1(p) /dev/sdb2(p) /dev/sdb3(p) /dev/sdb4(p) / / / ...... /

  其中分區名稱後面的(p)代表基本分區,(e)代表擴展分區,(l)代表邏輯分區。需要註意的是,如果分區策略中存在邏輯分區,則說明一定會有擴展分區,那麼基本分區數則最多只能有3個,擴展分區數最多只能是1個,如果沒有擴展分區則可以創建4個基本分區。想要創建邏輯分區,則必須先將唯一的擴展分區創建出來,並且如果刪除了擴展分區,那麼它下麵的所有邏輯分區也會被自動刪除。

  如果是SCSI介面硬碟則最多只能有15(其中擴展分區不能直接使用所以不計算)個分區,其中主分區最多4個,邏輯分區最多12個。IDE介面硬碟最多只能有63(其中擴展分區不能直接使用所以不計算)個分區,其中主分區最多4個,邏輯分區最多60個。

2、GPT分區

  GPT意為GUID分區表,驅動器上的每個分區都有一個全局唯一的標識符(globally unique identifier,GUID)。支持的最大磁碟可達18EB,它沒有主分區和邏輯分區之分,每個硬碟最多可以有128個分區,具有更強的健壯性與更大的相容性,並且將逐步取代MBR分區方式。GPT分區的命名和MBR類似,只不過沒有主分區、擴展分區和邏輯分區之分,分區號直接從1開始累加一直到128。

三、邏輯捲

   LVM(邏輯捲)的產生是因為傳統的分區一旦分區好後就無法線上擴充空間,也存在一些工具能實現線上擴充空間但是還是會面臨數據損壞的風險;傳統的分區當分區空間不足時,一般的解決辦法是再創建一個更大的分區將原分區卸載然後將數據拷貝到新分區,但是在企業的生產系統往往不允許停機或者允許停機的時間很短,LVM就能很好的解決線上擴充空間的問題,而且不會對數據造成影響,LVM還能通過快照在備份的過程中保證日誌文件和表空間文件在同一時間點的一致性。

  在LVM中PE(Physical Extend)是捲的最小單位,預設4M大小,就像我們的數據是以頁的形式存儲一樣,捲就是以PE的形式存儲。PV(Physical Volume)是物理捲,如果要使用邏輯捲,首先第一步操作就是將物理磁碟或者物理分區格式化成PV,格式化之後PV就可以為邏輯捲提供PE了。VG(Volume Group)是捲組,VG就是將很多PE組合在一起生成一個捲組,當然這裡的PE是可以跨磁碟的,如果當前伺服器磁碟空間不足就可以增加一個新磁碟對當前系統不會產生任何影響。LV(Logical Volume)是邏輯捲,邏輯捲最終是給用戶使用的,前面幾個都是為創建邏輯捲做的準備,創建邏輯捲的大小隻要不超過VG剩餘空間就可以。

四、文件系統

  當硬碟分區被創建完成之後,還並不能直接掛載到目錄上存儲文件,需要選擇合適的文件系統進行格式化。常見的分區類型有FAT32、FAT16、NTFS、HP-UX等,而專供Linux使用的主流的一些分區有ext2/3/4、physical volume (LVM) 、softwareRAID、swap、vfat、xfs等。其中:

  1、ext2/3/4:是適合Linux的文件系統類型,由於ext3文件系統多了日誌記錄功能,因此系統恢復起來更加快速,ext4是ext3的升級,效率更加高,因此建議使用預設類型ext4類型,而不要使用ext2/3;

  2、physical volume (LVM):這是一種彈性調整文件系統大小的機制,即可以讓文件系統變大或變小,而不改變原文件數據的內容,功能不錯,但性能不佳。

  3、softwareRAID:利用Linux系統的特性,用軟體模擬出磁碟陣列功能。

  4、swap:就是記憶體交換空間。由於swap並不會使用到目錄樹的掛載,因此用swap就不需要指定掛載點。

  5、vfat:同時被Linux與windows所支持的文件系統類型。如果主機硬碟同事存在windows和linux兩種操作系統,為了進行數據交換,可以使用該文件系統。

  6、xfs:也是一個文件系統類型,在centos7中將被作為預設的文件系統類型,替換ext4。

五、使用fdisk操作分區

  本文主要以CentOS 7發行版的Linux作為實驗,我們使用Fdisk工具來操作分區,Fdisk 是各種 Linux 發行版本中最常用的分區工具。

  首先輸入 fdisk -h 命令查看幫助信息:

[root@localnat201 ~]# fdisk -h
用法:
fdisk [選項] <磁碟> 更改分區表
fdisk [選項] -l <磁碟> 列出分區表
fdisk -s <分區> 給出分區大小(塊數)

選項:
-b <大小> 扇區大小(5121024、2048或4096)
-c[=<模式>] 相容模式:“dos”或“nondos”(預設)
-h 列印此幫助文本
-u[=<單位>] 顯示單位:“cylinders”(柱面)或“sectors”(扇區,預設)
-v 列印程式版本
-C <數字> 指定柱面數
-H <數字> 指定磁頭數
-S <數字> 指定每個磁軌的扇區數

  從中我們可以看出,使用 fdisk -l 命令可查看分區表信息:

[root@localnat201 ~]# fdisk -l

磁碟 /dev/sda:32.2 GB, 32212254720 位元組,62914560 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標簽類型:dos
磁碟標識符:0x000b1bc3

   設備 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    62914559    30407680   8e  Linux LVM

磁碟 /dev/sdb:53.7 GB, 53687091200 位元組,104857600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組


磁碟 /dev/mapper/cl-root:29.0 GB, 28982640640 位元組,56606720 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組


磁碟 /dev/mapper/cl-swap:2147 MB, 2147483648 位元組,4194304 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組

  從中我們可以看出,有4個設備,分別為/dev/sda、/dev/sdb、/dev/mapper/cl-root、/dev/mapper/cl-swap。其中/dev/sda硬碟已經有2個分區分區為:/dev/sda1和/dev/sda2。/dev/mapper/cl-root和/dev/mapper/cl-swap兩個設備是/dev/sda2分區創建的邏輯捲。這裡的/dev/sdb硬碟設備並沒有被分區,我們則是需要來操作這個硬碟,至於如何操作邏輯捲後面會講到。

  輸入 fdisk /dev/sdb 命令,對/dev/sda硬碟的分區表進行操作:

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

更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁碟標識符 0xc72a6f6a 創建新的 DOS 磁碟標簽。

  我們輸入"m"選項可以查看到幫助信息:

命令(輸入 m 獲取幫助):m
命令操作
   a   toggle a bootable flag 切換可引導標誌
   b   edit bsd disklabel 編輯BSD磁碟標簽
   c   toggle the dos compatibility flag 切換DOS相容性標誌
   d   delete a partition 刪除分區
   g   create a new empty GPT partition table 創建一個新的空GPT分區表
   G   create an IRIX (SGI) partition table 創建一個ILIX(SGI)分區表
   l   list known partition types 列出已知分區類型
   m   print this menu 列印此菜單
   n   add a new partition 添加新分區
   o   create a new empty DOS partition table 創建一個新的空DOS分區表
   p   print the partition table 列印分區表
   q   quit without saving changes 不保存更改退出
   s   create a new empty Sun disklabel 創建一個新的空太陽標簽
   t   change a partition's system id 更改分區的系統ID
   u   change display/entry units 更改顯示/輸入單元
   v   verify the partition table 驗證分區表
   w   write table to disk and exit 將表寫入磁碟並退出
   x   extra functionality (experts only) 額外功能(僅專家)

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

  從上面的幫助信息中,可以得知一些選項的用途。這裡主要註意"d"、"n"、"q"、"g"、"w"等選項。首先要明確分區格式,fdisk預設的分區格式是msdos(mbr),在此可輸入"g"選項,將分區格式修改為GPT,不過在修改完保存退出之後,在輸入 fdisk /dev/sdb 命令進入分區模式,會出現 WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. 信息,提示fdisk gpt分區是新的功能,目前還在實驗階段。所以如果要進行GPT分區,那麼推薦使用 parted 命令,後面會介紹到。

  那麼首先輸入"n"選項來開始創建分區:

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 

  可以看到交互界面列印的信息,提示需要選擇一個分區類型,"p":為基本分區(預設);"e":為擴展分區。在此我們選擇"p",創建一個基本分區:

Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p 分區號 (
2-4,預設 2):

  交互界面提示需要選擇一個分區號,範圍為2-4。由於已經存在了一個基本分區,所以只可選擇2、3、4(預設2,順序累加)。在此我們輸入2:

Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分區號 (2-4,預設 2):2
起始 扇區 (2099200-314572799,預設為 2099200):

  可以看到交互界面提示序號選擇其實扇區,預設為剩餘未被分配的最小扇區,推薦選擇預設(直接點擊回車);

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分區號 (2-4,預設 2):2
起始 扇區 (2099200-314572799,預設為 2099200):
將使用預設值 2099200
Last 扇區, +扇區 or +size{K,M,G} (2099200-314572799,預設為 314572799):

  交互界面提示,要輸入需要分配的截止扇區,預設為未被分配的最小扇區,此處推薦預設(直接點擊回車):

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分區號 (2-4,預設 2):2
起始 扇區 (2099200-314572799,預設為 2099200):
將使用預設值 2099200
Last 扇區, +扇區 or +size{K,M,G} (2099200-314572799,預設為 314572799):
將使用預設值 314572799
分區 2 已設置為 Linux 類型,大小設為 149 GiB

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

  可以看到又回到了最初的交互界面,這表示分區表已經設置成功,輸入選項q表示要放棄本次分區表的修改並退出,w選項表示保存本次分區表的修改並退出,此處選擇w表示將分區信息寫入到磁碟,此次分區完成;

  回到最初操作分區表的地方,選擇"d"選項,刪除分區的功能:

命令(輸入 m 獲取幫助):d
分區號 (1,2,預設 2):

  交互界面提示輸入要刪除的分區的分區號,此處選擇2:

命令(輸入 m 獲取幫助):d
分區號 (1,2,預設 2):2
分區 2 已刪除

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

  交互界面提示本次分區表操作成功,輸入選項"w",表示將分區信息寫入到磁碟,此次刪除分區完成。回到最初選擇分區類型的地方,選擇"e",創建擴展分區:

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分區號 (2-4,預設 2):

  交互界面提示要輸入擴展分區的分區號,可選範圍為2-4,此處選擇2:

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分區號 (2-4,預設 2):2
起始 扇區 (2099200-314572799,預設為 2099200):

  交互界面提示輸入要分配給擴展分區的起始扇區,此處選擇預設:

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分區號 (2-4,預設 2):2
起始 扇區 (2099200-314572799,預設為 2099200):
將使用預設值 2099200
Last 扇區, +扇區 or +size{K,M,G} (2099200-314572799,預設為 314572799):

  交互界面提示輸入要分配給擴展分區的截止扇區,此處選擇預設:

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分區號 (2-4,預設 2):2
起始 扇區 (2099200-314572799,預設為 2099200):
將使用預設值 2099200
Last 扇區, +扇區 or +size{K,M,G} (2099200-314572799,預設為 314572799):
將使用預設值 314572799
分區 2 已設置為 Extended 類型,大小設為 149 GiB

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

  交互界面提示本次對分區表的操作已完成,輸入"w"選項,保存本次對分區表的操作;當再次創建分區的時候,交互界面就會將擴展分區的選項"e"替換成為邏輯分區的選項"l":

Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): 

  之後再要創建邏輯分區和之前創建分區的步驟一直,分區完成。至此CentOS中的分區操作已完成;接下來我們需要將物理分區格式化成某一個文件系統,我們使用mkds進行分區格式化操作,輸入 mkfs -h 命令獲取幫助信息:

[root@localhost ~]# mkfs -h
用法:
 mkfs [選項] [-t <類型>] [文件系統選項] <設備> [<大小>]

選項:
 -t, --type=<類型>  文件系統類型;
     fs-options     實際文件系統構建程式的參數
     <設備>         要使用設備的路徑
     <大小>         要使用設備上的塊數
 -V, --verbose      解釋正在進行的操作;
                      多次指定 -V 將導致空運行(dry-run)
 -V, --version      顯示版本信息並退出
                      將 -V 作為 --version 選項時必須是惟一選項
 -h, --help         顯示此幫助並退出

更多信息請參閱 mkfs(8)。

  從幫助信息中我們可以看到,可以使用mkfs -t xfs /dev/sdb1 進行格式化分區:

[root@localnat201 ~]# mkfs -t xfs /dev/sda2 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=624936 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2499744, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

  格式化成xfs時,若提示分區已存在文件系統,則需要在分區前面加上-f選項強行覆蓋,例如: mkfs -t xfs -f /dev/sda2 。被格式化的設備既可以是分區,也可以是邏輯捲。要查看所有分區的文件系統格式則可以使用 df -Th 命令。至此格式化分區完成。分區格式化完成之後則可以將分區掛載到某一個目錄下麵,正式開始使用改分區,我們在系統中創建一個用戶掛載分區的目錄:

[root@localhost ~]# mkdir /data

  將分區掛載到目錄上:

mount /dev/sda2 /data/

  設置開機自動掛載分區到掛載點,編輯 vim /etc/fstab :

#
# /etc/fstab
# Created by anaconda on Sun Jun 25 07:16:25 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=eb697457-a097-4263-8bbf-a75aa632d27c /                       ext4    defaults        1 1

/dev/sda2                               /data                   xfs    defaults        0 0

  如果想要卸載掛載點:

[root@localnat201 ~]# umount /dev/sda2

  至此掛載分區已完成;

六、使用parted操作分區

  parted是一個可以分區併進行分區調整的工具,他可以創建,破壞,移動,複製,調整ext2 linux-swap fat fat32 reiserfs類型的分區,可以創建,調整,移動Macintosh的HFS分區,檢測jfs,ntfs,ufs,xfs分區。既可以創建MBR分區,又可以用來創建GPT分區,如果你的硬碟大於2TB則必須要使用parted來創建GPT格式的分區。

  可以使用 parted -h 命令查看使用說明

[root@localnat201 ~]# parted -h
Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]
Apply COMMANDs with PARAMETERS to DEVICE.  If no COMMAND(s) are given, run in
interactive mode.

選項:
  -h, --help                      顯示此求助信息
  -l, --list                      lists partition layout on all block devices 列出所有塊設備上的分區佈局
  -m, --machine                   displays machine parseable output 顯示機器可分析輸出
  -s, --script                    從不提示用戶
  -v, --version                   顯示版本
  -a, --align=[none|cyl|min|opt]  alignment for new partitions

命令:
  align-check TYPE N                        check partition N for TYPE(min|opt)
        alignment
  help [COMMAND]                           print general help, or help on
        COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition
        table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table,
        available devices, free space, all found partitions, or a particular
        partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START
        and END
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected
        device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition
        NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and
        copyright information of GNU Parted

Report bugs to bug[email protected]

   從幫助信息中可看出,使用 parted -l 命令可查看分區表信息:

[root@localnat201 ~]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  標誌
 1      1049kB  1075MB  1074MB  primary  xfs          啟動
 2      1075MB  32.2GB  31.1GB  primary               lvm

錯誤: /dev/sdb: unrecognised disk label
Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 107GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/cl-swap: 2147MB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Fla  gs: Number Start End Size File system 標誌 1 0.00B 2147MB 2147MB linux-swap(v1) Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/cl-root: 29.0GB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system 標誌 1 0.00B 29.0GB 29.0GB xfs

  從中可看出與上面 fdisk -l 命令返回的差不多的信息。總共有4個設備:/dev/sda和/dev/sdb為物理設備,/dev/mapper/cl-swap和/dev/mapper/cl-root為邏輯捲創建的設備。可以看到/dev/sdb還沒有分區,並且還看到上面有一個錯誤信息 錯誤: /dev/sdb: unrecognised disk label 。這是由於該磁碟設備沒有設置上標簽(label)所以會有錯誤,只需要設置了標簽就可以了。

   這裡我們使用 parted /dev/sdb 命令開始分區:

[root@localnat201 ~]# parted /dev/sdb 
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) 

  輸入help選項,查看幫助信息:

[root@localnat201 ~]# parted /dev/sdb 
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) 

  也可以在"help"選項後面加上具體的命令,可以查看具體命令的幫助信息;接下來使用 mklabel gpt 或者 mktable gpt 命令格式化分區類型和設置標簽:

[root@localnat201 ~]# parted /dev/sdb 
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) mklabel gpt                                                      
(parted)

  此處可選擇modos(mbr)和gpt類型,如果修改的分區標簽類型,則分區所有數據將會丟失;接下來可輸入 print 選項,列印分區信息:

(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End  Size  File system  Name  標誌

(parted) 

  由此可以看出分區已經是GPT分區格式;加下來需要創建分區,創建分區需要使用 mkpart 命令,在此我們可以輸入 help mkpart 命令查看幫助信息:

(parted) help mkpart                                                      
  mkpart PART-TYPE [FS-TYPE] START END     make a partition

    分區類型是:primary(主分區)、logical(邏輯分區)、extended(擴展分區)之一
    文件系統類型是以下任意一項:btrfs, nilfs2, ext4, ext3, ext2, fat32, fat16, hfsx, hfs+, hfs, jfs, swsusp, linux-swap(v1), linux-swap(v0), ntfs, reiserfs, hp-ufs, sun-ufs, xfs, apfs2, apfs1, asfs, amufs5, amufs4,
        amufs3, amufs2, amufs1, amufs0, amufs, affs7, affs6, affs5, affs4, affs3, affs2, affs1, affs0, linux-swap, linux-swap(new), linux-swap(old)
        START and END are disk locations, such as 4GB or 10%.  Negative values count from the end of the disk.  For example, -1s specifies exactly the last sector.
        
        'mkpart' makes a partition without creating a new file system on the partition.  FS-TYPE may be specified to set an appropriate partition ID.

  我們用 mkpart xfs 0 100% 命令創建分區,xfs是文件系統類型(這裡只是做說明或者說是分區的名稱,分區完成之後是需要使用 mkfs 命令進行真正的格式化的,否則不能掛載), 0是磁碟的起始位置,100%是磁碟的結束位置:

(parted) mkpart primary xfs 0 100%                                        
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放棄/Cancel?

  創建的過程中,我們會看到有警告信息 The resulting partition is not properly aligned for best performance. ,說分區沒有正確對齊,會影響最佳新能。這裡說的是磁碟的位置沒有給一個合適的值。其實在使用fdisk分區的時候,會有預設的起始和結束扇區,所以如果不是很確定這個值,那麼可以先試用fdisk命令進入分區模式,看一下預設的起始扇區和結束扇區是多少。我這裡的起始扇區是2048,但由於parted預設是M為位置單位,所以這裡需要使用s說明是扇區為單位。結束扇還是100%,所以命令為 mkpart xfs 2048s 100% :

(parted) mkpart xfs 2048s 100%                                            
(parted)

  其中不需要指明分區類型是主分區還是邏輯分區,GPT分區只有一種分區格式,如果是msdos(mbr)才需要指明。可以使用 rm 分區號 命令刪除分區,使用 quit 命令退出當前分區模式,至此parted命令進行GPT分區已完成;格式化分區和掛載分區與上面fdisk分區中的方式一樣。

七、使用邏輯捲

   首先我們需要將物理設備(可以是物理磁碟/dev/sdb、也可以是物理分區/dev/sdb1)格式化為PV(物理捲),在此我們使用 parted -l 命令查看我們有哪些可供使用的物理設備:

[root@localnat201 ~]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  標誌
 1      1049kB  1075MB  1074MB  primary  xfs          啟動
 2      1075MB  32.2GB  31.1GB  primary               lvm


Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  標誌
 1      1049kB  21.5GB  21.5GB               xfs


錯誤: /dev/sdc: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)                                    
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 

Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/cl-swap: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags: 

Number  Start  End     Size    File system     標誌
 1      0.00B  2147MB  2147MB  linux-swap(v1)


Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/cl-root: 29.0GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags: 

Number  Start  End     Size    File system  標誌
 1      0.00B  29.0GB  29.0GB  xfs

  這裡我們拋開已經做過分區和已經存在的物理捲的一些設備,其中/dev/sdb和/dev/sdc這兩個物理磁碟是需要我們關註的。我們可以看到/dev/sdb這塊磁碟已經有了一個分區,分區號是1也就是/dev/sdb1分區(gpt分區表只展示分區號,只要將磁碟名稱拼上分區號就是分區名稱),而/dev/sdc磁碟並沒有做過分區。所以我們首先需要使用 pvcreate 命令將/dev/sdb1和/dev/sdc格式化成PV:

[root@localnat201 ~]# pvcreate /dev/sdb1 /dev/sdc 
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc" successfully created.
[root@localnat201 ~]#

  這裡可以看到創建成功了,其中pvcreate是創建命令,後面參數是需要初始化的物理設備,多個設備之間使用空格分隔。我們可以使用 pvdisplay 命令或者 pvs 命令查看已經存在的PV信息:

[root@localnat201 ~]# pvcreate /dev/sdb1 /dev/sdc 
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc" successfully created.
[root@localnat201 ~]# clear
[root@localnat201 ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               cl
  PV Size               <29.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              7423
  Free PE               1
  Allocated PE          7422
  PV UUID               KdNi7s-YftA-YY9W-hK7a-PHw1-j7n2-ln4cLg
   
  "/dev/sdc" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               AbmsNB-2NUK-IxJA-QYY7-N81f-avOz-wyMKiR
   
  "/dev/sdb1" is a new physical volume of "<20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               <20.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               sts9D4-P47z-Qrj2-WaWX-9wEU-o8jo-Y70xgb
   
[root@localnat201 ~]# pvs
  PV         VG Fmt  Attr PSize   PFree  
  /dev/sda2  cl lvm2 a--  <29.00g   4.00m
  /dev/sdb1     lvm2 ---  <20.00g <20.00g
  /dev/sdc      lvm2 ---   20.00g  20.00g

  如果有需要我們也可以使用 pvremove 命令刪除物理捲:

[root@localnat201 ~]# pvremove /dev/sdc 
  Labels on physical volume "/dev/sdc" successfully wiped.
[root@localnat201 ~]# 

  我們可以看到有三個設備已經被初始化成了PV,這裡不需要關註/dev/sda2分區,這是在安裝系統時自動初始化的PV,這裡/dev/sdb1分區和/dev/sdc磁碟是我們這次初始化的PV。既然創建了PV那麼就需要VG(PV組)了,下麵我們來使用 vgcreate 命令來創建VG(捲組):

[root@localnat201 ~]# vgcreate myvg /dev/sdb1 
  Volume group "myvg" successfully created
[root@localnat201 ~]#

  可以看見已經創建成功,其中vgcreate是創建命令myvg是這個VG組的名稱,/dev/sdb1是指將這個已經初始化成PV的設備添加套這個捲組中,如果需要添加多個設備使用空格分隔。我們可以使用 vgdisplay 或者 vgs 命令查看捲組信息:

[root@localnat201 ~]# vgdisplay 
  --- Volume group ---
  VG Name               cl
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <29.00 GiB
  PE Size               4.00 MiB
  Total PE              7423
  Alloc PE / Size       7422 / 28.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               EZIlfD-2r61-x8RC-qLwl-Nsqp-D5zr-J8pPfI
   
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <20.00 GiB
  PE Size               4.00 MiB
  Total PE              5119
  Alloc PE / Size       0 / 0
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引用類型和值類型,是一個老生常談的問題了。裝箱拆箱相信也是猿猿都知,但是還是跟著CLR via C#加深下印象,看有沒有什麼更加根本和以前被忽略的知識點。 引用類型: 引用類型有哪些這裡不過多贅述,來關心一下它在電腦內部的實際操作,引用類型總是從托管堆分配,線程棧上存儲的是指向堆上數據的引用地址, ...
  • Jquery必須大於1.83 layui必須是all,否則不顯示 <script src="../js/jquery-1.8.3.min.js"></script> <script src="../layui/layui.all.js"></script> html代碼 <input id="abo ...
  • VS2015 推薦插件///////////////////////////////////////////////////////////////////////////////////////////代碼輔助及顯示增強SuperCharger是原來的CodeMap在VS2013/VS2015上的 ...
  • 閱讀筆記不是講述這本書的內容,只是提取了其中一部分我認為比較重要或者還沒有掌握的知識,所以如果有錯誤或者模糊之處,請指正,謝謝! 對於C# 6.0才有的新語法基本都有標記,開發的時候要註意使用,以免造成不相容現象。 一。第一章 1.控制臺中可以使用,其會在每一次輸入的時候獲取鍵盤輸入的值。可以用Co ...
  • 初學C#,整天對著業務邏輯,寫反反覆復的“過程型”代碼邏輯十分枯燥,不如用點新東西提升一下代碼效率,讓代碼看起來更有逼格?! 好,下麵我們看看C#中簡單易學的泛型。 首先,我寫了一個這樣的方法 Say(string spk),併在主函數中進行調用: 如果,我說:123,則需要另一個方法 Say(in ...
  • 感謝兩位兩位大佬: https://blog.csdn.net/l1028386804/article/details/61417166 https://www.cnblogs.com/runningsmallguo/p/6239215.html 1.首先我們要下載好文件memcached.exe, ...
  • Nginx 場景實踐篇 一、Nginx作為靜態資源Web服務 1、動態資源和靜態資源 客戶端請求的頁面如果是靜態網頁,那麼伺服器會直接把靜態網頁的內容響應給客戶端。如果客戶端請求的是動態網頁,伺服器需要先把動態網頁換成靜態網頁,然後再把轉換後的靜態網頁響應給客戶端 靜態資源的幾種類型 瀏覽器渲染:H ...
  • 1.生成密鑰。 ssh-keygen命令用來生成密鑰對,基本的選項: -t 指定的密鑰類型(rsa,rsa1,dsa,ecdsa)。 -p 指定密語。 -f 指定生成密鑰文件的命名。 -c 添加註釋。 2.將公鑰部署到Linux上和下載私鑰到本地。 下載密鑰可以使用sz命令或scp命令或者filez ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...