一、加装磁盘
1.加装磁盘
确保linux能够识别 cd /dev (SCSI)sda sdb sdc . . .
2.给磁盘分区
fdisk -l /dev 查看所有分区
fdisk /dev/sdb 对sdb进行分区,默认是MBR分区
parted -s /dev/sdb mklabe gpt mkpart primary 0 100% 对sdb进行gpt分区
3.对分区进行格式化
mkfs 按两下tab显示所有文件格式 mkfs.ext4 /dev/sdb 建立文件格式为ext4
blkid /dev/sdb1 显示文件UID和格式
4.挂载磁盘
mkdir /mnt1
cd /mnt1
mkdir mnt1-test
cd ..
mount /dev/sdb1 /mnt1
df:查看挂载的磁盘 df -Th
du:查看文件的大小 -h(人类可读的方式) -s(汇总)
5.卸载磁盘
umount /dev/sdb1
追加:partprobe重读分区表信息
二、实现nfs共享存储
1.在服务机上安装rpcbind 和nfs-utils
[root@ansible ~]# yum install rpcbind nfs-utils -y
2.进入etc文件夹
[root@ansible etc]# vim exports
3.修改配置文件
[root@ansible etc]# cat exports
/opt/test 192.168.10.0/24(rw,sync,no_root_squash)
192.168.10.0/24代表在192.168.10这个网段都可以访问到,rw指可读可写,sync表示同步,no_root_squash是指用户在客户端上拥有和服务器上相同的权限
4.创建共享文件夹
[root@ansible etc]# mkdir /opt/test
然后再这个文件夹中随便写一些文件以便验证效果
[root@ansible test]# vim a.txt
5.重启服务
[root@ansible test]# systemctl start rpcbind
[root@ansible test]# systemctl start nfs-server
6.在客户机上安装nfs-utils
[root@mysql ~]# yum install nfs-utils -y
7.创建客户机共享文件挂载点
[root@mysql ~]# mkdir mnt2
8.挂载服务机的共享文件
[root@mysql /]# mount -t nfs 192.168.10.136:/opt/test /mnt2
9.查看是否成功
[root@mysql /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
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/mapper/centos-root xfs 46G 5.2G 40G 12% /
/dev/sda1 xfs 1014M 194M 821M 20% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
192.168.10.136:/opt/test nfs4 27G 2.7G 25G 10% /mnt2
10.验证可以在客户机创建文件实现同步
[root@mysql /]# touch /mnt2/b.txt
[root@mysql /]# cd /mnt2
[root@mysql mnt2]# ls
a.txt b.txt
三、文件系统
文件夹也是文件,只不过里面保存的都是要放在这个文件夹里面的文件对应的目录项
文件系统如何读到文件
1.根据文件名通过目录项知道他的inode号
2.通过inode号找到inode table里的inode
3.通过inode里的block指针,找到对应的数据块
四、常见问题之,磁盘空间显示满了但是du查看文件占用情况没满
每个文件都维护两个引用计数
i_nlink 目录项引用计数,有目录项在使用对应文件时,i_nlink就不会为0
i_count 进程fd引用,有进程在使用对应文件时,i_count 不为0,当进程被杀死或者不在运行时,i_count 才会为0
所以对上述问题的解释就是:删除时没删干净,只删除了目录项,i_nlink 为0了,而进程还在运行,i_count不为0,所以磁盘空间没有被释放,只有将进程停掉后,文件占用的磁盘空间才会被释放掉。