挂载管理和swap空间管理
1.一个设备要想用,必须把它关联到现有的文件目录树上面。因为我们整个Linux只有一个根系统,一个根目录,所有的数据都是从现有的根的目录下的其中一个子目录来进行访问的,所以我们目前来说,虽然已经对硬盘分好区了,但是要想用这个空间,你要把这个空间和我们现有的目录关联起来,就要用到挂载。
所谓挂载就是把你的设备和当前根下的某个目录里的文件夹建立连接关系。
关联的方法就是敲mount命令,后面跟上分区的名称,再跟上目标你关联的文件夹,注意这个文件夹应该是一个存在地,并且,它应该是一个空的目录。为什么要是空的目录?因为如果不空,你就把这个设备关联上来,看到的将是该设备的数据,而不是原目录的数据,换句话说,原来关联目录下如果有数据将被隐藏。
范例:
[root@centos8 ~ 824]#mount /dev/sda1 /mnt [root@centos8 ~ 825]#ls /mnt lost+found [root@centos8 ~ 826]#mkdir /mnt/sda1 [root@centos8 ~ 828]#touch /mnt/sda1/a.txt [root@centos8 /mnt 832]#ls /mnt/sda1/a.txt /mnt/sda1/a.txt
2.我现在能不能把多个分区挂到同一目录下?
[root@centos8 ~ 846]#mount /dev/sda1 /mnt [root@centos8 ~ 847]#df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 889204 0 889204 0% /dev tmpfs 916616 0 916616 0% /dev/shm tmpfs 916616 9680 906936 2% /run tmpfs 916616 0 916616 0% /sys/fs/cgroup /dev/nvme0n1p2 52403200 6414236 45988964 13% / /dev/nvme0n1p1 1038336 345564 692772 34% /boot /dev/nvme0n1p3 31441920 256588 31185332 1% /data tmpfs 183320 28 183292 1% /run/user/0 /dev/sr0 10540998 10540998 0 100% /run/media/root/CentOS-8-5-2111-x86_64-dvd /dev/sda1 999320 2548 927960 1% /mnt
#创建几个文件 [root@centos8 ~ 848]#touch /mnt/f{1,2} [root@centos8 ~ 849]#ls /mnt f1 f2
#将sda5也挂载到/mnt下 [root@centos8 ~ 850]#mount /dev/sda5 /mnt [root@centos8 ~ 851]#lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 476661c1-ea87-4f0f-b1b0-7671f72a189e /mnt ├─sda2 ├─sda5 xfs a3951cf1-55f2-49be-9467-64d94c285b04 /mnt └─sda6 sdb sr0 iso9660 CentOS-8-5-2111-x86_64-dvd 2021-11-13-01-04-26-00 /run/media/root/Cent nvme0n1 ├─nvme0n1p1 xfs b3631a44-f636-461a-a651-05ad78ab6f7e /boot ├─nvme0n1p2 xfs 95c58cc8-c171-4df2-9e23-3b825af5d2d9 / ├─nvme0n1p3 xfs a52f0b13-1f54-47d3-9660-b1dcafbfc0fb /data ├─nvme0n1p4 └─nvme0n1p5 swap f2672235-5b02-449e-81c7-a7675a04d9af [SWAP] [root@centos8 ~ 852]#ls /mnt/ [root@centos8 ~ 853]#
发现/mnt下什么都没了,为什么呢?因为你挂上去就意味着你原来的不起作用了,相当于被踢出去了,只有sda5新的设备挂上去了,也就是说一个文件夹同一时间只能挂一个设备。
我们现在取消sda5的挂载:
[root@centos8 ~ 854]#umount /mnt [root@centos8 ~ 855]#df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 889204 0 889204 0% /dev tmpfs 916616 0 916616 0% /dev/shm tmpfs 916616 9680 906936 2% /run tmpfs 916616 0 916616 0% /sys/fs/cgroup /dev/nvme0n1p2 52403200 6414240 45988960 13% / /dev/nvme0n1p1 1038336 345564 692772 34% /boot /dev/nvme0n1p3 31441920 256588 31185332 1% /data tmpfs 183320 28 183292 1% /run/user/0 /dev/sr0 10540998 10540998 0 100% /run/media/root/CentOS-8-5-2111-x86_64-dvd /dev/sda1 999320 2548 927960 1% /mnt [root@centos8 ~ 856]#ls /mnt/ f1 f2
发现又能看见原来的sda1的文件了。
3.我们一个设备能不能挂在多个文件夹上?
[root@centos8 ~ 858]#mkdir /mnt/sda1 [root@centos8 ~ 859]#mkdir /mnt/sda1-1 [root@centos8 ~ 860]#mount /dev/sda1 /mnt/sda1 [root@centos8 ~ 861]#mount /dev/sda1 /mnt/sda1-1 [root@centos8 ~ 862]#df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 889204 0 889204 0% /dev tmpfs 916616 0 916616 0% /dev/shm tmpfs 916616 9676 906940 2% /run tmpfs 916616 0 916616 0% /sys/fs/cgroup /dev/nvme0n1p2 52403200 6414244 45988956 13% / /dev/nvme0n1p1 1038336 345564 692772 34% /boot /dev/nvme0n1p3 31441920 256588 31185332 1% /data tmpfs 183320 28 183292 1% /run/user/0 /dev/sr0 10540998 10540998 0 100% /run/media/root/CentOS-8-5-2111-x86_64-dvd /dev/sda1 999320 2548 927960 1% /mnt/sda1
现在我们没有报错,我们现在看/mnt/sda1有什么:
[root@centos8 ~ 863]#ls /mnt/sda1 f1 f2
再看看/mnt/sda1-1有什么:
[root@centos8 ~ 864]#ls /mnt/sda1-1 f1 f2
发现一样,说明我们是允许把一个设备同时挂载到多个文件夹下的,就意味着这两个文件夹看的东西都一样。换句话说:
我们再/mnt/sda1上删除一个文件:
[root@centos8 ~ 865]#rm -rf /mnt/sda1/f1 [root@centos8 ~ 866]#ls /mnt/sda1 f2 [root@centos8 ~ 867]#ls /mnt/sda1-1 f2
那么就没有这个文件了,因为你对应的是同一个设备,就相当于我们有多个入口了。
4.我们现在想将挂载属性将默认的rw改为r怎么办?
先取消挂载,重新挂载属性为r:
[root@centos8 ~ 868]#umount /mnt/sda1 [root@centos8 ~ 872]#mount -o ro /dev/sda1 /mnt/sda1 [root@centos8 ~ 873]#mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,size=889204k,nr_inodes=222301,mode=755) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700) cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) none on /sys/kernel/tracing type tracefs (rw,relatime) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/nvme0n1p2 on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=22022) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M) mqueue on /dev/mqueue type mqueue (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) /dev/nvme0n1p1 on /boot type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota) /dev/nvme0n1p3 on /data type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) /etc/auto.misc on /misc type autofs (rw,relatime,fd=5,pgrp=1096,timeout=300,minproto=5,maxproto=5,indirect,pipe_ino=34044) -hosts on /net type autofs (rw,relatime,fd=11,pgrp=1096,timeout=300,minproto=5,maxproto=5,indirect,pipe_ino=34072) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=183320k,mode=700) gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0) /dev/sr0 on /run/media/root/CentOS-8-5-2111-x86_64-dvd type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=0,gid=0,dmode=500,fmode=400,uhelper=udisks2) /dev/sda1 on /mnt/sda1 type ext4 (ro,relatime)
发现已经写不了数据了:
[root@centos8 ~ 874]#touch /mnt/sda1/f1 touch: cannot touch '/mnt/sda1/f1': Read-only file system
那我现在又想将其恢复成原来的可读可写,怎么办?
我们就不用刚才umount的方式了,umount的话有一个缺点就是,如果有用户正在使用这个空间你是没法umount的:
[root@centos8 ~ 823]#cd /mnt/sda1 [root@centos8 /mnt/sda1 824]# [root@centos8 ~ 875]#umount /mnt/sda1 umount: /mnt/sda1: target is busy
我们就可以用remount:
[root@centos8 ~ 876]#mount -o remount,rw /mnt/sda1
[root@centos8 ~ 879]#mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=889204k,nr_inodes=222301,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
none on /sys/kernel/tracing type tracefs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/nvme0n1p2 on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=22022)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/nvme0n1p1 on /boot type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
/dev/nvme0n1p3 on /data type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
/etc/auto.misc on /misc type autofs (rw,relatime,fd=5,pgrp=1096,timeout=300,minproto=5,maxproto=5,indirect,pipe_ino=34044)
-hosts on /net type autofs (rw,relatime,fd=11,pgrp=1096,timeout=300,minproto=5,maxproto=5,indirect,pipe_ino=34072)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=183320k,mode=700)
gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
/dev/sr0 on /run/media/root/CentOS-8-5-2111-x86_64-dvd type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=0,gid=0,dmode=500,fmode=400,uhelper=udisks2)
/dev/sda1 on /mnt/sda1 type ext4 (rw,relatime)
我们再创建一个文件试一试:
[root@centos8 ~ 877]#touch /mnt/sda1/fffff [root@centos8 ~ 878]#ls /mnt/sda1/ f2 fffff
发现已经可以写入了。
5.当然我们也发现了一个问题:如果这个挂载点有用户正在使用,那就umount不了,但是你非要umount,怎么办?
我们可以先查查谁在用:
[root@centos8 ~ 882]#fuser -v /mnt/sda1 USER PID ACCESS COMMAND /mnt/sda1: root kernel mount /mnt/sda1 root 7278 ..c.. bash
发现一个叫7278的进程在用,所以你可以及时通知这个人请你离开这个文件夹,然后就可以umount了。
但是如果是在生产中有成百上千个用户都在访问,你不能一个一个通知吧,那怎么办?
那你可以强行的把正在访问此目录的程序给关掉:
fuser -k /mnt/sda1
/mnt/sda1: 7529c
你会发现直接将其踢出终端了。
现在再取消挂载就可以了:
[root@centos8 ~ 886]#umount /mnt/sda1
6.关于mount的使用:
格式:
mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint
device:指明要挂载的设备
mountpoint:挂载点目录必须事先存在,建议使用空目录
mount 常用命令选项:
-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs -r readonly,只读挂载 -w read and write, 读写挂载,此为默认设置,可省略 -n 不更新/etc/mtab,mount不可见 -a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有 auto功能) -L 'LABEL' 以卷标指定挂载设备 -U 'UUID' 以UUID指定要挂载的设备 -B, --bind 绑定目录到另一个目录上 -o options:(挂载文件系统的选项),多个选项使用逗号分隔 async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全 sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下 atime/noatime 包含目录和文件 diratime/nodiratime 目录的访问时间戳 auto/noauto 是否支持开机自动挂载,是否支持-a选项 exec/noexec 是否支持将文件系统上运行应用程序 dev/nodev 是否支持在此文件系统上使用设备文件 suid/nosuid 是否支持suid和sgid权限 remount 重新挂载 ro/rw 只读、读写 user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用 acl/noacl 启用此文件系统上的acl功能 loop 使用loop设备 _netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统 defaults 相当于rw, suid, dev, exec, auto, nouser, async
7.关于挂载的总结:
一个挂载点同一时间只能挂载一个设备
一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
一个设备可以同时挂载到多个挂载点
通常挂载点一般是已存在空的目录
8.取消挂载umount:
卸载时:可使用设备,也可以使用挂载点
umount 设备名|挂载点
9.findmnt是可以观察一个挂载点的情况的:
比方说我想知道这个挂载点是否是正在挂在一个设备,我认为一个文件夹是不是真正的挂载点呢?
[root@centos8 ~ 887]#findmnt /mnt/sda1 [root@centos8 ~ 888]#findmnt /data TARGET SOURCE FSTYPE OPTIONS /data /dev/nvme0n1p3 xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota
有信息出来说明它是有挂载设备的,如果没有东西那说明这个文件夹不是挂载点,就是个普通文件夹。
[root@centos8 ~ 889]#findmnt /mnt/sda1 [root@centos8 ~ 890]#echo $? 1 [root@centos8 ~ 891]#findmnt /data TARGET SOURCE FSTYPE OPTIONS /data /dev/nvme0n1p3 xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota [root@centos8 ~ 892]#echo $? 0
10.lsof可以看某个挂载点是否被别人使用:
[root@centos8 ~ 893]#lsof /data COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 7718 root cwd DIR 259,3 113 128 /data
发现是有一个进程叫7718正在使用/data
11.挂载不仅可以挂普通的设备,事实上它还支持别的设备的挂载,比方说我们还可以支持文件夹向文件里挂:
先创建一个文件夹:
[root@centos8 ~ 907]#mkdir /mnt/boot
我们将/boot这个文件夹挂向/mnt/boot:
[root@centos8 ~ 908]#mount /boot /mnt/boot mount: /mnt/boot: /boot is not a block device.
它默认提示我们说/boot不是一个块设备,不让你挂。要想挂也不是不能:
[root@centos8 ~ 909]#mount -B /boot /mnt/boot
这其实就类似于软链接的效果,那也就意味着/mnt/boot就相当于软链接一样,它指向的就是/boot,所以你看到的数据和直接看/boot的数据是一样的。
[root@centos8 ~ 910]#ls /mnt/boot config-4.18.0-348.7.1.el8_5.x86_64 config-4.18.0-348.el8.x86_64 efi grub2 initramfs-0-rescue-94b7f51166b243389f80aff2e94f76ab.img initramfs-4.18.0-348.7.1.el8_5.x86_64.img initramfs-4.18.0-348.7.1.el8_5.x86_64kdump.img initramfs-4.18.0-348.el8.x86_64.img initramfs-4.18.0-348.el8.x86_64kdump.img loader symvers-4.18.0-348.7.1.el8_5.x86_64.gz symvers-4.18.0-348.el8.x86_64.gz System.map-4.18.0-348.7.1.el8_5.x86_64 System.map-4.18.0-348.el8.x86_64 vmlinuz-0-rescue-94b7f51166b243389f80aff2e94f76ab vmlinuz-4.18.0-348.7.1.el8_5.x86_64 vmlinuz-4.18.0-348.el8.x86_64
[root@centos8 ~ 911]#ls /boot config-4.18.0-348.7.1.el8_5.x86_64 config-4.18.0-348.el8.x86_64 efi grub2 initramfs-0-rescue-94b7f51166b243389f80aff2e94f76ab.img initramfs-4.18.0-348.7.1.el8_5.x86_64.img initramfs-4.18.0-348.7.1.el8_5.x86_64kdump.img initramfs-4.18.0-348.el8.x86_64.img initramfs-4.18.0-348.el8.x86_64kdump.img loader symvers-4.18.0-348.7.1.el8_5.x86_64.gz symvers-4.18.0-348.el8.x86_64.gz System.map-4.18.0-348.7.1.el8_5.x86_64 System.map-4.18.0-348.el8.x86_64 vmlinuz-0-rescue-94b7f51166b243389f80aff2e94f76ab vmlinuz-4.18.0-348.7.1.el8_5.x86_64 vmlinuz-4.18.0-348.el8.x86_64
现在我们就取消挂载:
umount /mnt/boot
12.上面的挂载仅仅是临时的,重启就会取消挂载,要想持久挂载,就要写到文件里。
/etc/fstab就是记录设备挂载的对应关系:
[root@centos8 ~ 914]#vim /etc/fstab # # /etc/fstab # Created by anaconda on Fri Jan 1 09:22:06 2021 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # UUID=95c58cc8-c171-4df2-9e23-3b825af5d2d9 / xfs defaults 0 0 UUID=b3631a44-f636-461a-a651-05ad78ab6f7e /boot xfs defaults 0 0 UUID=a52f0b13-1f54-47d3-9660-b1dcafbfc0fb /data xfs defaults 0 0 UUID=f2672235-5b02-449e-81c7-a7675a04d9af none swap defaults 0 0 ~
其中一行有六个内容:
第一段内容就是它的挂载的设备的信息,这个设备可以用uuid,也可以用设备名,还可以用卷标。一般都用uuid了,但是要用我要知道uuid,所以我们要查uuid:
[root@centos8 ~ 915]#blkid /dev/nvme0n1: PTUUID="9d86d599" PTTYPE="dos" /dev/nvme0n1p1: UUID="b3631a44-f636-461a-a651-05ad78ab6f7e" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="9d86d599-01" /dev/nvme0n1p2: UUID="95c58cc8-c171-4df2-9e23-3b825af5d2d9" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="9d86d599-02" /dev/nvme0n1p3: UUID="a52f0b13-1f54-47d3-9660-b1dcafbfc0fb" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="9d86d599-03" /dev/nvme0n1p5: UUID="f2672235-5b02-449e-81c7-a7675a04d9af" TYPE="swap" PARTUUID="9d86d599-05" /dev/sr0: BLOCK_SIZE="2048" UUID="2021-11-13-01-04-26-00" LABEL="CentOS-8-5-2111-x86_64-dvd" TYPE="iso9660" PTUUID="5fb10f71" PTTYPE="dos" /dev/sda1: UUID="476661c1-ea87-4f0f-b1b0-7671f72a189e" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="1762cb9a-01" /dev/sda5: UUID="a3951cf1-55f2-49be-9467-64d94c285b04" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="1762cb9a-05" /dev/sda6: PARTUUID="1762cb9a-06"
第二段就是要写它的挂载点
第三段是文件系统类型
第四段就是属性比如rw等
第五段的是0,这个0就是备份的频次,0表示不备份,1表示一天备份一次,不过这个备份要配合备份工具来用,一般我们用不上
第六段也是个0,这个0代表着文件系统检查的次序,开机以后有个文件系统检测的过程,0表示不检测,1表示先检测,2表示后续检测
我们先创建一个文件夹:
mkdir /data/mysql
然后vim到/etc/fstab
写入并保存。
让它立即生效:
mount -a
我们再来看挂上没有:
[root@centos8 ~ 930]#df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 889204 0 889204 0% /dev tmpfs 916616 0 916616 0% /dev/shm tmpfs 916616 9684 906932 2% /run tmpfs 916616 0 916616 0% /sys/fs/cgroup /dev/nvme0n1p2 52403200 6414356 45988844 13% / /dev/nvme0n1p1 1038336 345564 692772 34% /boot /dev/nvme0n1p3 31441920 256588 31185332 1% /data tmpfs 183320 28 183292 1% /run/user/0 /dev/sr0 10540998 10540998 0 100% /run/media/root/CentOS-8-5-2111-x86_64-dvd /dev/sda1 999320 2548 927960 1% /data/mysql
13.这个/etc//fstab这个文件用的时候要小心,如果你写错了:
比如uuid写错了,或者这个文件系统被破坏了,我们再重启一下。
发现卡着了,要等1分30秒
输入root密码进入故障模式:
现在我们把文件错误的先注释掉:
然后重启登录修复即可。
14.特殊的文件系统swap:
[root@centos8 /data/mysql 933]#lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 476661c1-ea87-4f0f-b1b0-7671f72a189e /data/mysql ├─sda2 ├─sda5 xfs a3951cf1-55f2-49be-9467-64d94c285b04 └─sda6 sdb sr0 iso9660 CentOS-8-5-2111-x86_64-dvd 2021-11-13-01-04-26-00 /run/media/root/Cent nvme0n1 ├─nvme0n1p1 xfs b3631a44-f636-461a-a651-05ad78ab6f7e /boot ├─nvme0n1p2 xfs 95c58cc8-c171-4df2-9e23-3b825af5d2d9 / ├─nvme0n1p3 xfs a52f0b13-1f54-47d3-9660-b1dcafbfc0fb /data ├─nvme0n1p4 └─nvme0n1p5 swap f2672235-5b02-449e-81c7-a7675a04d9af [SWAP]
swap文件系统是为了缓解内存不足的
如果你的内存有限,结果突然运行一个非常占内存的程序,这个时候由于内存不足就会导致应用程序运行失败,为了缓解这个问题,比方说,我这个内存不是特别够,但是在一般情况下是够的,只有特殊情况下,运行某个特殊应用内存消耗比较大,这时候我们为了满足这种特殊应用程序而加一块内存比较浪费,我们就可以拿swap,swap就是拿硬盘的分区来模拟内存,说白了就是,它把内存中暂时不用的数据给他先搞到swap的硬盘分区里,然后内存中就可以腾出空间来了,然后就可以把那个消耗大内存的应用程序放进去就行了。这样的话相当于利用硬盘来模拟内存,当然你要用这种方式必然会带来一个副作用:硬盘的速度跟内存比慢很多,这样的话就会慢一些。
15.我们现在先查看内存的状况:
[root@centos8 ~ 935]#free -h total used free shared buff/cache available Mem: 1.7Gi 969Mi 201Mi 14Mi 619Mi 651Mi Swap: 4.0Gi 109Mi 3.9Gi
我们现在将内存加一下:
再来查看:
[root@centos8 ~ 936]#free -h total used free shared buff/cache available Mem: 2.7Gi 990Mi 1.2Gi 14Mi 641Mi 1.5Gi Swap: 4.0Gi 109Mi 3.9Gi
既然现在内存已经增加了,我们现在想把swap的空间也增加,但是如果增加的话,swap是一个分区,我们知道分区的大小一旦分完了就不可以再变大变小了。所以我们怎么办?
删了重建是可以的,但是我们现在不去删了,我们还可以再加一个:
第一步,我们先创建一个2g的分区:
[root@centos8 ~ 938]#fdisk /dev/sdb Welcome to fdisk (util-linux 2.32.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x0dc5242c. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-20971519, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +2g Created a new partition 1 of type 'Linux' and of size 2 GiB. Command (m for help): p Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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 Disklabel type: dos Disk identifier: 0x0dc5242c Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 4196351 4194304 2G 83 Linux Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
第二步,创建swap文件系统:
[root@centos8 ~ 940]#mkswap /dev/sdb1 Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=6b42a6a1-a55a-480b-a7cb-c52adf58c7fa [root@centos8 ~ 941]#lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 476661c1-ea87-4f0f-b1b0-7671f72a189e /data/mysql ├─sda2 ├─sda5 xfs a3951cf1-55f2-49be-9467-64d94c285b04 └─sda6 sdb └─sdb1 swap 6b42a6a1-a55a-480b-a7cb-c52adf58c7fa sr0 iso9660 CentOS-8-5-2111-x86_64-dvd 2021-11-13-01-04-26-00 /run/media/root/Cent nvme0n1 ├─nvme0n1p1 xfs b3631a44-f636-461a-a651-05ad78ab6f7e /boot ├─nvme0n1p2 xfs 95c58cc8-c171-4df2-9e23-3b825af5d2d9 / ├─nvme0n1p3 xfs a52f0b13-1f54-47d3-9660-b1dcafbfc0fb /data ├─nvme0n1p4 └─nvme0n1p5 swap f2672235-5b02-449e-81c7-a7675a04d9af [SWAP]
第三步,挂载,我们想持久挂载当然要写到文件里:
[root@centos8 ~ 944]#vim /etc/fstab
使之立刻生效:
[root@centos8 ~ 947]#swapon -a
[root@centos8 ~ 948]#free -h
total used free shared buff/cache available
Mem: 2.7Gi 992Mi 1.2Gi 14Mi 642Mi 1.5Gi
Swap: 6.0Gi 109Mi 5.9Gi
我们还可以看的更清楚:
[root@centos8 ~ 949]#swapon -s Filename Type Size Used Priority /dev/nvme0n1p5 partition 4194300 111872 -2 /dev/sdb1 partition 2097148 0 -3
我们加加上以后就意味着我们可以运行9g以内的程序,当然超过9g就不行了。
16.1)我们现在已经有两个swap空间了,那么问题来了,我们系统会先占用那个swap空间呢?
通过上图我们可以看到后面有一个优先级,所以先用-2的那个。
2)我们非要想先用/dev/sdb1那,可以修改其优先级:
[root@centos8 ~ 950]#vim /etc/fstab
先禁用/dev/sdb1
[root@centos8 ~ 951]#swapoff /dev/sdb1
[root@centos8 ~ 952]#swapon -s
Filename Type Size Used Priority
/dev/nvme0n1p5 partition 4194300 111232 -2
然后再启用
[root@centos8 ~ 953]#swapon -a [root@centos8 ~ 954]#swapon -s Filename Type Size Used Priority /dev/nvme0n1p5 partition 4194300 111232 -2 /dev/sdb1 partition 2097148 0 100
发现优先级已经改了,那这样就优先使用/dev/sdb1了。不过生产中很少有两个swap。
17.禁用sawp
第一步,将/ect/fstab中的swap注释:
第二步,将其全部禁用:
[root@centos8 ~ 956]#swapoff -a
再来确认一下:
这就是禁用。
18.1)如何拿文件来当swap
第一步,先创建一个2g的文件
[root@centos8 ~ 959]#dd if=/dev/zero of=/swapfile bs=1M ,count=2048 2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB, 2.0 GiB) copied, 7.38249 s, 291 MB/s
当然这个文件就是一个全是纯0的的文件
既然要当swap使用,就需要保护防止被别人看到,因为这里面放内存的。所以我们把它的权限改一下:
[root@centos8 ~ 960]#chmod a= /swapfile [root@centos8 ~ 961]#ll /swapfile ---------- 1 root root 2147483648 Feb 14 14:03 /swapfile
当然这个文件你直接用是不行的,到现在仅仅是第一步做完了,仅仅是分区。
第二步,创建文件系统
[root@centos8 ~ 962]#mkswap /swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=16bb3db5-f1a2-4466-a8b5-fdba95941e4
[root@centos8 ~ 963]#blkid /swapfile
/swapfile: UUID="16bb3db5-f1a2-4466-a8b5-fdba95941e44" TYPE="swap"
第三步,挂载,写入到/etc/fstab文件中,需要注意的是不要写uuid而是直接写文件名
最后启用:
[root@centos8 ~ 965]#swapon -a [root@centos8 ~ 968]#swapon -s Filename Type Size Used Priority /swapfile file 2097148 0 -2
[root@centos8 ~ 969]#free -h total used free shared buff/cache available Mem: 2.7Gi 1.1Gi 115Mi 15Mi 1.6Gi 1.5Gi Swap: 2.0Gi 0B 2.0Gi
2)如何移走
第一步先禁用:
[root@centos8 ~ 970]#swapoff -a [root@centos8 ~ 971]#free -h total used free shared buff/cache available Mem: 2.7Gi 1.0Gi 117Mi 15Mi 1.6Gi 1.5Gi Swap: 0B 0B 0B
第二步开始移动:
[root@centos8 ~ 972]#mv /swapfile /data/ [root@centos8 ~ 973]#ll /data/swapfile ---------- 1 root root 2147483648 Feb 14 14:23 /data/swapfile
第三步修改文件
第四步启用
[root@centos8 ~ 975]#swapon -a [root@centos8 ~ 976]#free -h total used free shared buff/cache available Mem: 2.7Gi 1.0Gi 734Mi 15Mi 1.0Gi 1.5Gi Swap: 2.0Gi 0B 2.0Gi
结束
2022-2-14 14:56