centos擴容inode


理解inode

文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區" Sector,每個扇區儲存512字節(相當於0.5KB
操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊" block,這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個sector組成一個block
文件數據都儲存在"塊"中,必須有一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。

環境說明

[root@C71 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@C71 ~]# uname -a
Linux C71.wcy 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

但文件系統還有剩余空間,卻無法創建文件得時候,可能為inode滿了,可以df -i檢查一下

[root@C71 ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs       126G  2.2G  124G    2% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs       497M  179M  318M   37% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/mapper/dfi-dfi--lv ext4      4.8G   28M  4.6G    1% /dfi
[root@C71 ~]# 
[root@C71 ~]# df -i
文件系統                   Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/mapper/centos-root 65800192   60438 65739754       1% /
devtmpfs                  479688     364   479324       1% /dev
tmpfs                     482689       1   482688       1% /dev/shm
tmpfs                     482689    1232   481457       1% /run
tmpfs                     482689      16   482673       1% /sys/fs/cgroup
/dev/sda1                 256000     335   255665       1% /boot
tmpfs                     482689       1   482688       1% /run/user/0
/dev/mapper/dfi-dfi--lv   327680  327680        0     100% /dfi

表現為

[root@C71 ~]# touch /dfi/test.txt 
touch: 無法創建"/dfi/test.txt": 設備上沒有空間

更改ext4文件系統為xfs

  • 因為ext4無法動態調整inode空間占比,所以選擇將ext4改為xfs(支持動態調整inode空間占比)
    備份文件,將ext4文件系統轉為xfs
[root@C71 ~]# cp -r /dfi /backup
[root@C71 ~]# umount /dev/dfi/dfi-lv  
[root@C71 ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs       126G  2.4G  124G    2% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs       497M  179M  318M   37% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0

如果遇到卸載不掉得情況,可以fuser強制刪除用戶關聯

[root@C71 ~]# umount /dev/dfi/dfi-lv 
umount: /dfi:目標忙。
        (有些情況下通過 lsof(8) 或 fuser(1) 可以
         找到有關使用該設備的進程的有用信息)
[root@C71 ~]# fuser -m -k /dev/dfi/dfi-lv 
/dev/dm-1:            1834c
[root@C71 ~]# umount /dev/dfi/dfi-lv 

刪除lvs邏輯卷

[root@demo1 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   1   0 wz--n- <25.51g    0 
  dfivg    1   1   0 wz--n-  <5.00g    0 
[root@demo1 ~]# lvs
  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos -wi-ao---- <25.51g                                                    
  dfi-lv dfivg  -wi-a-----  <5.00g                                                    
[root@demo1 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda3  centos lvm2 a--  <25.51g    0 
  /dev/sdb   dfivg  lvm2 a--   <5.00g    0 
[root@demo1 ~]# vgremove dfivg
Do you really want to remove volume group "dfivg" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume dfivg/dfi-lv? [y/n]: y
  Logical volume "dfi-lv" successfully removed
  Volume group "dfivg" successfully removed
[root@demo1 ~]# pvremove /dev/sdb
  Labels on physical volume "/dev/sdb" successfully wiped.
[root@demo1 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   1   0 wz--n- <25.51g    0 
[root@demo1 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <25.51g                                                    
[root@demo1 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda3  centos lvm2 a--  <25.51g    0 

重新分區,根據提示,依次輸入"mktable","gpt","y","mkpart","minio","ext4","0","100%","ignore","p","q"

[root@C71 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.                              
(parted) mktable                                                      
新的磁盤標簽類型? gpt                                                    
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? y                                                           
(parted)                                                                  
(parted) mkpart                                                           
分區名稱?  []? dfi                                                       
文件系統類型?  [ext2]? ext4                                              
起始點? 0                                                                
結束點? 100%                                                             
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放棄/Cancel? Ignore                                           
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  標志
 1      17.4kB  5369MB  5369MB               dfi

(parted) q                                                                
信息: You may need to update /etc/fstab.

格式化磁盤使用make.xfs,可加-f參數強制格式化

[root@demo1 ~]# mkfs.xfs /dev/sdb1 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=327678 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310711, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@demo1 ~]# mount /dev/sdb1 /dfi/

恢復掛載后查看inode使用情況

[root@demo1 ~]# df -i
文件系統                   Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/mapper/centos-root 13373440  384910 12988530       3% /
devtmpfs                  479687     355   479332       1% /dev
tmpfs                     482688       1   482687       1% /dev/shm
tmpfs                     482688    1213   481475       1% /run
tmpfs                     482688      16   482672       1% /sys/fs/cgroup
/dev/sda1                 256000     335   255665       1% /boot
tmpfs                     482688       1   482687       1% /run/user/0
/dev/sdb1                2621376       3  2621373       1% /dfi

查看/dfi目錄inode空間占比,可以看到占比imaxpct=25

[root@demo1 ~]# xfs_info /dfi/
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=327678 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1310711, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

動態擴容inode

xfs文件系統動態擴容inode空間占比為30%(后續可以根據存儲情況調整)

[root@demo1 ~]# xfs_growfs -m 30 /dfi/
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=327678 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1310711, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
inode max percent changed from 25 to 30

查看inode,對比之前可用2621373,增加524328個

[root@demo1 ~]# df -i
文件系統                   Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/mapper/centos-root 13373440  384910 12988530       3% /
devtmpfs                  479687     355   479332       1% /dev
tmpfs                     482688       1   482687       1% /dev/shm
tmpfs                     482688    1222   481466       1% /run
tmpfs                     482688      16   482672       1% /sys/fs/cgroup
/dev/sda1                 256000     335   255665       1% /boot
tmpfs                     482688       1   482687       1% /run/user/0
/dev/sdb1                3145704       3  3145701       1% /dfi

恢復備份文件

[root@demo1 ~]# cp -r /backup/ /dfi/
[root@demo1 ~]# df -i
文件系統                   Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/mapper/centos-root 13373440  385039 12988401       3% /
devtmpfs                  479687     355   479332       1% /dev
tmpfs                     482688       1   482687       1% /dev/shm
tmpfs                     482688    1222   481466       1% /run
tmpfs                     482688      16   482672       1% /sys/fs/cgroup
/dev/sda1                 256000     335   255665       1% /boot
tmpfs                     482688       1   482687       1% /run/user/0
/dev/sdb1                3145704  327674  2818030      11% /dfi
[root@demo1 ~]# df -i -kh /dfi/
文件系統       Inode 已用(I) 可用(I) 已用(I)% 掛載點
/dev/sdb1       3.0M    320K    2.7M      11% /dfi

恢復文件系統為LVS邏輯卷

[root@demo1 ~]# umount /dfi/
[root@demo1 ~]# df -h
文件系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   26G  2.1G   24G    8% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   12M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1                497M  179M  318M   37% /boot
tmpfs                    378M     0  378M    0% /run/user/0
[root@demo1 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable                                                          
新的磁盤標簽類型? gpt                                                    
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? y                                                           
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End  Size  File system  Name  標志

(parted) q                                                                
信息: You may need to update /etc/fstab.
[root@demo1 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0  500M  0 part /boot
├─sda2            8:2    0    4G  0 part [SWAP]
└─sda3            8:3    0 25.5G  0 part 
  └─centos-root 253:0    0 25.5G  0 lvm  /
sdb               8:16   0    5G  0 disk 
[root@demo1 ~]# pvcreate /dev/sdb
  Device /dev/sdb excluded by a filter.

導致問題的原因是添加的磁盤是在虛擬機中已經有了分區表,現在的虛擬機並不能識別磁盤的分區表,運行parted命令重做分區表

[root@demo1 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to
continue?
是/Yes/否/No? y                                                           
(parted) q                                                                
信息: You may need to update /etc/fstab.

[root@demo1 ~]# pvcreate /dev/sdb                                         
WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdb.
  Physical volume "/dev/sdb" successfully created.
[root@demo1 ~]# vgcreate dfivg /dev/sdb
  Volume group "dfivg" successfully created
[root@demo1 ~]# lvcreate -l +100%FREE -n dfi-lv dfivg
  Logical volume "dfi-lv" created.
[root@demo1 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   1   0 wz--n- <25.51g    0 
  dfivg    1   1   0 wz--n-  <5.00g    0 
[root@demo1 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda3  centos lvm2 a--  <25.51g    0 
  /dev/sdb   dfivg  lvm2 a--   <5.00g    0 
[root@demo1 ~]# lvs
  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos -wi-ao---- <25.51g                                                    
  dfi-lv dfivg  -wi-a-----  <5.00g                                                    
[root@demo1 ~]# mkfs.xfs /dev/dfivg/dfi-lv 
meta-data=/dev/dfivg/dfi-lv      isize=512    agcount=4, agsize=327424 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1309696, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@demo1 ~]# mount /dfi/
mount: 在 /etc/fstab 中找不到 /dfi/
[root@demo1 ~]# mount /dev/dfivg/dfi-lv /dfi/
[root@demo1 ~]# df -hT
文件系統                  類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   xfs        26G  2.1G   24G    8% /
devtmpfs                  devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                     tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                     tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                     tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1                 xfs       497M  179M  318M   37% /boot
tmpfs                     tmpfs     378M     0  378M    0% /run/user/0
/dev/mapper/dfivg-dfi--lv xfs       5.0G   33M  5.0G    1% /dfi
[root@demo1 ~]# df -i
文件系統                     Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/mapper/centos-root   13373440  385042 12988398       3% /
devtmpfs                    479687     356   479331       1% /dev
tmpfs                       482688       1   482687       1% /dev/shm
tmpfs                       482688    1226   481462       1% /run
tmpfs                       482688      16   482672       1% /sys/fs/cgroup
/dev/sda1                   256000     335   255665       1% /boot
tmpfs                       482688       1   482687       1% /run/user/0
/dev/mapper/dfivg-dfi--lv  2619392       3  2619389       1% /dfi
[root@demo1 ~]# xfs_info /dfi/
meta-data=/dev/mapper/dfivg-dfi--lv isize=512    agcount=4, agsize=327424 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1309696, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@demo1 ~]# xfs_growfs -m 30 /dfi/
meta-data=/dev/mapper/dfivg-dfi--lv isize=512    agcount=4, agsize=327424 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1309696, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
inode max percent changed from 25 to 30
[root@demo1 ~]# xfs_info /dfi/
meta-data=/dev/mapper/dfivg-dfi--lv isize=512    agcount=4, agsize=327424 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1309696, imaxpct=30
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@demo1 ~]# df -i
文件系統                     Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/mapper/centos-root   13373440  385042 12988398       3% /
devtmpfs                    479687     356   479331       1% /dev
tmpfs                       482688       1   482687       1% /dev/shm
tmpfs                       482688    1226   481462       1% /run
tmpfs                       482688      16   482672       1% /sys/fs/cgroup
/dev/sda1                   256000     335   255665       1% /boot
tmpfs                       482688       1   482687       1% /run/user/0
/dev/mapper/dfivg-dfi--lv  3143264       3  3143261       1% /dfi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM