Proxmox VE 安裝至USB隨身碟
現在的主機板都支援使用USB開機,加上作業系統也要配合,Proxmox VE(後面稱PVE)基於Debian當然也支援,安裝系統時就能選擇安裝至USB隨身碟位置,但避免太過頻繁存取而減短它的壽命,安裝後需要將過於頻繁存取的目錄移至傳統硬碟之中。
系統配置
PVE安裝於隨身碟中會使用lvm的方式配置系統,執行lsblk
命令看一下機器上的磁碟結構
root@pve3:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 149.1G 0 disk ├─sda1 8:1 0 149G 0 part └─sda9 8:9 0 8M 0 part sdb 8:16 0 153.4G 0 disk sdc 8:32 1 14.5G 0 disk ├─sdc1 8:33 1 1M 0 part ├─sdc2 8:34 1 256M 0 part └─sdc3 8:35 1 14.2G 0 part ├─pve-swap 253:0 0 1.8G 0 lvm [SWAP] ├─pve-root 253:1 0 3.5G 0 lvm / ├─pve-data_tmeta 253:2 0 8M 0 lvm │ └─pve-data 253:4 0 7.2G 0 lvm └─pve-data_tdata 253:3 0 7.2G 0 lvm └─pve-data 253:4 0 7.2G 0 lvm root@pve3:~#
上圖執行結果於sdc
為PVE安裝於隨身碟的磁碟代號,其中的pve-swap
用於系統交換檔,是首先必需要替換的,之後還有位於/var/log
、 /var/lib/vz
、/var/cache
會陸續說明。
檔案系統
丹尼PVE環境使用2顆160GB傳統硬體,並使用zfs檔案格式建立1個鏡像(mirror)儲存池(storage pool)名稱為rpool
zpool create -f -o ashift=12 rpool mirror /dev/sda /dev/sdb
查看一下建立結果
root@pve3:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 0.1G 136G 96K /rpool
下章節會使用rpool
儲存池來說明替換系統配置的過程。
替換系統配置
要替換配置,像交換檔(pve-swap)、紀錄檔(/var/log)、快取(/var/cache)、虛擬機檔案(/var/lib/vz)、映像檔(/var/lib/vz)都是必要,丹尼會將它們位置指向rpool
儲存池。
SWAP
SWAP必需要使用到Linux的區塊裝置(block devie),ZFS檔案系統中指的就是ZFS Volume
,下面例子提供建立SWAP需要用到指令及參數
zfs create -V 8G -b $(getconf PAGESIZE) -o compression=zle \ -o logbias=throughput -o sync=always \ -o primarycache=metadata -o secondarycache=none \ -o com.sun:auto-snapshot=false [POOL NAME]/swap
- b $(getconf PAGESIZE) 利用
getconf PAGESIZE
取得BLOCK大小 - -V 8G Volume大小
- -o compression=zle 使用zle的壓縮方式
- -o logbias=throughput 不使用ZFS Log裝置
- -o sync=always 同步方式選擇寫入後就同步
- -o primarycache=metadata 主要快取方式
- -o secondarycache=none 第二階快取方式
- -o com.sun:auto-snapshot=false 自動快照功能取消,細節至Managing Automatic ZFS Snapshots這篇閱讀
- [POOL NAME]/swap 檔案系統名稱
建立名稱為swap的ZFS Volume
於rpool
,指令只需要替換[POOL NAME]
,這裡替換成rpool
zfs create -V 8G -b $(getconf PAGESIZE) -o compression=zle \ -o logbias=throughput -o sync=always \ -o primarycache=metadata -o secondarycache=none \ -o com.sun:auto-snapshot=false rpool/swap
建立完成使用zfs list
查結果
root@pve3:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.50G 136G 96K /rpool rpool/swap 8.50G 144G 64K - root@pve3:~#
ZFS Volume
建立完成會於/dev/zvol/
中產生對應的區塊裝置的名稱,結構為/dev/zvol/[pool名稱]/[zfs 檔案系統名稱]
root@pve3:~# ls /dev/zvol/rpool/ swap
格式化為專用的SWAP
格式
root@pve3:~# mkswap -f /dev/zvol/rpool/swap Setting up swapspace version 1, size = 8 GiB (8589930496 bytes) no label, UUID=6bca43c9-8edc-4908-98cd-07928f76f38f root@pve3:~#
開機立即掛載命令增加至fstab
檔案中
echo /dev/zvol/rpool/swap none swap defaults 0 0 >> /etc/fstab
開啟fstab
檔案準備編輯
nano /etc/fstab
fstab
的內容,也包含剛剛加入的命令
# <file system> <mount point> <type> <options> <dump> <pass> /dev/pve/root / ext4 errors=remount-ro 0 1 /dev/pve/swap none swap sw 0 0 proc /proc proc defaults 0 0 /dev/zvol/rpool/swap none swap defaults 0 0
註解開機自動掛載隨身碟中的交換檔/dev/pve/swap none swap sw 0 0
命令,讓它不再自動掛載
# <file system> <mount point> <type> <options> <dump> <pass> /dev/pve/root / ext4 errors=remount-ro 0 1 #/dev/pve/swap none swap sw 0 0 proc /proc proc defaults 0 0 /dev/zvol/rpool/swap none swap defaults 0 0
重開機後會立即生效,執行swapon
查看狀態
root@pve3:/etc/apt# swapon NAME TYPE SIZE USED PRIO /dev/zd0 partition 8G 0B -1 root@pve3:/etc/apt#
Log
Linux 中所有記錄檔將會存於/var/log
,這些算是小檔案且存取超頻繁動作的一區,丹尼將它移至rpool
。於rpool
中建立log
名稱的ZFS檔案系統
zfs create rpool/log
建立完一樣查看結果
root@pve3:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.50G 136G 96K /rpool rpool/log 96K 136G 96K /rpool/log rpool/swap 8.50G 144G 64K - root@pve3:~#
替rpool/log
設定壓縮演算法,ZFS中能設定每個ZFS檔案系統的壓縮方式
zfs set compression=lz4 rpool/log
rsync
將原先檔案同步rpool/log
rsync -avx /var/log/* /rpool/log
rsync
是一個很好的同步檔案工具,加上參數-avx
會在同步檔案時也將權限同步過去
root@pve3:~# rsync -avx /var/log/* /rpool/log sending incremental file list alternatives.log auth.log boot btmp daemon.log debug dpkg.log faillog fontconfig.log kern.log lastlog mail.info mail.log messages pve-firewall.log pveam.log syslog user.log wtmp apt/ ceph/ corosync/ corosync/.empty glusterfs/ lxc/ lxc/lxc-monitord.log pve/ pve/tasks/ pve/tasks/.active.lock pve/tasks/active pve/tasks/index pve/tasks/9/ pve/tasks/9/UPID:pve3:0000043F:0000093A:59835139:startall::root@pam: pveproxy/ pveproxy/access.log samba/ sent 22,119,218 bytes received 554 bytes 44,239,544.00 bytes/sec total size is 22,111,469 speedup is 1.00 root@pve3:~#
整個同步完成後,要將rpool/log
掛載至相對應的路徑,因很多Linux上的套件都會將紀錄檔存至/var/log
這個路徑,直接掛載至/var/log
zfs set mountpoint=/var/log rpool/log
掛載過程中可能會出現類似的錯誤
root@pve3:~# zfs set mountpoint=/var/log rpool/log cannot mount '/var/log': directory is not empty property may be set but unable to remount filesystem
這只是代表你要掛載的位置目錄已經存在,將它刪除
rm -rf /var/log
刪除後再繼續掛載就會成功
zfs set mountpoint=/var/log rpool/log
查看一下結果
root@pve3:/# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.51G 136G 96K /rpool rpool/log 440K 136G 440K /var/log rpool/swap 8.50G 144G 64K - root@pve3:/#
結果中有一欄MOUNTPOINT
顯示出掛載的位置,建立好的ZFS檔案系統是可以不需要指定掛載位置,像之前建立的SWAP因是區塊裝置,並不需要指定掛載位置。
替換/var/log
配置方式在後面要替換的目錄是一樣的,所以丹尼一樣會將過程貼出來,但並不會做太多的說明。
VZ
/var/lib/vz
存放著PVE
的相關設定及映像檔、安裝的ISO…等,先查看一下它有什麼樣的目錄結構
root@pve3:/var/lib/vz# du 1 ./root 1 ./dump 1 ./template/iso 1 ./template/qemu 1 ./template/cache 2 ./template 1 ./images 1 ./private 13 . root@pve3:/var/lib/vz#
我們建立rpool/vz
來取代它
zfs create rpool/vz
查看結果
root@pve3:/# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.50G 136G 96K /rpool rpool/log 440K 136G 440K /var/log rpool/swap 8.50G 144G 64K - rpool/vz 96K 136G 96K /rpool/vz
設定壓縮方式
zfs set compression=lz4 rpool/vz
同步/var/lib/vz
下檔案至rpool/vz
rsync -avx /var/lib/vz/* /rpool/vz
同步的過程如下
root@pve3:/# rsync -avx /var/lib/vz/* /rpool/vz sending incremental file list dump/ images/ private/ root/ template/ template/cache/ template/iso/ template/qemu/ sent 205 bytes received 44 bytes 498.00 bytes/sec total size is 0 speedup is 0.00
同步完成後刪除原先目錄及檔案內容
rm -rf /var/lib/vz
將rpool/vz
掛載至/var/lig/vz
zfs set mountpoint=/var/lib/vz rpool/vz
查看掛載路徑是否正確
root@pve3:/# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.51G 136G 96K /rpool rpool/log 440K 136G 440K /var/log rpool/swap 8.50G 144G 64K - rpool/vz 104K 136G 104K /var/lib/vz root@pve3:/#
CACHE
快取路徑/var/cache
是Linux系統中應用程式需要置放快取時都會將路徑指至此,像apt
、samba
或是你用man
查看一些手冊時也會產生快取,下面命令為建立要取代原先快取目錄的ZFS檔案系統rpool/cache
zfs create rpool/cache
同樣查看rpool/cache
是否建立完成
root@pve3:~# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.51G 136G 96K /rpool rpool/cache 96K 136G 96K /rpool/cache rpool/log 440K 136G 440K /var/log rpool/swap 8.50G 144G 64K - rpool/vz 104K 136G 104K /var/lib/vz
設定壓縮演算法為lz4
zfs set compression=lz4 rpool/cache
同步快取內的檔案至rpool/cache
rsync -avx /var/cache/* /rpool/cache
同步過程供參考
root@pve3:/# rsync -avx /var/cache/* /rpool/cache sending incremental file list created directory /rpool/cache apparmor/ apt/ apt/pkgcache.bin apt/srcpkgcache.bin apt/archives/ apt/archives/partial/ debconf/ debconf/config.dat debconf/config.dat-old debconf/passwords.dat debconf/templates.dat debconf/templates.dat-old fontconfig/ fontconfig/087e1975ba9a574b140bb1df193bf770-le64.cache-4 fontconfig/2bae36bb929c5b1290cc66cecf2b11b0-le64.cache-4 fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-4 fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-4 fontconfig/573ec803664ed168555e0e8b6d0f0c7f-le64.cache-4 fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-4 fontconfig/8a687c406b77f27d99abfeeba937fcce-le64.cache-4 fontconfig/CACHEDIR.TAG fontconfig/c277e94e32b20404286a1ddafa5a80f0-le64.cache-4 fontconfig/c4f8cd936e32aa63d90660cbbf4d74a0-le64.cache-4 fontconfig/cba07694886bf8bbc441deea9dc5842f-le64.cache-4 fontconfig/cdd862819a105ebd84444cb99c7fc194-le64.cache-4 fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-4 fontconfig/e0c1a6ba06fd9ea781faace1ebc0ffdd-le64.cache-4 ldconfig/ ldconfig/aux-cache lxc/ man/ man/CACHEDIR.TAG man/index.db man/cs/ man/cs/CACHEDIR.TAG man/cs/index.db : : : samba/ sent 8,072,913 bytes received 1,697 bytes 16,149,220.00 bytes/sec total size is 8,064,549 speedup is 1.00
刪除原有的快取目錄及檔案
rm -rf /var/cache
設定要取代的rpool/cache
掛載路徑
zfs set mountpoint=/var/cache rpool/cache
查看設定結果
root@pve3:/# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 8.51G 136G 8.30M /rpool rpool/cache 96K 136G 96K /var/cache rpool/log 440K 136G 440K /var/log rpool/swap 8.50G 144G 64K - rpool/vz 104K 136G 104K /var/lib/vz
結語
這篇提到的是如何將存取頻繁的目錄、區塊裝置、分割表從Flash中移至傳統硬碟,傳統硬碟在一般觀念中是比較可以承受這種讀寫,在其他平台也是會有此類似的文章,不過這篇另一個重點是使用ZFS檔案系統來替換這些配置,其中有提到ZFS Storage Pool
、ZFS Volume
、ZFS File System
是後續要去了解,或是事先就要略懂。
參考資料
更新日誌
日期 | 內容 |
---|---|
2017/08/04 | 初版 |
關鍵字
- PVE on USB
- PVE USB Boot
- Proxmox VE on USB
- Proxmox VE 5.0 4.4
The post Proxmox VE 安裝至USB隨身碟 appeared first on 可丁丹尼 @ 一路往前走2.0.