linux snapper/lvm2卷 建立、備份與恢復

Nolca發表於2024-05-05

自動快照snapper

下載
部落格:https://tomoku-dm.github.io/2018/06/17/2-snapper/
文件:https://documentation.suse.com/zh-cn/sles/12-SP5/html/SLES-all/cha-snapper.html
部落格裡沒說要單獨分割槽給snapper的備份檔案

全新安裝時建議分割槽

  • /boot/efi 512MB
  • /boot 512MB
  • lvm 剩餘500GB
    • / 50GB
    • /shot 10GB,快照只記錄改動前的檔案,沒有改動,就不會增加大小。
    • /home 剩餘440GB

使用snapper,每天建立增量快照,在電腦的空閒時刻自動整合增量快照

root@fedora:/dev# lsblk -f nvme1n1
NAME FSTYPE FSVER LABEL    UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
nvme1n1
├─nvme1n1p1
│    vfat   FAT32 BOOT-EFI 158A-87C5                                 492M     4% /boot/efi
├─nvme1n1p2
│    ext4   1.0   boot     fc12efa4-0923-4eef-9a6f-182100f48dd7     40.9M    84% /boot
└─nvme1n1p3
  │  LVM2_m LVM2           hLwtbD-M3lI-mL6a-0WGw-egUH-vez4-mBLFTY                
  ├─l-fedora
  │  ext4   1.0   root     e94089a9-4e3d-483f-95c6-821570ffc60e        2G    85% /
  └─l-data
     ext4   1.0   home     1965ed8f-2873-4e11-94b1-e64da46da128      405G     2% /home

檢視儲存資訊

有人吐槽btrfs不穩定,所以還是老辦法吧:lvm2-ext4
建議現在虛擬機器內練習一下,再上實機。
u盤用ventoy燒錄(多系統支援),進入linux的iso映象,開啟控制檯

liveuser@localhost-live:/$ lsblk # 顯示所有掛載的儲存裝置

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0    2G  1 loop # 檔案掛載成檔案系統,比如swapfile
loop1         7:1    0    8G  1 loop 
├─live-rw   253:0    0    8G  0 dm   / #掛載在根的device mapper,通用的抽象虛擬層,可能是LVM或加密裝置
└─live-base 253:1    0    8G  1 dm   
loop2         7:2    0   32G  0 loop 
└─live-rw   253:0    0    8G  0 dm   /
sr0          11:0    1  2.1G  0 rom  /run/initramfs/live # 只讀,可以是CD-rom, dvd-rom……
zram0       251:0    0  1.9G  0 disk [SWAP] # 用作SWAP的磁碟(虛擬記憶體-分割槽版)
vda         252:0    0    1G  0 disk # 可讀寫磁碟

vda是我們要操作的硬碟

建立lvm2:pv,vg,lvcreate

pv物理卷→vg卷組→lv邏輯卷

sudo -i #如果執行這條語句,後面則無須再用sudo
sudo pvcreate /dev/vda
sudo vgcreate -s 4M myvg /dev/vda # -s最小分配單元為4M,即後期擴容、收縮至少4M(-s的預設值也是4M)
sudo lvcreate -l 90%FREE -n mylv myvg

sudo mkfs.ext4 /dev/myvg/mylv # 別忘格式化

-l 90%FREE 所有可用空間的90%
-l 80%VG 該卷組的80%
-l 70%PVS 所有物理卷的70%
-l 1000 1000塊最小分配單元(PE: physical extent)

掛載

sudo mkdir /mnt/mylv # 建立掛載點
sudo mount /dev/myvg/mylv /mnt/mylv # 臨時掛載,重啟失效

nano /etc/fstab # 永久掛載
# fstab內新增新行,按ctrl+s儲存,Ctrl+x退出:
/dev/myvg/mylv /mnt/mylv ext4 defaults 0 0

sudo mount -a # 掛載所有在/etc/fstab檔案中定義的檔案系統

收縮lvm

硬碟用幾年了的,最好先備份一下。

sudo umount /mnt/mylv #解除安裝
sudo e2fsck -f /dev/myvg/mylv #檢查檔案系統的一致性

df -h /dev/myvg/mylv #檢視實際佔用大小Used

#收縮檔案系統
sudo resize2fs /dev/myvg/mylv 300M #調整大小到300M
sudo resize2fs -M /dev/myvg/mylv #縮到儘可能小-M
sudo resize2fs /dev/myvg/mylv #擴大到最大,上限為lv邏輯卷大小

sudo lvreduce -L 300M /dev/myvg/mylv #收縮邏輯卷
sudo mount /dev/myvg/mylv /mnt/mylv #重新掛載
更多註解

df --output=source,size /dev/myvg/mylv顯示檔案系統的大小。
tail -n +2刪除df命令的標題行,從第二行開始輸出。
awk '{printf "%dM\n", $2/1024}'將大小從Kb(Kb=1K-blocks=1000)轉換為。

umount: /mnt/mylv: target is busy.

sudo lsof /mnt/mylv #列舉佔用的程序
sudo lsof /mnt/mylv | awk 'NR>1 {print $2}' | xargs -r kill #懶

一些關鍵程式會拒絕被kill,就得使用kill -9殺死

備份lvm

先加一份文字,驗證lvm備份/恢復是否正確

# 下面2種方式2選一
sudo chmod 777 /mnt/mylv #許可權程式碼
sudo chown $USER:$USER /mnt/mylv #更改擁有權

cd /mnt/mylv && echo "before" > a.txt
許可權程式碼 & 使用者組

&&表示前面執行成功,才會執行後面的語句
>表示將"before"覆蓋寫入到a.txt;>>則是追加寫入

許可權程式碼

7的二進位制為111,3位數分別:讀/寫/執行,r/w/x(eXecute)
777,3位數分別:所有者/組/其他使用者,owner/group/others

常用使用者組

chown myuser:mygroup myfile

  • root:系統管理員組。
  • wheel:通常用於擁有sudo許可權的使用者組。

  • daemon:執行守護程序的使用者組。
  • adm:通常用於系統監控任務的使用者組。
  • sys:通常用於擁有系統相關檔案和目錄的使用者組。
  • bin:擁有許多可執行檔案的使用者組。

  • tty:擁有終端裝置的使用者組。
  • disk:擁有磁碟裝置的使用者組。
  • lp:擁有列印裝置的使用者組。
  • cdrom:擁有CD-ROM裝置的使用者組。
  • audio:擁有音訊裝置的使用者組。
  • video:擁有影片裝置的使用者組。
  • plugdev:允許使用者訪問插入的裝置(如USB鍵盤,滑鼠等)的使用者組。
  • mail:用於郵件系統的使用者組。
sudo lvcreate --size 100M --snapshot --name mysnapshot /dev/myvg/mylv # 快照=新建卷
sudo lvremove /dev/myvg/mysnapshot # 當你覺得這份快照沒必要時

請注意,當快照的空間用完時,快照將自動被刪除。因此,你需要確保你的快照有足夠的空間來儲存你打算進行的所有修改。

恢復lvm

先修改文字echo "after" >> a.txt

sudo umount /mnt/mylv #解除安裝
sudo lvconvert --merge /dev/myvg/mysnapshot #恢復
sudo mount /dev/myvg/mylv /mnt/mylv #重新掛載

看一看a.txt的內容吧

為什麼沒有GUI?

假設你要遠端ssl連線一臺伺服器去擴容,你覺得有gui介面嗎?

相關文章