1. 程式人生 > >linux磁碟管理增加,擴容

linux磁碟管理增加,擴容

一、磁碟空間不足,新增新的磁碟

一般來說,當我們在服務上插入新的磁碟時,伺服器是會對磁碟進行識別的。但是,有的時候伺服器並沒有對這些新插入的磁碟進行識別。這時,我們可以通過重啟伺服器,來使伺服器重新載入硬碟。

在生產環境中我們的伺服器上都存在著重要的服務,並不可以對伺服器進行重啟。下面介紹的就是無需重啟伺服器,使其識別新磁碟的方法。

解決方法:

fdisk -l

 

添加了新磁碟並沒有發現兩種方法(一重啟,二重新識別)

一、檢視磁碟大小

lsblk 檢視的是block device,也就是邏輯磁碟大小。

df檢視的是file system, 也就是檔案系統層的磁碟大小。

 

二、檢視主機匯流排號

 ls /sys/class/scsi_host/

 

三、重新掃描SCSI匯流排新增裝置

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

注意,如果掃描這三個檔案不成,就全部掃描一遍

cat /usr/local/src/test.sh
#
!/usr/bin/bash scsisum=`ll /sys/class/scsi_host/host*|wc
-l` for ((i=0;i<${scsisum};i++)) do echo "- - -" > /sys/class/scsi_host/host${i}/scan done

#echo "- - -" > /sys/class/scsi_host/host0/scan 這三個值代表通道,SCSI目標ID和LUN。破折號充當萬用字元,意思是“重新掃描一切”

四、檢視磁碟是否掃描出來

fdisk -l



對新磁碟進行格式化:

1、對新磁碟進行分割槽(根據實際需求)

fdisk /dev/sdb

   fdisk命令引數介紹
   p、列印分割槽表。
   n、新建一個新分割槽。
   d、刪除一個分割槽。
   q、退出不儲存。
   
w、把分割槽寫進分割槽表,儲存並退出。

2、再檢視磁碟個數與分割槽情況

3、通知記憶體磁碟分割槽變化

不通知核心,有可能無法格式化操作

partprobe /dev/xvdb

4、格式化分割槽(根據系統和實際情況格式化成自己想要的檔案系統)

5、建立掛載目錄

mkdir /test

6、掛載分割槽指定目錄,並建立開機自動掛載

1、掛載分割槽
mount /dev/sdb1 /test
2、建立開機自動掛載
  1. 可以通過磁碟分割槽名掛載
  2. vi /etc/fstab

1.可以通過磁碟分割槽名掛載

2. 也可以通過uuid進行掛載

檢視磁碟的uuid

  blkid

掛載

 

一、/etc/fstab檔案的作用

         磁碟被手動掛載之後都必須把掛載資訊寫入/etc/fstab這個檔案中,否則下次開機啟動時仍然需要重新掛載。

        系統開機時會主動讀取/etc/fstab這個檔案中的內容,根據檔案裡面的配置掛載磁碟。這樣我們只需要將磁碟的掛載資訊寫入這個檔案中我們就不需要每次開機啟動之後手動進行掛載了。

二、掛載的限制

    在說明這個檔案的作用之前我想先強調一下掛載的限制。

  1、根目錄是必須掛載的,而且一定要先於其他mount point被掛載。因為mount是所有目錄的跟目錄,其他木有都是由根目錄 /衍生出來的。

  2、掛載點必須是已經存在的目錄。

  3、掛載點的指定可以任意,但必須遵守必要的系統目錄架構原則

  4、所有掛載點在同一時間只能被掛載一次

  5、所有分割槽在同一時間只能掛在一次

  6、若進行解除安裝,必須將工作目錄退出掛載點(及其子目錄)之外。

使用裝置名和labeluuid作為標識的不同

            使用裝置名稱(/dev/sda)來掛載分割槽時是被固定死的,一旦磁碟的插槽順序發生了變化,就會出現名稱不對應的問題。因為這個名稱是會改變的。

不過使用label掛載就不用擔心插槽順序方面的問題。不過要隨時注意你的Label name。至於UUID,每個分割槽被格式化以後都會有一個UUID作為唯一的標識號。使用uuid掛載的話就不用擔心會發生錯亂的問題了。

第二列:Mount point:裝置的掛載點,就是你要掛載到哪個目錄下。

第三列:filesystem:磁碟檔案系統的格式,包括ext2ext3、ext4、reiserfsnfsvfat

第四列:parameters:檔案系統的引數

第五列:能否被dump備份命令作用:dump是一個用來作為備份的命令。通常這個引數的值為0或者1

第六列是否檢驗扇區:開機的過程中,系統預設會以fsck檢驗我們系統是否為完整(clean)。

 

二、擴充根分割槽

根分割槽使用率超過預警值,經排查刪除了無用資料,但使用率依然居高不下,於是決定擴充根分割槽。

  一、檢視目前的使用情況

[[email protected] Desktop]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  3.4G   47G   7% /
devtmpfs                 902M     0  902M   0% /dev
tmpfs                    917M  144K  917M   1% /dev/shm
tmpfs                    917M  9.0M  908M   1% /run
tmpfs                    917M     0  917M   0% /sys/fs/cgroup
/dev/mapper/centos-home   48G   33M   48G   1% /home
/dev/sda1                497M  158M  340M  32% /boot
tmpfs                    184M   12K  184M   1% /run/user/0

 /dev/mapper/centos-root 大小50G我們增大3G

  二、新增新的磁碟,分割槽格式化

根據環境不同,自行新增新的磁碟

 1、新增完後,檢視磁碟情況

[[email protected] Desktop]# fdisk -l

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005efd6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   209715199   104344576   8e  Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 50.9 GB, 50944016384 bytes, 99500032 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf0480a7c

   Device Boot      Start         End      Blocks   Id  System

可以看到新新增的磁碟/dev/sdb

2、對磁碟進行分割槽

fdisk /dev/sdb

  fdisk的互動模式,依次輸入
n
--建立新分割槽 p --建立主分割槽 <回車> --預設分割槽編號 <回車> --預設起始扇區位置。 <回車> --預設結束扇區位置。
t --設定分割槽型別
8e 型別為LVM
w --寫入分割槽表

3、再檢視磁碟情況

[[email protected] Desktop]# fdisk -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf0480a7c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   8e  Linux LVM

  三、擴充根分割槽:將新分割槽擴充套件/root

1、檢視卷分組

[[email protected] Desktop]# vgdisplay -v   ##找到centos
    Using volume group(s) on command line.
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               99.51 GiB
  PE Size               4.00 MiB
  Total PE              25474
  Alloc PE / Size       25458 / 99.45 GiB
  Free  PE / Size       16 / 64.00 MiB
  VG UUID               eajt4v-Jdef-HZmX-U6AL-kOTp-lc1w-nHXcBe

  2、為新增的分割槽建立物理卷

[[email protected] Desktop]# pvcreate /dev/sdb1
##提示是否擦除xfs簽名,可以根據實際情況選擇
WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sdb1.
  Physical volume "/dev/sdb1" successfully created

  3、檢視結果

[[email protected] Desktop]# pvdisplay /dev/sdb1
##可以看到新建立的20GiB大小的物理卷:
"/dev/sdb1" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID JSpfvR-zsge-XRVU-CRT2-ubec-LcmO-oZtxmD

  4、擴展卷分組,"centos"是vgdisplay命令查到的卷分組名

[[email protected] Desktop]# vgextend centos /dev/sdb1
  Volume group "centos" successfully extended

  5、檢視邏輯卷,並擴充套件邏輯卷

lvdisplay

  可以看到/dev/centos/root目前的LV Size是50G。

    lvextend -L +3G /dev/centos/root

  注:+3G是我們要新增加的分割槽大小。

  6、擴充套件後執行

 
 

[[email protected] Desktop]# lvextend -L +3G /dev/centos/root
Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 53.00 GiB (13568 extents).
Logical volume root successfully resized.

  將檔案系統擴大,完成。

  因為安裝CentOS用的xfs分割槽,所以使用命令xfs_growfs擴充套件檔案系統大小。

7、檢視結果

[[email protected] Desktop]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        53G  3.4G   50G   7% /
devtmpfs                devtmpfs  902M     0  902M   0% /dev
tmpfs                   tmpfs     917M  144K  917M   1% /dev/shm
tmpfs                   tmpfs     917M  9.0M  908M   1% /run
tmpfs                   tmpfs     917M     0  917M   0% /sys/fs/cgroup
/dev/mapper/centos-home xfs        48G   33M   48G   1% /home
/dev/sda1               xfs       497M  158M  340M  32% /boot
tmpfs                   tmpfs     184M   12K  184M   1% /run/user/0

/已經擴充到53GiB

  四、疑難解決

1、擴充邏輯卷報錯
 執行lvextend -L +20G /dev/centos/root,報錯

  Insufficient free space: 5120 extents needed, but only 5119 available

    2、解決如下
  執行pvdisplay可以看到可用的PE數量是5119,而每個PE大小是4.00MiB,所以其實這個卷組實際的可用空間其實不是20G,而是19.99G。

  五、補充知識

  /dev/mapper/VolGroup00-LogVol00
  這行的意思是,你有一個VG (volume group卷組)叫作VolGroup00, 這個VolGroup00裡面有一個LV(logical volume 邏輯卷)叫作LogVol00

  其實這個/dev/mapper/VolGroup00-LogVol00 檔案是一個連線檔案,是連線到/dev/dm-0的,你可以用ll /dev/mapper/VolGroup00-LogVol0 檢視,你就當VolGroup00-LogVol00是一個分割槽來對待就可以了.
  在你的系統裡,/dev/VolGroup00/LogVol00 和 /dev/mapper/VolGroup00-LogVol00 和/dev/dm-0 是一個東西,都當作一個分割槽來對待就好.

  1.如果你想檢視兩個硬碟在哪,你可以用pvdisplay來檢視,兩個硬碟做為PV(physical volume 物理卷)的身份加進了VG裡,所以你是找不到
硬碟的,因為它們已經加進了VG裡,可以把VG當作一個資源池來對待,把所有的儲存空間加到池裡,然後你想要多大的空間,就從池裡劃出來就可以了.   2.比如兩個1T的硬碟,加進了池裡,池裡的空間就是2T,你就可以建一個1T以上的空間出來,不會像以前那種,最大隻能是1T(因為硬碟就是1T的)。