## 前置知識 動態捲管理(LVM,Logical Volume Manger)實現將多個硬碟和硬碟分區做成一個邏輯捲,並將邏輯捲統一管理。創建LVM順序為:物理捲PV->捲組VG->邏輯捲LV。 物理捲(PV,Physical Volume):物理硬碟或分區; 捲組(VG,Volume Group ...
前置知識
動態捲管理(LVM,Logical Volume Manger)實現將多個硬碟和硬碟分區做成一個邏輯捲,並將邏輯捲統一管理。創建LVM順序為:物理捲PV->捲組VG->邏輯捲LV。
物理捲(PV,Physical Volume):物理硬碟或分區;
捲組(VG,Volume Group):一個或多個物理捲集合;
邏輯捲(Logical Volume):供系統使用的元設備,虛擬分區。
LVM常用的命令:
功能 | PV物理捲管理 | VG捲組管理 | LV邏輯捲管理 |
---|---|---|---|
掃描 | pvscan | vgscan | lvscan |
創建 | pvcreate | vgcreate | lvcreate |
查看 | pvdisplay | vgdisplay | lvdisplay |
刪除 | pvremove | vgremove | lvremove |
擴展 | / | vgextend | lvextend |
縮容 | / | vgreduce | lvreduce |
前提
首先查看現有磁碟容量使用狀況(我是在安裝軟體時提示:設備空間不足)。
df -hl
lsblk
對於已經創建的虛擬機,想要擴展磁碟容量(不添加新的磁碟)要求該虛擬機沒有快照,所以首先要把快照都刪除。刪除後選擇擴容後的磁碟容量大小。
磁碟分區
fdisk -l #磁碟
fdisk /dev/sda #磁碟分區
磁碟分區常見命令(這四個就夠用了):
m #幫助手冊
n #創建新分區
p #分區類別
w #保存分區
分區退出後重新查看磁碟情況然後重啟。
fdisk -l
重啟後磁碟格式化。
mkfs.ext4 /dev/sda3
創建LVM
vgcreate vg01 /dev/sda3 #這裡創建vg會自動創建pv
lvcreate -L 30G vg01 #創建LV
mkfs.ext4 /dev/vg01/lvol0 #格式化LV
掛載
mkdir -p /data
mount -t ext4 /dev/vg01/lvol0 /data
這樣掛載重啟虛擬機之後掛載信息又不見了,所以需要保存掛載信息使得下次啟動後能夠自動掛載。最後加一行然後保存重啟。
vim /etc/fstab
還留存一個問題就是掛載點只允許root用戶讀寫文件,普通用戶沒有許可權,目前解決的方法是使用暴力加許可權方法。
sudo chmod -R 777 /data
可能遇到的問題
1. 提示掛載需要root許可權用戶
切換root用戶。
su
然後遇到第二個問題。su命令切換用戶輸入密碼後,提示:鑒定故障。因為在安裝linux系統時未設置root用戶密碼造成的,需要重新設置密碼後再切換用戶。
sudo passwd root
2. 修改/etc/fstab後無法正常開機
先說原因,原因是修改的內容格式不正確。這裡我補充一點有關/etc/fstab文件的內容,引自相關鏈接。
當系統啟動的時候,系統會自動地從這個文件讀取信息,並且會自動將此文件中指定的文件系統掛載到指定的目錄。
在這個文件下,要關註的是六個域,分別為:[file system]、[mount point]、[type] 、[options]、[dump]、[pass]。
-
[file sysytem]:用來指定你要掛載的文件系統的設備名稱或塊信息,也可以是遠程的文件系統。做過嵌入式linux開發的朋友都可能知道 mount 192.168.1.56:/home/nfs /mnt/nfs/ -o nolock (可以是其他IP)命令所代表的意義。它的任務是把IP為192.168.1.56的遠程主機上的/home/nfs/目錄掛載到本機的/mnt/nfs /目錄之下。如果要把它寫進/etc/fstab文件中,file system這部分應填寫為:/192.168.1.56:/home/nfs/。
如果想把本機上的某個設備(device)掛載上來,寫法如:/dev/sda1、/dev/hda2或/dev/cdrom,其中,/dev/sda1 表示第一個串口硬碟的第一個分區,也可以是第一個SCSI硬碟的第一個分區,/dev/hda1表示第一個IDE硬碟的第一個分區,/dev/cdrom 表示光碟機。
此外,還可以label(捲標)或UUID(Universally Unique Identifier全局唯一標識符)來表示。用label表示之前,先要e2label創建捲標,如:e2label /dir_1 /dir_2,其意思是說用/dir_2來表示/dir_1的名稱。然後,再在/etc/fstab下添加:LABEL=/dir_2 /dir_2。重啟後,系統就會將/dir_1掛載到/dir_2目錄上。對於UUID,可以用vol_id -u /dev/sdax來獲取。比如我想掛載第一塊硬碟的第一個分區,先用命令vol_id -u /dev/sda11 來取得UUID,比如是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,然後在 這個域上填寫: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,即可表示/dev/sda11。Red Hat linux 一般會使用label,而Ubuntu linux 一般會用UUID。 -
[mount point]:掛載點,也就是自己找一個或創建一個dir(目錄),然後把文件系統[file sysytem]掛到這個目錄上,然後就可以從這個目錄中訪問要掛載文件系統。對於swap分區,這個域應該填寫:none,表示沒有掛載點。
-
[type]:這裡用來指定文件系統的類型。下麵的文件系統都是目前Linux所能支持的:adfs、befs、cifs、ext3、 ext2、ext、iso9660、kafs、minix、msdos、vfat、umsdos、proc、reiserfs、swap、 squashfs、nfs、hpfs、ncpfs、ntfs、affs、ufs。
-
[options]:這裡用來填寫設置選項,各個選項用逗號隔開。由於選項非常多,而這裡篇幅有限,所以不再作詳細介紹,如需瞭解,請用 命令 man mount 來查看。但在這裡有個非常重要的關鍵字需要瞭解一下:defaults,它代表包含了選項rw,suid,dev,exec,auto,nouser和 async。
-
[dump]:此處為1的話,表示要將整個[file sysytem]里的內容備份;為0的話,表示不備份。現在很少用到dump這個工具,在這裡一般選0。
-
[pass]:這裡用來指定如何使用fsck來檢查硬碟。如果這裡填0,則不檢查;掛載點為 / 的(即根分區),必須在這裡填寫1,其他的都不能填寫1。如果有分區填寫大於1的話,則在檢查完根分區後,接著按填寫的數字從小到大依次檢查下去。同數字 的同時檢查。比如第一和第二個分區填寫2,第三和第四個分區填寫3,則系統在檢查完根分區後,接著同時檢查第一和第二個分區,然後再同時檢查第三和第四個分區。
另外如果不確定是否修改正確,但是又不想靠重啟來驗證,可以嘗試掛載看看是否報錯。
mount -a