第七章:儲存管理
主要知識點:
基本分區、邏輯卷LVM、EXT3/4/XFS檔案系統、RAID
一.磁盤儲存管理概念
機械硬碟 HDD 固态硬碟 SSD
SSD的優勢:讀取速度快,閃存晶片、防震抗摔,資料丢失性可能小,重量輕。
實體硬碟: /dev/sd[a-z]
KVM虛拟化: /dev/vd[a-z]
從存儲連接配接方式
本地存儲 例如DellR730本地磁盤
外部存儲 scsi線 sata線 sas線 FC線
網絡存儲 以太網絡(iscsi, glusterFS,ceph) FC網絡**
從分區方式區分
MBR <2TB fdisk 14個分區 (4個主分區,擴充分區,邏輯分區) 例如: 3主 + 1擴充(n邏輯)
GPT >2TB gdisk(parted) 128個主分區 注意:從MBR轉到GPT,或從GPT轉換到MBR會導緻資料全部丢失!
MBR: 磁盤引導 //分完區之後不可直接使用,需要先格式化
=====================================================================
二.磁盤基本分區
基本分區(MBR|GPT) ----> Filesystem ----> mount
實戰條件:首先在虛拟機添加一塊虛拟磁盤
[[email protected] ~]# ll /dev/sd* //長格式檢視系統上所有的磁盤
[[email protected] ~]# lsblk //檢視磁盤資訊
1.fdisk 指令 【建立分區】
MBR 14個分區(4個主分區,擴充分區,邏輯分區)
[[email protected] ~]# fdisk /dev/sdc //對sdc盤進行分區
歡迎使用 fdisk (util-linux 2.23.2)。
更改将停留在記憶體中,直到您決定将更改寫入磁盤。
使用寫入指令前請三思。
Device does not contain a recognized partition table
使用磁盤辨別符 0xe666fc31 建立新的 DOS 磁盤标簽。
指令(輸入 m 擷取幫助):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 //建立一個空的GPT格式分區表,預設為dos
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 // 建立一個空的DOS格式分區表,預設為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 擷取幫助):n // 按n建立分區 常用指令有以上備注中文翻譯的,其他的如若後續需要可以自己去查找翻譯。
ommand (m for help): p //選擇p,列印目前分區表
分區号 (1-4,預設 1): //Enter鍵,選擇預設即可
起始 扇區 (2048-20971519,預設為 2048): //繼續回車預設
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,預設為 20971519):+2G //這裡選擇配置磁盤大小,可自定義。
指令(輸入 m 擷取幫助):n // 按n建立分區 常用指令有以上備注中文翻譯的,其他的如若後續需要可以自己去查找翻譯。
ommand (m for help): p //選擇p,列印目前分區表
分區号 (1-4,預設 1): //Enter鍵,選擇預設即可
起始 扇區 (2048-20971519,預設為 2048): //繼續回車預設
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,預設為 20971519):+2G //這裡選擇配置磁盤大小,可自定義。
指令(輸入 m 擷取幫助):n // 按n建立分區 常用指令有以上備注中文翻譯的,其他的如若後續需要可以自己去查找翻譯。
ommand (m for help): p //選擇p,列印目前分區表
分區号 (1-4,預設 1): //Enter鍵,選擇預設即可
起始 扇區 (2048-20971519,預設為 2048): //繼續回車預設
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,預設為 20971519):+2G //這裡選擇配置磁盤大小,可自定義。
指令(輸入 m 擷取幫助):n //注意這邊已經建立三個磁盤了是以第四個就要選擇擴充分區,下面選擇e
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
起始 扇區 (12584960-20971519,預設為 12584960): //回車預設
Last 扇區, +扇區 or +size{K,M,G} (12584960-20971519,預設為 20971519): //注意這裡是建立擴充,是以剩餘的儲存全部給予擴充分區,當然也可自定義
指令(輸入 m 擷取幫助):n //選擇n建立邏輯分區
起始 扇區 (12587008-20971519,預設為 12587008): //選擇預設
Last 扇區, +扇區 or +size{K,M,G} (12587008-20971519,預設為 20971519):+1G //注意,這裡需要添加記憶體了,如果回車那就全部記憶體給予這一個邏輯分區
指令(輸入 m 擷取幫助):n //選擇n
起始 扇區 (14686208-20971519,預設為 14686208): //回車預設
Last 扇區, +扇區 or +size{K,M,G} (14686208-20971519,預設為 20971519):+1G //增加儲存
指令(輸入 m 擷取幫助):n //選擇n
起始 扇區 (14686208-20971519,預設為 14686208): //回車預設
Last 扇區, +扇區 or +size{K,M,G} (14686208-20971519,預設為 20971519): //回車預設,這裡預設是把所有記憶體都放至最後一個邏輯分區。
指令(輸入 m 擷取幫助):p //按p檢視目前磁盤分區資訊
磁盤 /dev/sdc:10.7 GB, 10737418240 位元組,20971520 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/實體):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁盤标簽類型:dos
磁盤辨別符:0x8ae6b12c
裝置 Boot Start End Blocks Id System
/dev/sdc1 2048 4196351 2097152 83 Linux
/dev/sdc2 4196352 8390655 2097152 83 Linux
/dev/sdc3 8390656 12584959 2097152 83 Linux
/dev/sdc4 12584960 20971519 4193280 5 Extended
/dev/sdc5 12587008 14684159 1048576 83 Linux
/dev/sdc6 14686208 16783359 1048576 83 Linux
/dev/sdc7 16785408 20971519 2093056 83 Linux
指令(輸入 m 擷取幫助):w //儲存分區并退出
ps:如果添加儲存失敗了,^c 退出重來即可。
[[email protected] ~]# lsblk //檢視磁盤分區資訊
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sdc 8:32 0 10G 0 disk
├─sdc1 8:33 0 2G 0 part
├─sdc2 8:34 0 2G 0 part
├─sdc3 8:35 0 2G 0 part
├─sdc4 8:36 0 1K 0 part
├─sdc5 8:37 0 1G 0 part
├─sdc6 8:38 0 1G 0 part
└─sdc7 8:39 0 2G 0 part
2 gdisk
GPT 128個主分區
這裡操作和以上操作類似,這裡就不過多講解了。
3.建立檔案系統(格式化)centos7 預設使用xfs //系統必須格式化才可使用和window原理相同
[[email protected] ~]# mkfs.xfs /dev/sdc1 //注意每個磁盤分區完之後必須要進行格式化才能正常使用
[[email protected] ~]# mkfs.ext4 /dev/sdc2 //使用ext4格式化磁盤分區
4.挂載
[[email protected] ~]# mkdir /mnt/disk1 //建立挂載目錄,名稱自定義
[[email protected] ~]# mkdir /mnt/disk1 //建立挂載目錄
[[email protected] ~]# mount -t xfs /dev/sdc1 /mnt/disk1 //臨時挂載,重新開機後會失效
[[email protected] ~]# umount /mnt/disk1 //取消挂載
[[email protected] ~]# vim /etc/fstab //永久挂載配置檔案
UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" /mnt/disk1 auto defaults 0 0
UUID="4d26172c-7aff-4388-baa5-c6756c014d52" /mnt/disk2 ext4 ro 0 0 //格式如下,先要執行blkid查詢需要挂載的UUID
[[email protected] ~]# mount -a //重新加載挂載資訊
[[email protected] ~]# df -Th //檢視挂載資訊
如果挂載失敗,導緻機器無法啟動:
1.開機界面按e進入grub系統界面:
2.在linux16行末尾輸入 rd.break console=tty1
3.ctrl + x 重新加載啟動
4.mount -o remount,rw /sysroot
5.chroot /sysroot
6.passwd #輸入2次密碼
7.touch /.autorelabel
8.exit
9.reboot //重新系統然後輸入密碼即可正常使用
=====================================================================
三.邏輯卷LVM
1.LVM 管理
線上擴容 online
資料遷移 online
建立LVM VG擴充/縮小 LV擴容 檔案系統擴容 //主要學習目标
基本分區(MBR|GPT) ----> Filesystem ----> mount
邏輯卷LVM ----> Filesystem ----> mount
PE: Physical extent 實體擴充 4M 8M 16M 32M 64M 建立VG時指定 -s 8M
LE: Logical extent 邏輯擴充
實戰需要準備環境可以使:/dev/sdc1
實戰示範:
[[email protected] ~]# ll /dev/sdb //檢視sdc磁盤
1.建立pv
[[email protected] ~]# pvcreate /dev/sdb3 //建立pv
Physical volume "/dev/sdb3" successfully created.
[[email protected] ~]# pvs //檢視pv pvscan pvdisplay //都可以檢視pv,三種檢視方式
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb3 lvm2 --- 2.00g 2.00g
2.建立vg
[[email protected] ~]# vgcreate vg3 /dev/sdb3 //建立vg3
Volume group "vg3" successfully created //則顯示成功
[[email protected] ~]# vgs //檢視vg資訊 vgscan vgdispay //都可檢視vg資訊
3.建立lv
[[email protected] ~]# lvcreate -l 20 -n lv3 vg3 //建立lv3
Logical volume "lv3" created. //顯示此資訊表示成功
[[email protected] ~]# lvcreate -L 200M -n lv3 vg3 //建立lv3 方法二 -L 後加上lv記憶體大小 -l 20代表PE,1PE等于4M,也就是80M大小
[[email protected] ~]# lvs //檢視lv資訊 lvscan lvmdiskscan //都可檢視lv資訊
4.建立檔案系統并挂載
[[email protected] ~]# mkfs.xfs /dev/vg3/lv3 //建立檔案系統xfs格式,并格式化
[[email protected] ~]# mkdir -pv /mnt/disk3 //建立準備挂載的目錄
[[email protected] ~]# mount -t xfs /dev/vg3/lv3 /mnt/disk3 //進行挂載
[[email protected] ~]# mkfs.ext4 /dev/vg1/lv2 //建立系統檔案ext4格式,并格式化
[[email protected] ~]# mkdir /mnt/lv1 /mnt/lv2 //建立lv1 lv2挂載目錄
[[email protected] ~]# vim /etc/fstab //進入永久挂載系統配置檔案 ,先查詢blkid ,查詢UUID資訊。
/dev/vg1/lv1 /mnt/lv1 xfs defaults 0 0
/dev/vg1/lv2 /mnt/lv2 ext4 defaults 0 0
[[email protected] ~]# mount -a //重新加載系統資訊
[[email protected] ~]# df -Th //顯示所有磁盤挂載資訊
5.VG管理
5.1 .擴大VG vgextend
1.pv
[[email protected] ~]# pvcreate /dev/sdd
2.vgextend
[[email protected] ~]# vgextend vg1 /dev/sdd //vg1卷組名字,将/dev/vde擴充到vg1中
3.vgs //檢視vg擴充資訊
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <29.00g 4.00m
vg1 2 2 0 wz--n- 1.99g <1.76g
5.2 減小VG //企業中堅決先備份在使用,一般不建議使用
[[email protected] ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <29.00g 4.00m
/dev/sdb vg1 lvm2 a-- 1020.00m 780.00m
/dev/sdc vg1 lvm2 a-- 1020.00m 1020.00m
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <29.00g 4.00m
vg1 2 2 0 wz--n- 1.99g <1.76g
[[email protected] ~]# vgreduce vg1 /dev/sdc
Removed "/dev/sdc" from volume group "vg1"
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <29.00g 4.00m
vg1 1 2 0 wz--n- 1020.00m 780.00m
[[email protected] ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <29.00g 4.00m
/dev/sdb vg1 lvm2 a-- 1020.00m 780.00m
/dev/sdc lvm2 --- 1.00g 1.00g
5.3.pvmove資料到其它PV
首先要保證有備用pv(要屬于一個vg)
可以先在/dev/vdd建立出一個邏輯卷之後,進行測試
[[email protected] ~]# pvs //檢視pvs
PV VG Fmt Attr PSize PFree
/dev/sdc5 vg3 lvm2 a-- 1020.00m 940.00m
/dev/sdc6 vg3 lvm2 a-- 1020.00m 1020.00m
[[email protected] ~]# pvmove /dev/sd5 /dev/sdc6 //将sdc5 資料遷移至sdc6
/dev/sdc5: Moved: 25.00%
/dev/sdc5: Moved: 100.00%
[[email protected] ~]# lsblk //檢視 磁盤資訊
├─sdc5 8:37 0 1G 0 part
├─sdc6 8:38 0 1G 0 part
│ └─vg3-lv3 253:4 0 80M 0 lvm
└─sdc7 8:39 0 2G 0 part
5.4LV擴容
[[email protected] ~]# vgs //檢視vgs資訊
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg3 2 1 0 wz--n- 1.99g 1.91g
vg4 1 0 0 wz--n- <2.00g <2.00g
[[email protected] ~]# lvextend -L 800M /dev/vg3/lv3 //擴充到800M
Size of logical volume vg3/lv3 changed from 80.00 MiB (20 extents) to 800.00 MiB (200 extents).
Logical volume vg3/lv3 successfully resized.
[[email protected] ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv3 vg3 -wi-a----- 800.00m
[[email protected] ~]# lvextend -L +800M /dev/vg3/lv3 //在原有基礎上加800M
Size of logical volume vg3/lv3 changed from 800.00 MiB (200 extents) to 1.56 GiB (400 extents).
Logical volume vg3/lv3 successfully resized.
[[email protected] ~]# lvs //檢視lv資訊
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv3 vg3 -wi-a----- 1.56g
=====================================================================
四.交換分區
交換分區管理 Swap
作用: ‘提升‘ 記憶體的容量,防止OOM(Out Of Memory)
實戰:
1.檢視目前的交換分區
[[email protected] ~]# free -m //檢視記憶體資訊
total used free shared buff/cache available
Mem: 1819 210 986 9 623 1388
Swap: 2047 0 2047
[[email protected] ~]# swapon -s //檢視挂載資訊
檔案名 類型 大小 已用 權限
/dev/dm-1 partition 2097148 0 -2
2.增加交換分區 可以是基本分區,LVM,File
[[email protected] ~]# fdisk /dev/sdb (t轉換分區的ID 82)
[[email protected] ~]# partprobe /dev/sdb 通知系統分區表的變化
[[email protected] ~]# ll /dev/sdb* //檢視
[[email protected] ~]# mkswap /dev/sdb1 //初始化
[[email protected] ~]# blkid /dev/sdb1 //查找sdb1 UUID
[[email protected] ~]# vim /etc/fstab //進入永久挂載配置檔案
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap default 0 0
[[email protected] ~]# swapon -a (讀取/etc/fstab)
[[email protected] ~]# swapon -s
[[email protected] ~]# df -Th //檢視挂載資訊