DL服務器配置升級--多磁盤合併技術&home分區更換

深度學習服務器一開始的時候因爲預算等原因,home分區選擇的是2T的希捷企業級磁盤,系統則是SSD。隨着實驗室大家使用人員越來越多,決定升級下服務器配置。

最初設想:
* 選擇加2*1T固態,用來存放需要快速存取的訓練數據。
* 選擇加4*10T機械硬盤,用來存放一般的數據

最先到貨的是2*1T固態,打算合併成一個lvm分區,用來替換原本機械硬盤的/home分區。


rsync:自動同步目錄文件

rsync可以用來同步兩個文件目錄,不管兩者是處在同一個機器上或是不同的機器上;同時還可以在同步時保證文件的屬性信息和執行權限等保持不變;需要以管理員身份去運行,保證不會因爲權限的問題導致一系列其它問題

這裏將2塊1T 固態硬盤通過lvm(邏輯卷管理)技術合併成一個lv分區,臨時掛載到/new_home下,下面就需要使用rsync命令同步/home目錄

rsync -avXS --exclude='/*/.gvfs' /home/ /new_home/
"""
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
-v, --verbose 詳細模式輸出
-S, --sparse 對稀疏文件進行特殊處理以節省DST的空間
--exclude=PATTERN 指定排除不需要傳輸的文件模式
--include=PATTERN 指定不排除而需要傳輸的文件模式
--exclude='/*/.gvfs' [排除|跳過]/*/目錄下的.gvfs目錄;防止提示gvfs權限問題
"""

參數更詳細說明,請參考:http://man.linuxde.net/rsync

命令更一般用法:

# 指同步 zoe 和 zm文件夾,其它的跳過
rsync -aXS --include="zoe" --include="zm" --exclude="/*" /home /new_home/
# 除了zoe 和 zm 之外,全部 同步
rsync -aXS --exclude="zoe" --exclude="zm" /home /new_home/
# 完全同步兩個文件夾,目標文件夾中和源文件夾存在的不一樣的地方都會被刪除
rsync -avXS --delete /data/ /home/backup/

終於,通過rsync -avXS --exclude='/*/.gvfs' /home/ /new_home/命令,將/home目錄下的所有文件和目錄一模一樣的同步至/new_home;然後重新掛載home分區( # vim /etc/fstab 修改/home 分區掛在位置,重啓服務器生效)

# 修改之前
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=e6c07a8a-8e81-42d9-9822-981615f17881 /               ext4    errors=remount-ro 0       1
# /home was on /dev/sdb1 during installation
UUID=5785ccdb-1015-4208-9557-982745e56c4c /home           ext4    defaults        0       2
# lv分區,uuid方式指向磁盤
UUID=7edae0d5-a370-4607-9d5d-fafeec9292ef /new_home auto nosuid,nodev,nofail,x-gvfs-show 0 0

# 修改之後
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=e6c07a8a-8e81-42d9-9822-981615f17881 /               ext4    errors=remount-ro 0       1
# /home was on /dev/sdb1 during installation
UUID=7edae0d5-a370-4607-9d5d-fafeec9292ef /home auto nosuid,nodev,nofail,x-gvfs-show 0 0

注意:blkid /dev/sdc 可以查看磁盤的uuid


lvm 多磁盤合併

基本介紹

LVM是Logical Volume Manager的簡寫。其是Linux環境下對磁盤分區進行管理的一種機制。LVM由Heinz Mauelshagen在Linux 2.4內核上實現。其主要作用是在不損壞磁盤數據的情況下對磁盤空間進行增加,縮減。LVM的做法是將幾塊物理硬盤通過軟件的方式組合成一塊空間相對大的Volume Group,簡稱VG,然後將這塊大磁盤通過Physical Extend組成可以使用的分區Logical Volume,簡稱LV。將LV格式化之後掛載既能使用

常見名詞
PV:Physical Volume,物理卷
PE:Physical Extend,物理塊
VG:Volume Group,卷組
LV:Logical Volume,邏輯卷

抽象表示
這裏寫圖片描述

新加的兩塊固態是sdc和sdd,通過下面的命令一步步創建lv分區

# 1.初始化磁盤爲物理卷 pv
pvcreate /dev/sdc
pvcreate /dev/sdd

# 創建卷組 volgroup00
vgcreate volgroup00 /dev/sdc
# 將sdd 添加進 volgroup00卷組
vgextend volgroup00 /dev/sdd
# 顯示卷組信息
vgdisplay

--- Volume group ---
  VG Name               volgroup00
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.82 TiB
  PE Size               4.00 MiB
  Total PE              476934
  Alloc PE / Size       475076 / 1.81 TiB
  Free  PE / Size       1858 / 7.26 GiB
  VG UUID               4GSVOH-Q2kF-cCfa-GDXe-g3ME-vpBB-sC8zJ4

# 顯示物理卷
pvdisplay

--- Physical volume ---
  PV Name               /dev/sdc
  VG Name               volgroup00
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               0
  Allocated PE          238467
  PV UUID               YyVFW3-Vd3z-X1r4-A07Z-Bhry-ZRkR-vlwVNz

  --- Physical volume ---
  PV Name               /dev/sdd
  VG Name               volgroup00
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               1858
  Allocated PE          236609
  PV UUID               cLCcPs-XFO9-9djK-oojq-ImOI-5bGt-SVKrq1

# 邏輯卷lv: home 創建
# lvcreate -L 1800G -n home VolGroup00
# lvcreate -l 98%FREE -n home VolGroup00
lvcreate -l 98%VG -n home VolGroup00

# 顯示 lv
lvdisplay

  --- Logical volume ---
  LV Path                /dev/volgroup00/home
  LV Name                home
  VG Name                volgroup00
  LV UUID                GODkNf-sGXK-ElhT-ZTSf-7z3H-VpRL-4G83Wc
  LV Write Access        read/write
  LV Creation host, time visint, 2018-01-19 12:45:36 +0800
  LV Status              available
  # open                 1
  LV Size                1.81 TiB
  Current LE             475076
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

# 格式化
mkfs.ext4 /dev/volgroup00/home

# 到此步,物理卷pv-->邏輯卷組vg-->邏輯卷lv 創建完成,並且可以掛載文件系統

# 邏輯卷擴展 +500M
lvextend -L +500M /dev/volgroup00/home
#lvextend -L +500M /dev/mapper/volgroup00-home
#lvextend -l 50%VG /dev/mapper/volgroup00-home

# 上一步操作保是增加了邏輯卷的大小, /new_home文件系統大小並未改變,使用resize2fs命令,重定義文件系統大小

resize2fs /dev/volgroup00/home

擴展:當系統重裝時,存放在/home(lvm分區)裏面的數據如何恢復?

# 查看存在哪些 vg
root # vgscan
# 查看 vg 從 哪些 pv裏劃分出來的
root # pvdisplay 

# 通知系統邏輯卷組的更改
# 卷組名來自於第一步: vgscan
root # vgimport 卷組名

root # vgchange -a y

# 然後就是 mount 到掛載點,然後 既可以使用裏面的數據了


擴展二:如何將磁盤或分區獨立出來?
機器升級,新增加了2塊10TB的希捷企業級機械硬盤(sdesdf),組成數據盤,之前的2TB機械磁盤(sdb)獨立出來用作其它方面。

sdesdf磁盤加入到數據盤(邏輯磁盤),並將2TB的sdb磁盤上的數據轉移到這2塊新磁盤上,完成後即可移除sdb磁盤,問題解決!

第一步:查看需要獨立出來的目標磁盤的佔用情況

pvdisplay # 查看物理磁盤信息
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               volgroup-hd
  PV Size               1.82 TiB / not usable 1.09 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              476932
  Free PE               0      # 磁盤全部被佔用了
  Allocated PE          476932
  PV UUID               CQ6TDO-TNej-Fl0g-RhZD-3CVV-xgPY-tu396m

  --- Physical volume ---
  PV Name               /dev/sde
  VG Name               volgroup-hd
  PV Size               9.10 TiB / not usable 4.00 MiB
  Allocatable           yes (but full) # 未分配狀態,該磁盤不可以
  PE Size               4.00 MiB
  Total PE              2384383
  Free PE               0
  Allocated PE          2384383
  PV UUID               svf7uc-xWvt-D6of-aLTe-blGU-S0GP-imlplH

  --- Physical volume ---
  PV Name               /dev/sdf
  VG Name               volgroup-hd
  PV Size               9.10 TiB / not usable 4.00 MiB
  Allocatable           yes # 已分配,該磁盤處於可用狀態
  PE Size               4.00 MiB
  Total PE              2384383
  Free PE               1621347 # 有大量的已分配空閒空間
  Allocated PE          763036 # 已分配的空間(不一定被使用)
  PV UUID               USNcyh-anLS-uDcT-gg4p-BKi2-SbsV-Pa8yiU

移動數據到其它磁盤上

# 將2TB的磁盤sdb的內容移動到10TB的sdf磁盤中
pvmove /dev/sdb /dev/sdf
"""
/dev/sdb: Moved: **.*%
/dev/sdb: Moved: 16.6%
/dev/sdb: Moved: **.*%
/dev/sdb: Moved: 99.9%
/dev/sdb: Moved: 100.0%
"""

註銷要刪除的硬盤/dev/sdb

pvchange -xn /dev/sdb  # 註銷sdb
"""
 Physical volume "/dev/sdb" changed
  1 physical volume changed / 0 physical volumes not changed
"""
pvdisplay
"""
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               volgroup-hd
  PV Size               1.82 TiB / not usable 1.09 MiB
  Allocatable           NO # 不再是激活狀態
  PE Size               4.00 MiB
  Total PE              476932
  Free PE               476932
  Allocated PE          0
  PV UUID               CQ6TDO-TNej-Fl0g-RhZD-3CVV-xgPY-tu396m
"""

將硬盤或分區從邏輯卷組中刪除,並刪除物理盤

vgreduce volgroup-hd /dev/sdb # 從邏輯卷組中刪除,此時物理卷中還存在
"""
  Removed "/dev/sdb" from volume group "volgroup-hd"
"""
pvremove /dev/sdb # 從物理卷中刪除
"""
  Labels on physical volume "/dev/sdb" successfully wiped
"""  
pvdisplay # 此時沒有了 /dev/sdb

參考:
https://jingyan.baidu.com/article/fedf0737772d2835ac897790.html
http://www.178linux.com/44303
http://blog.51yip.com/linux/1779.html

新補充
https://jingyan.baidu.com/article/cb5d6105f318af005c2fe0dd.html
https://blog.csdn.net/a351945755/article/details/38089349

發佈了53 篇原創文章 · 獲贊 88 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章