第二十三天

由于自己数据库服务器目录磁盘报警,没有空间了
需要新增硬盘 500G 实验可以用10g测试 这是 工作和面试都会常遇到 如果面试就问思路

fdisk 支持 小于 2t
parted 命令分区 支持 大于2t

用这两个工具都可以

新增硬盘 ,挂载到 /mnt目录下 然后把一些数据移动到/mmt就不会报警了

fdkisk
parted

fdisk 支持 小于 2t
parted 命令分区 支持 大于2t




提示:如果分区后不显示分区信息,可用partprobe来进行重载分区,让他显示

具体思路-1

1.可以新增硬盘来解决
2.删除占用文件来解决

可用工具

fdisk 支持 小于 2t
parted 命令分区 支持 大于2t
fdisk
fdisk

在Linux环境下,当您新增一块500GB的硬盘并希望将其整合进系统使用时,一般需要经过以下几个步骤:

1. 识别新硬盘:
   首先,确认系统已经识别到新添加的硬盘。可以通过执行fdisk -l或lsblk命令查看当前系统中的磁盘设备列表,寻找类似 /dev/sdb 这样的新磁盘设备。

   示例:
   
   fdisk -l
   

2. 分区:
   使用fdisk工具对新硬盘进行分区。假设新硬盘是/dev/sdb:
   
   fdisk /dev/sdb
   

   在fdisk交互模式下:
   - 输入n创建新分区。
   - 选择分区类型,默认为主分区(p)。
   - 接受默认分区号或指定分区号(如1)。
   - 输入分区起始和结束扇区,或直接按回车接受默认值以使用整个磁盘。
   - 输入w保存分区表并退出。

3. 格式化分区:
   创建完分区后,需要对其进行格式化。这里以ext4文件系统为例:
   
   mkfs.ext4 /dev/sdb1
   

4. 挂载分区:
   创建一个目录用于挂载新分区,例如 /mnt/newdisk:
   
   mkdir /mnt/newdisk
   

   然后挂载新分区到该目录:
   
   mount /dev/sdb1 /mnt/newdisk
   

5. 持久化挂载:
   如果希望系统开机时自动挂载新分区,需编辑 /etc/fstab 文件,在其中添加一行:
   
   echo '/dev/sdb1 /mnt/newdisk ext4 defaults 0 0' |  tee -a /etc/fstab
   

   确保fstab配置无误后,可以运行mount -a测试挂载配置是否有效。
parted
操作步骤如下:

# 1. 确认新硬盘识别并准备分区

首先,你需要确认系统已经识别到了新的500GB硬盘,通常可以通过fdisk -l或lsblk命令查看新添加的磁盘。假设新硬盘被识别为 /dev/sdb。

# 2. 使用parted对硬盘进行分区

使用parted创建一个新的分区:


 parted /dev/sdb


在parted交互模式中:

- 输入mklabel gpt创建GPT分区表(如果是新的硬盘,这一步骤通常是首选,因为它支持大于2TB的硬盘和更多的分区数量)。
- 输入mkpart primary ext4 0GB 500GB创建一个从开始到结束的500GB ext4主分区。这里假设我们打算用整个硬盘创建一个分区。
- 输入quit退出parted。

# 3. 格式化新分区

创建完分区后,需要格式化新分区为所需的文件系统类型(这里是ext4):


 mkfs.ext4 /dev/sdb1


# 4. 创建挂载点并挂载分区

创建挂载点目录(在这个例子中,我们将挂载到 /mnt 目录下的一个子目录,比如 /mnt/newdisk):


 mkdir /mnt/newdisk


挂载新分区到创建的目录:


 mount /dev/sdb1 /mnt/newdisk
 
 
#5.挂载的二种方式



 5.1开机自动挂载
 5.2永久挂载




开机自动挂载
vi /etc/rc.local

mount /dev/sdb1 /mnt01
mount /dev/sdb2 /mnt02


如果开机不能自动挂载 要检查 配置文件权限
 
chmod +x 
chmod +777
要给原文件权限 







第二种方法自动挂载

vi /etc/fstab


UUID=12981d89-222f-4ee2-b1c7-5dc7560cd13c /                       xfs     defaults        0 0
UUID=04cb4c4e-727f-43e6-bd0a-0063bf3268a4 /boot                   xfs     defaults        0 0
UUID=df895761-902b-4692-81f7-d76e08aa18c3 /data                   xfs     defaults        0 0
UUID=e2b4e0b4-f016-4cd0-a697-5b0eadbe11fd swap                    swap    defaults        0 0
磁盘文件                                      挂载目录              文件系统类型  是否备份      是否检查                                  


#注意:如果需要uuid来进行挂载的话,可以用blkid查询uuid






# 6. 检查挂载配配置

为了确保fstab中的挂载设置无误,可以使用 mount -a 测试挂载配置:


 mount -a


如果没有任何错误提示,那么新分区已经被成功创建、格式化并挂载到了指定的目录。下次重启时,该分区将自动挂载到 /mnt/newdisk。





#7.配置了自动挂载为什么开机还是没有挂载 ?


1.查看配置文件是否出错
2.查看配置文件是否有执行权限







此问题的解决: rc.local 是个软连接 这个时候去真实的目录下查看 发现这个文件本身没有执行权限,基于执行权限  


反思:一般配置文件或者脚本时  后面都要对应看文件是否有执行权限  一般都是基于执行权限 




具体实操
[root@master ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Mar  1 01:42 /etc/rc.local -> rc.d/rc.local


[root@master rc.d]# ll
-rw-r--r--. 1 root root 519 Mar 16 00:51 rc.local


[root@master rc.d]# chmod +x rc.local

[root@master rc.d]# ll

-rwxr-xr-x. 1 root root 519 Mar 16 00:51 rc.local



[root@master ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 93.1G  0 part /
├─sda3   8:3    0 46.6G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0    5G  0 part 
├─sdb2   8:18   0    4G  0 part 
└─sdb3   8:19   0 1023M  0 part 
sr0     11:0    1  636M  0 rom  
[root@master ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Mar  1 01:42 /etc/rc.local -> rc.d/rc.local
[root@master ~]# cd /etc/
[root@master etc]# ls
1.sh                     exports                   mime.types         rpm
adjtime                  favicon.png               mke2fs.conf        rsyslog.conf
aliases                  filesystems               modprobe.d         rsyslog.d
aliases.db               firewalld                 modules-load.d     rwtab
alternatives             fstab                     motd               rwtab.d
anacrontab               gcrypt                    motdy              sasl2
asound.conf              gnupg                     mtab               securetty
audisp                   GREP_COLORS               my.cnf             security
audit                    groff                     my.cnf.d           selinux
autofs.conf              group                     nanorc             services
autofs_ldap_auth.conf    group-                    netconfig          sestatus.conf
auto.master              grub2.cfg                 NetworkManager     shadow
auto.master.d            grub.d                    networks           shadow-
auto.misc                gshadow                   nsswitch.conf      shells
auto.net                 gshadow-                  nsswitch.conf.bak  skel
auto.smb                 gss                       openldap           ssh
avahi                    host.conf                 opt                ssl
bash_completion.d        hostname                  os-release         statetab
bashrc                   hosts                     pam.d              statetab.d
binfmt.d                 hosts.allow               passwd             sudo.conf
centos-release           hosts.deny                passwd-            sudoers
centos-release-upstream  httpd                     pkcs11             sudoers.d
chkconfig.d              init.d                    pki                sudo-ldap.conf
cron.d                   inittab                   plymouth           sysconfig
cron.daily               inputrc                   pm                 sysctl.conf
cron.deny                iproute2                  polkit-1           sysctl.d
cron.hourly              issue                     popt.d             systemd
cron.monthly             issue.net                 postfix            system-release
crontab                  kdump.conf                ppp                system-release-cpe
cron.weekly              kernel                    prelink.conf.d     tcsd.conf
crypttab                 krb5.conf                 printcap           terminfo
csh.cshrc                ld.so.cache               profile            tmpfiles.d
csh.login                ld.so.conf                profile.d          tuned
dbus-1                   ld.so.conf.d              protocols          udev
default                  libaudit.conf             rc0.d              vconsole.conf
depmod.d                 libnl                     rc1.d              vimrc
dhcp                     libuser.conf              rc2.d              virc
DIR_COLORS               locale.conf               rc3.d              wgetrc
DIR_COLORS.256color      localtime                 rc4.d              wpa_supplicant
DIR_COLORS.lightbgcolor  login.defs                rc5.d              X11
dnsmasq.conf             logrotate.conf            rc6.d              xdg
dnsmasq.d                logrotate.d               rc.d               xinetd.d
dracut.conf              machine-id                rc.local           yum
dracut.conf.d            magic                     rdma               yum.conf
e2fsck.conf              mailcap                   redhat-release     yum.repos.d
environment              makedumpfile.conf.sample  resolv.conf
ethertypes               man_db.conf               rpc
[root@master etc]# cd rc.local
-bash: cd: rc.local: Not a directory
[root@master etc]# cd /rc.local
-bash: cd: /rc.local: No such file or directory
[root@master etc]# cd /rc.d
-bash: cd: /rc.d: No such file or directory
[root@master etc]# cd /rc.d
-bash: cd: /rc.d: No such file or directory
[root@master etc]# cd rc.
rc.d/     rc.local  
[root@master etc]# cd rc.d/
[root@master rc.d]# ls
init.d  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local
[root@master rc.d]# ll
total 4
drwxr-xr-x. 2 root root  66 Mar  1 01:43 init.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc0.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc1.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc2.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc3.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc4.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc5.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc6.d
-rw-r--r--. 1 root root 519 Mar 16 00:51 rc.local
[root@master rc.d]# chmod +x rc.local
[root@master rc.d]# ll
total 4
drwxr-xr-x. 2 root root  66 Mar  1 01:43 init.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc0.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc1.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc2.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc3.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc4.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc5.d
drwxr-xr-x. 2 root root  43 Mar  1 01:43 rc6.d
-rwxr-xr-x. 1 root root 519 Mar 16 00:51 rc.local
[root@master rc.d]# reboot




[root@master ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 93.1G  0 part /
├─sda3   8:3    0 46.6G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]
sdb      8:16   0   10G  0 disk 
├─sdb1   8:17   0    5G  0 part /mnt01
├─sdb2   8:18   0    4G  0 part /mnt02
└─sdb3   8:19   0 1023M  0 part 
sr0     11:0    1  636M  0 rom

具体思路-2

找到占用文件过大的文件,把他删掉




du -sh /*   列出根目录的文件目录大小
find . -type f -size +100M  当前目录大于100m的文件
find / -type f  -size +100M  根目录大于100m的文件




找到这个文件把他删掉

操作演示

[root@master ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        94G  1.7G   92G   2% /
devtmpfs        481M     0  481M   0% /dev
tmpfs           490M     0  490M   0% /dev/shm
tmpfs           490M  6.8M  484M   2% /run
tmpfs           490M     0  490M   0% /sys/fs/cgroup
/dev/sda3        47G   33M   47G   1% /data
/dev/sda1      1014M  124M  891M  13% /boot
/dev/sdb1       5.0G  5.0G   20K 100% /mnt01




/dev/sdb1       5.0G  5.0G   20K 100% /mnt01   显示已用了100%了








如何解决?


du -sh /*   列出根目录的文件目录大小
find . -type f -size +100M  当前目录大于100m的文件
find / -type f  -size +100M  根目录大于100m的文件




找到这个文件把他删掉









[root@master mnt01]# du -sh /*
8.0K	/backup
0	/bin
91M	/boot
4.0K	/data
0	/dev
21M	/etc
1.3M	/home
0	/lib
0	/lib64
0	/media
0	/misc
0	/mnt
5.0G	/mnt01
0	/mnt02
0	/mnt03
0	/mnt04
0	/net
0	/opt
du: cannot access ‘/proc/2211/task/2211/fd/4’: No such file or directory
du: cannot access ‘/proc/2211/task/2211/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/2211/fd/4’: No such file or directory
du: cannot access ‘/proc/2211/fdinfo/4’: No such file or directory
0	/proc
100K	/root
6.8M	/run
0	/sbin
0	/srv
0	/sys
4.0K	/test
388K	/tmp
806M	/usr
816M	/var


[root@master mnt01]# find . -type f -size +100M
./500M


[root@master mnt01]# find / -type f -size +100M
/proc/kcore
find: ‘/proc/2317/task/2317/fdinfo/6’: No such file or directory
find: ‘/proc/2317/fdinfo/6’: No such file or directory
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/var/cache/yum/x86_64/7/updates/gen/filelists_db.sqlite
/usr/lib/locale/locale-archive
/mnt01/500M



找到这个文件把他删掉

可能遇到的故障--面试真题

使用df -h 磁盘还有空间 但是无法新建文件?

故障现象

[root@master ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        94G  2.0G   92G   3% /
devtmpfs        481M     0  481M   0% /dev
tmpfs           490M     0  490M   0% /dev/shm
tmpfs           490M  6.8M  484M   2% /run
tmpfs           490M     0  490M   0% /sys/fs/cgroup
/dev/sda3        47G   33M   47G   1% /data
/dev/sda1      1014M  124M  891M  13% /boot
/dev/sdb1       5.0G  369M  4.7G   8% /mnt01
/dev/sdb2       4.0G   33M  4.0G   1% /mnt02
/dev/sdd1      1020M  344M  677M  34% /mnt05






/dev/sdd1      1020M  344M  677M  34% /mnt05


[root@master mnt05]# touch nwq21.txt
touch: cannot touch ‘nwq21.txt’: No space left on device





可以看到这个分区还有600m的空间未使用呢  但是无法新建文件了

解决

inode  节点编号满了  大量的小文件造成的

使用df -i     肯定占用100% 

肯定有大量的小文件吧inode号占满了  找到它删除就可以了








删除
 find /mnt05 -type f -name "*.txt" -d

 find /mnt05 -type f -name 'w*' -print0 | xargs -0 rm -f
find /mnt05 -type f -name '*.txt' |rm -f