轉載,資料來自網絡。
fdisk
fdisk 相關鏈接。
fdisk 分區,格式化,掛載。
https://blog.csdn.net/yangzhengquan19/article/details/83788277?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
fdisk 命令詳解
https://www.cnblogs.com/xiaofengkang/archive/2011/06/06/2073579.html
合理規劃硬盤分區
https://blog.csdn.net/weixin_33989780/article/details/89994386
擴展分區容量
https://blog.csdn.net/chengxuyuanyonghu/article/details/51746234
分區等基礎 概念。
硬盤種類、物理幾何結構
硬盤的種類主要是SCSI 、IDE 、以及現在流行的SATA等;任何一種硬盤的生產都要一定的標準;隨着相應的標準的升級,硬盤生產技術也在升級;比如 SCSI標準已經經歷了SCSI-1 、SCSI-2、SCSI-3;其中目前咱們經常在服務器網站看到的 Ultral-160就是基於SCSI-3標準的;IDE 遵循的是ATA標準,而目前流行的SATA,是ATA標準的升級版本;IDE是並口設備,而SATA是串口,SATA的發展目的是替換IDE; 硬盤的物理幾何結構是由盤、磁盤表面、柱面、扇區組成,一個張硬盤內部是由幾張碟片疊加在一起,這樣形成一個柱體面;每個碟片都有上下表面;磁頭和磁盤表 面接觸從而能讀取數據;
硬盤分區的劃分標準
硬盤分區由主分區、擴展分區和邏輯分區組成
在一塊硬盤上,如果是MBR分區方式,那麼它的主分區最多隻能有4個,或者3個主分區和1個擴展分區;在擴展分區上我們可以創建多個邏輯分區
分區編號:主分區1-4 ,邏輯分區5.。。。。。
LINUX規定:邏輯分區必須建立在擴展分區之上,而不是建立在主分區上
分區作用:
主分區:主要是用來啓動操作系統的,它主要放的是操作系統的啓動或引導程序,/boot分區最好放在主分區上
擴展分區不能使用的,它只是做爲邏輯分區的容器存在的;我們真正存放數據的是主分區和邏輯分區,大量數據都放在邏輯分區中
如果你用的是GPT的分區方式,那麼它沒有限制主分區個數
注意:從MBR轉到GPT分區或者說從GPT轉到MBR會導致數據全部丟失
文件系統的一個使用流程
存儲介質選擇—》硬盤分區操作;創建分區來容納文件系統;創建分區,這個分區可以是整個硬盤也可以是部分硬盤----》創建文件系統(我們在存儲數據之前,你必須使用文件系統對其分區進行格式化)----》把它掛載到虛擬目錄----》寫入配置文件/etc/fstab
擴展分區也算作主分區,且一個硬盤基本只能有一個擴展分區。
合理的的分區方式
最合理的分區結構:主分區在前,擴展分區在後,然後在擴展分區中劃分邏輯分區;主分區的個數+擴展分區個數要控制在四個之內;比如下面的分區是比較好的;
[主|分區1] [主|分區2] [主|分區3] [擴展分區]
[邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...
[主|分區1] [主|分區2] [擴展分區]
[邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...
[主|分區1] [擴展分區]
[邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...
不合理的分區結構: 主分區包圍擴展分區;比如下面的
[主|分區1] [主|分區2] [擴展分區] [主|分區4] [空白未分區空間]
[邏輯|分區5] [邏輯|分區6] [邏輯|分區7] [邏輯|分區8] ... ...
這樣 [主|分區2] 和 [主|分區4] 之間的 [擴展分區] 是有自由度,但[主|分區4]後的[空白未分區空間]怎麼辦?除非把主分區4完全利用擴展分區後的空間,否則您想在主分區4後再劃一個分區是不可能的,劃分邏輯分區更不可能; 雖然類似此種辦法也符合一個磁盤四個主分區的標準,但這樣主分區包圍擴展分區的分區方法不可取
fdisk - Partition table manipulator for Linux
fdisk linux下的分區工具
fdisk基礎命令
fdisk -l 查看硬盤及分區信息
fdisk -l
可以看到有三個硬盤(使用的VMware Workstations創建的虛擬機),第一塊硬盤 /dev/sda 是創建系統時自動劃分的。/dev/sdb /dev/sdc是後來新增的兩塊硬盤。其中/dev/sdb 已經做了分區,一塊主分區,一塊擴展分區,擴展分區上又創建了一個邏輯分區。/dev/sdc 未創建分區。
單獨看某一塊硬盤 硬盤分區情況 如 /dev/sdb
fdisk -l /dev/sdb
硬盤大小 21.5GB,(其實新增硬盤時時設置的了20G,顯示21.5G應該是換算方式吧2010241024*1024/1000/1000/1000)。一共有4194304 個扇區,每個扇區 大小512 bytes。
Start 一個分區從 X扇區開始
End 一個分區到Y扇區結束。
Blocks 分區大小,單位K。
Id 感覺就是分區的類型Id,在創建分區時使用 l 命令可查看對應列表
System 分區類型
創建分區基本命令
現在,假設要對一個硬盤 /dev/sdb 進行操作,創建分區
fdisk /dev/sdb
會進入創建分區的命令行。輸入m 查看幫助
Command (m for help): m
Command action
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 # 改變分區類型ID 就是改變分區類型
u change display/entry units
v verify the partition table
w write table to disk and exit # 將分區表寫入磁盤並退出
x extra functionality (experts only)
基本上常用的就是上面帶有中文註釋的幾個命令。
創建,添加分區的例子。
已經知道,每個硬盤如果是MBR格式分區,那麼最大隻能有四個主分區(如果有擴展分區,擴展分區也算作主分區),如果是GPT格式,那麼不受限制。parted 工具命令似乎可以設置分區格式,這個自行查閱。。。
現在準備將 /dev/sdc 進行分區,兩個主分區,一個擴展分區。在擴展分區上創建兩個邏輯分區。
進入創建分區命令
fdisk /dev/sdc
使用p 命令查看分區情況
當前沒有任何分區
n命令創建一個主分區
輸入命令n 表示創建一個分區。
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
現在有0個主分區 0個擴展分區 4個空閒分區。(空閒分區一詞不準確,應該是可以再創建的主分區數爲4.)
提示輸入分區類型Select (default p) p 表示主分區,e 表示擴展分區,默認是主分區。
Partition number (1-4, default 1)輸入分區編號 默認就好。自動會按照1,2,3,4順序設置
First sector (2048-62914559, default 2048): 起始扇區,這個最好按默認設置,不然很容易造成空間浪費。
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559):設置j結束扇區,默認是硬盤末尾扇區,就是佔有硬盤剩餘所有空間,也可以輸入佔用空間大小(要帶上單位 K/M/G) 比如 +2G 就是該分區佔用硬盤2G大小空間。fdisk會自動計算結束扇區位置。
設置完畢 用 p 命令查看一下分區情況 可以看到 已經有一個分區了。
再接着設置一個8G的主分區
和創建第一個分區時類似。
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
已經有一個主分區了,還可以再創建的主分區數爲3。
可以看到第二個主分區創建時默認的起始扇區變成了4196352 恰好是第一個主分區結束扇區+1 。這樣空間不會被浪費。
現在已經有兩個主分區了。創建一個擴展分區。(擴展分區不可直接掛在,要先創建邏輯分區)。一般來說,邏輯分區是用來存放數據的地方,主分區之類更多用來存放系統相關。
n 命令用來創建分區
這次選在分區類型時選擇了e 表示創建擴展分區,且在 設置結束扇區時使用了默認值,表示硬盤剩餘空間全部分給擴展分區。
保存設置 退出
現在已經在 /dev/sdc 上創建了兩個主分區,一個擴展分區。可以將分區表寫入磁盤。
使用 w 命令 寫入硬盤並退出
如果感覺設置有誤,放棄本次分區建立 使用 q 命令
w保存修改 並退出分區設置後。使用fdisk -l 查看一下分區情況。重點查看 /dec/sdc
可以看到 /dev/sdc 分區表已經寫入硬盤。
修改分區表
現在想要修改分區表,建立三個主分區 一個擴展分區。三個主分區大小 2 3 5G。再建立兩個邏輯分區。
按照上面的分區建議,擴展分區不應該被主分區包圍,因此要先刪除掉擴展分區和一個主分區,重新劃分大小(只是爲了試驗一下刪除分區操作,現實中別這麼幹,數據會丟失的。。。)
分區工具 操作 /dev/sdc
fdisk /dev/sdc
p 查看當前分區。
d 命令刪除一個分區
刪除分區 d
Partition number (1-3, default 3): 輸入要刪除分區的序號 默認是最後一個。
刪除了兩個分區後。
重新再創建兩個主分區,一個擴展分區
創建邏輯分區
使用 n 命令,這時由於四個主存儲全部佔用,有一個擴展分區存在,
All primary partitions are in use
Adding logical partition 5
所以默認創建一個邏輯分區,分區號5 邏輯分區序號無法設置,從5開始遞增。
w保存退出
硬盤總容量=主分區(包括擴展分區)總容量 + (硬盤未使用)
擴展分區容量=邏輯分區總容量 + 未使用(擴展分區未使用)
擴展分區未全部使用,只分配給了邏輯分區 5G。
測試分區掛載。
主分區和 邏輯分區都是可以格式化後掛載的。擴展分區不行。lsblk 也可以查看硬盤和分區情況
查看硬盤分區情況,重點查看 sdc 可以看到三個主分區大小是 2G 3G 5G 擴展分區是 1K ,因爲擴展分區是維護邏輯分區的表,不是用來真正存儲數據的。
測試掛載 /dev/sdc1 和 /dev/sdc5 分別是一個主分區和一個邏輯分區。
格式化 分區 可以是 ext3, ext4, xfs,比如格式化成ext4。
mkfs.ext4 /dev/sdc1
mkfs.ext4 /dev/sdc5
創建掛載點
mkdir /mnt/sdc1
mkdir /mnt/sdc5
掛載
mount /dev/sdc1 /mnt/sdc1
mount /dev/sdc5 /mnt/sdc5
如果希望開機掛載就把它寫入到 /etc/fstab 文件中。
vi /etc/fstab
加在末尾
/dev/sdc1 /mnt/sdc1 ext4 defaults 0 0
/dev/sdc5 /mnt/sdc5 ext4 defaults 0 0
快速掛載 /etc/fstab 中內容
mount -a
擴展邏輯分區。
這個,侷限性很大,不能當做常規方法使用。 假設邏輯分區掛載到 /mnt/sdc5 然後分區空間不夠用了。現在想要從5G擴容到10G。。。
取消sdc5 掛載
umount -l /mnt/sdc5
編輯 /dev/sdc 分區
fdisk /dev/sdc
p 查看分區情況,記住邏輯卷的初始扇區。
刪除邏輯卷5
d
5
新建邏輯卷 5,初始扇區填寫剛纔查看到的, 分配10G 空間
w 保存退出
分區表重建
partprobe
調整分區
e2fsck -f /dev/sdc5 #檢查分區信息
resize2fs /dev/sdc5 #調整分區大小
成功擴容,儘管成功擴容,確實很大侷限性,比如如果有第二個邏輯分區。。。所以一般在創建分區時儘量計算好大小之類。
關於更改分區類型的 t 等命令,可以自己試驗一下
LVM
lvm 相關鏈接
https://www.cnblogs.com/diantong/p/10554831.html
https://www.cnblogs.com/zhouby/p/10683974.html
基本概念
(1).LVM的工作原理
LVM(Logical Volume Manager)邏輯卷管理,是在硬盤分區和文件系統之間添加的一個邏輯層,爲文件系統屏蔽下層硬盤分區佈局,並提供一個抽象的盤卷,在盤捲上建立文件系統。管理員利用LVM可以在硬盤不用重新分區的情況下動態調整文件系統的大小,並且利用LVM管理的文件系統可以跨越物理硬盤。當服務器添加了新的硬盤後,管理員不必將原有的文件移動到新的硬盤上,而是通過LVM直接擴展文件系統來跨越物理硬盤。
LVM就是通過將底層的物理硬盤封裝,然後以邏輯卷的方式呈現給上層應用。當我們對底層的物理硬盤進行操作時,不再是針對分區進行操作,而是通過邏輯卷對底層硬盤進行管理操作。
(2).基礎術語
物理存儲介質(The physical media):LVM存儲介質,可以是硬盤分區、整個硬盤、raid陣列或SAN硬盤。設備必須初始化爲LVM物理卷,才能與LVM結合使用。
物理卷PV(physical volume):物理卷就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質比較卻包含與LVM相關的管理參數,創建物理卷可以用硬盤分區,也可以用硬盤本身。
卷組VG(Volume Group):LVM卷組類似於非LVM系統中的物理硬盤,一個卷組VG由一個或多個物理卷PV組成。可以在卷組VG上建立邏輯卷LV。
邏輯卷LV(logical volume):類似於非LVM系統中的硬盤分區,邏輯卷LV建立在卷組VG之上。在邏輯卷LV之上建立文件系統。
物理塊PE(physical Extent):物理卷PV中可以分配的最小存儲單元,PE的大小可以指定,默認爲4MB
邏輯塊LE(Logical Extent):邏輯卷LV中可以分配的最小存儲單元,在同一卷組VG中LE的大小和PE是相同的,並且一一相對。
LVM 常用命令
功能 | PV管理命令 | VG管理命令 | LV管理命令 |
---|---|---|---|
scan 掃描 | pvscan | vgscan | lvscan |
create 創建 | pvcreate | vgcreate | lvcreate |
display 顯示 | pvdisplay | vgdisplay | lvdisplay |
remove 移除 | pvremove | vgremove | lvremove |
extend 擴展 | vgextend | lvextend | |
reduce 減少 | vgreduce | lvreduce |
注意:查看命令有scan、display和s(pvs、vgs、lvs)。s是簡單查看對應卷信息,display是詳細查看對應卷信息。而scan是掃描所有的相關的對應卷。
LVM 環境
將fdisk測試創建的 分區全部刪除。只留兩個硬盤 /dev/sdb /dev/sdc 重新創建分區用於 lvm
使用 /dev/sdb 硬盤分區,作爲lvm 的存儲介質。
把/dev/sdb 分成3個主分區(各佔2G),一個擴展分區,再創建兩個邏輯分區(各佔3G)。
分完區,最好設置一下分區的類型爲8e 表示最爲 Linux LVM。在較老的系統中,必須設置才能使用,新系統中不必一定設置成8e了,但設置一下看上去也更直觀表明分區作用 使用 t 來設置分區格式。
創建物理卷 PV
物理卷PV(physical volume):物理卷就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質比較卻包含與LVM相關的管理參數,創建物理卷可以用硬盤分區,也可以用硬盤本身。
已經準備好了分區作爲lvm的存儲介質。現在將這些分區,創建成PV 物理卷
先將三個主分區創建成 LVM物理卷 PV
pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3
使用三個主分區創建物理卷PV。創建完成pvs 查看
查看詳情
pvdisplay
創建卷組 VG
卷組VG(Volume Group):LVM卷組類似於非LVM系統中的物理硬盤,一個卷組VG由一個或多個物理卷PV組成。可以在卷組VG上建立邏輯卷LV。
卷名 PV組 可以在創建卷組的時候設置PE(LE) 大小。 只要加上 -s sizeM
比如vgcreate vg_test /dev/sdb1 /dev/sdb2 /dev/sdb3 -s 8M
即可將PE(LE)大小設置爲 8M
vgcreate VG_new PV ...
創建一個卷組 名爲 vg_test 由三個物理卷PV構成。
vgcreate vg_test /dev/sdb1 /dev/sdb2 /dev/sdb3
查看卷組信息
vgs
vgdisplay
可以看到卷組大小約爲6G 因爲是 三個2G的物理卷PV組成的。。。
創建邏輯卷LV。
現在有一個卷組了,無視掉centos,那個是系統分區時選擇默認分區創建的,也是利用了lvm。不過和現在要學習的無關。。。
創建 一個邏輯卷
lv create -n Name -L Size| -l Number VG --type ?
這個lvm 邏輯卷 可以有多個種類比如 線性卷,條帶卷(條帶式存儲),raidl等等。 在–type後註明即可。
默認不加–type 參數就是線性卷,最基礎的。
在創建邏輯卷時指定邏輯卷大小的方式也有兩種。
-L 指定卷組大小,後跟上卷組大小,比如 200M 2G。
-l 指定卷組佔據的 PE(LE) 數目, 比如 100 2000 (如果PE大小是4M,那就是400M 8000M)
-l 還可以指定佔據空閒 卷組容量的百分比 -l 100%FREE 表示佔據剩餘全部空間。
創建一個 卷名爲 lv_test 大小爲200M的卷。
lvcreate -n lv_test -L 200M vg_test
LV Path 是/dev/vg_test/lv_test 可以看做設置,要使用時掛載該設備。
注 /dev/mapper/vg_test-lv_test和/dev/vg_test/lv_test和/dev/dm-? 是一個設備。
掛載創建好的邏輯卷,文件系統使用ext4。測試擴容,縮減。
如果不使用lvm -r無法動態擴容。需先卸載掛載,擴容完成再重新掛載
創建邏輯卷 分配100M 卷 卷名lv_ext4
lvcreate -n lv_ext4 -L 100M vg_test
設置邏輯卷的 文件系統格式
mkfs.ext4 /dev/vg_test/lv_ext4
創建掛載點
mkdir /mnt/test_ext4
掛載該邏輯卷
mount /dev/vg_test/lv_ext4 /mnt/test_ext4
LV邏輯卷擴容 加上-r參數,直接將文件系統也進行擴容
當然 擴容也不能超過卷組大小
也可以使用 -L 或者 -l 兩個設置大小方式,還增加了+ 不帶+ 號表示擴容至XX大小,帶+號表示原有基礎上增加XX大小
邏輯卷擴容至200M
lvextend -L 200M /dev/vg_test/lv_ext4 -r
LV邏輯捲縮減 加上-r參數,直接將文件系統也進行縮減
邏輯捲縮減前保證文件佔用空間小於縮減後的大小
lvreduce -L 100M /dev/vg_test/lv_ext4 -r
縮小至100M
不加-r 參數,需要手動擴容文件系統。
先取消掛載
umount -l /mnt/test_ext4/
擴展 邏輯卷 大小 至300M
lvextend -L 300M /dev/vg_test/lv_ext4
lvs
檢查文件完整性
e2fsck -f /dev/vg_test/lv_ext4
調整文件系統大小
resize2fs /dev/vg_test/lv_ext4
重新掛載
mount /dev/vg_test/lv_ext4 /mnt/test_ext4/
可以看到 掛載大小 約爲300M 爲什麼顯示 287 換算問題。。。
不加-r 參數,需要手動縮減文件系統。
縮減時不加 -r 參數,我是沒有成功。。。不知原因。
同 擴容時步驟一樣
先取消掛載
umount -l /mnt/test_ext4/
縮減 邏輯卷 大小 至100M
lvreduce -L 100M /dev/vg_test/lv_ext4
lvs
檢查文件完整性
e2fsck -f /dev/vg_test/lv_ext4
這一步會出錯,不管輸入y或者n 都會失敗。執行
resize2fs /dev/vg_test/lv_ext4
會有各種錯誤。。。
無法完成文件系統 縮減大小。。。
最後只能重新將 邏輯卷擴容到 原來大小,重新檢查文件完整性,再調整文件系統大小,重新掛載
lvextend -L 300M /dev/vg_test/lv_ext4
e2fsck -f /dev/vg_test/lv_ext4
resize2fs /dev/vg_test/lv_ext4
mount /dev/vg_test/lv_ext4 /mnt/test_ext4/
儘管手動調整文件系統縮減失敗了,但是 ext4 文件系統是支持 lvm邏輯捲縮減的,加上-r參數更加方便,不用手動設置,除了xfs文件系統,其他的應該都可以縮減
掛載創建好的邏輯卷,文件系統使用xfs。測試擴容,縮減。
只能擴容 無法縮減,可以動態擴容
創建邏輯卷 lv_xfs 大小100M
lvcreate -n lv_xfs -L 100M vg_test
設置邏輯卷文件系統 爲 xfs 這會格式化硬盤。所以能從ext4格式轉成xfs但是數據會全部丟失。
mkfs.xfs /dev/vg_test/lv_xfs
創建掛載點
mkdir /mnt/test_xfs
掛載
mount /dev/vg_test/lv_xfs /mnt/test_xfs/
LV邏輯卷擴容 加上-r參數,直接將文件系統也進行擴容
擴容至200M
lvextend -L 200M /dev/vg_test/lv_xfs -r
LV邏輯卷擴容 加上-r參數,直接將文件系統也進行擴容,xfs文件系統會失敗
lvreduce -L 100M /dev/vg_test/lv_xfs -r
至於不加-r 參數,手動修改。。。和ext4一樣。
xfs不支持縮減
物理卷PV的創建刪除。
物理卷創建 刪除。
創建 將兩個 邏輯分區創建成 物理卷
pvcreate /dev/sdb5
pvcreate /dev/sdb6
物理卷刪除
只能刪除 未被卷組使用的物理卷
pvremove /dev/sdb5
pvremove /dev/sdb5
卷組的 擴容縮減刪除。
卷組是由 物理卷PV 組成的。因此卷組容量增縮 只用增減 PV即可。
卷組 擴容
卷組名 未使用的物理卷PV
vgextend VG PV ...
先將 兩個邏輯分區再創建成物理卷
pvcreate /dev/sdb5
pvcreate /dev/sdb6
卷組擴容。
vgextend vg_test /dev/sdb5
vgextend vg_test /dev/sdb6
VG卷組縮減,去除掉PV 就可以。但是爲了保證數據完整,去除掉的PV上要沒有數據存在。
可以看到現在卷組vg_test 有5個PV組成,數據存放在 /dev/sdb1 這個PV中。
刪減最後增加的兩個PV
vgreduce vg_test /dev/sdb5 /dev/sdb6
嘗試去除 /dev/sdb1 PV。
vgreduce vg_test /dev/sdb1
物理卷 /dev/sdb1 在使用中。。。
要想從卷組vg_test 中移除 物理卷 /dev/sdb1 需要先將 /dev/sdb1數據移到其他卷組 比如 /dev/sdb2
pvmove /dev/sdb1 /dev/sdb2
時間耗費挺長。完成後就可以移除 /dev/sdb2了
vgreduce vg_test /dev/sdb1
關於 物理卷數據移出,可以移到多個物理卷(當然,好像 還是會盡可能轉移到第一個物理卷中,第一個卷空間不夠了,會使用第二個。。。)