Linux磁盘管理
在Linux系统中,如何有效地对存储空间加以使用和管理,是一项非常重要的技术。
1、查看磁盘或者目录的容量
查看硬盘分配 -------- df “df” 查看已挂载磁盘的总容量、使用容量、剩余容量等,可以不加任何参数,默认单位“KB” GB、MB、KB就是指电脑里面文件档案大小的单位 GB是最大的单位,然後是MB...就是常说的兆,KB是最小的单位 1GB=1024MB 1MB=1024KB 1KB=1024B [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 485864 0 485864 0% /dev tmpfs 497872 0 497872 0% /dev/shm tmpfs 497872 7768 490104 2% /run tmpfs 497872 0 497872 0% /sys/fs/cgroup /dev/mapper/centos-root 17811456 4173720 13637736 24% / /dev/sda1 1038336 139260 899076 14% /boot tmpfs 99576 0 99576 0% /run/user/0 第一列是分区的名字,第二列为该分区总共的容量,第三列为已经使用了多少,第四列为还剩下多少, 第五列为已经使用百分比,如果这个数值到达90%以上,那么你就应该关注了,磁盘分区满了可不是什 么好事情,会引起系统崩溃的。最后一列为挂载点。 “df” 的参数 -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。 -k 以k字节为单位显示。 -i 显示i节点信息,而不是磁盘块。 -t 显示各指定类型的文件系统的磁盘空间使用情况。 -x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。 -T 显示文件系统类型 df” 常用选项有 “-i” “-h” “-k” “-m” 查看inodes使用状况 --------使用参数“-i” [root@localhost ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on devtmpfs 121466 392 121074 1% /dev tmpfs 124468 1 124467 1% /dev/shm tmpfs 124468 732 123736 1% /run tmpfs 124468 16 124452 1% /sys/fs/cgroup /dev/mapper/centos-root 8910848 78139 8832709 1% / /dev/sda1 524288 326 523962 1% /boot tmpfs 124468 1 124467 1% /run/user/0 使用合适的单位显示 ---------参数“-h” [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.6M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 以K为单位显示 --------参数“-k” tmpfs 98M 0 98M 0% /run/user/0 [root@localhost ~]# df -k Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 485864 0 485864 0% /dev tmpfs 497872 0 497872 0% /dev/shm tmpfs 497872 7768 490104 2% /run tmpfs 497872 0 497872 0% /sys/fs/cgroup /dev/mapper/centos-root 17811456 4173620 13637836 24% / /dev/sda1 1038336 139260 899076 14% /boot tmpfs 99576 0 99576 0% /run/user/0 以M为单位显示 --------参数“-m” [root@localhost ~]# df -m Filesystem 1M-blocks Used Available Use% Mounted on devtmpfs 475 0 475 0% /dev tmpfs 487 0 487 0% /dev/shm tmpfs 487 8 479 2% /run tmpfs 487 0 487 0% /sys/fs/cgroup /dev/mapper/centos-root 17394 4076 13319 24% / /dev/sda1 1014 136 879 14% /boot tmpfs 98 0 98 0% /run/user/0
查看某个目录或文件所占空间大小 “du” 用来查看某个目录或文件所占空间大小. 语法 : du [-abckmsh] [文件或者目录名] [root@localhost mnt]# du centos/ 查看centos目录大小 0 centos/ “-a” 全部文件与目录大小都列出来 [root@localhost etc]# du -a adjtime / |head 通过管道符“|”进行输出前10行数据 4 adjtime 0 /boot/efi/EFI/centos 0 /boot/efi/EFI 0 /boot/efi 4 /boot/grub2/device.map 8 /boot/grub2/i386-pc/gcry_rmd160.mod 12 /boot/grub2/i386-pc/acpi.mod 4 /boot/grub2/i386-pc/gcry_rsa.mod 4 /boot/grub2/i386-pc/adler32.mod 16 /boot/grub2/i386-pc/gcry_seed.mod 如果du不指定单位,默认显示单位为KB. “-b” 列出的值以bytes为单位输出。 “-k” 以KB为单位输出,和默认不加任何选项的输出值是一样的。 “-m” 以MB为单位输出 “-h” 系统自动调节单位 “-c” 最后加总 “-s” 只列出总和
2、磁盘分区格式化
在磁盘分区前必须现新建一块硬盘
fdisk fdisk 是Linux下硬盘的分区工具,但fdisk只能划分小于2T的分区。 语法 : fdisk [-l ] [设备名称] 选项只有一个。 “-l” 后边不跟设备名会直接列出系统中所有的磁盘设备以及分区表,加上设备名会列出该设备的分区表。 [root@localhost etc]# fdisk -l Disk /dev/sda: 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: 0x000c2a41 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM 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 /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 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 磁盘分区 [root@localhost etc]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). 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 Building a new DOS disklabel with disk identifier 0xb584e0a0. ‘m’ 会列出常用的命令 帮助文档 Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition‘s system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) “p” 打印当前磁盘的分区情况 Command (m for help): p 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: 0xb584e0a0 Device Boot Start End Blocks Id System “n” 建立一个新的分区 ‘w’ 保存操作 ‘q’ 退出 ‘d’ 删除一个分区 创建分区 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G Partition 1 of type Linux and of size 5 GiB is set 使用 ‘n’ 命令新建分区,它会提示是要 ‘e’ (扩展分区) 还是 ‘p’ (主分区) [1] 笔者的选择是 ‘p’, 于是输入 ‘p’ 然后回车,输入 ‘p’ 后,会提示分区数,这里笔者写 ‘1’, 因为是第一个分区,当然你也 可以写 ‘2’ 或 ‘3’, 如果你直接回车的话,会继续提示你必须输入一个数字,接着又提示第一个柱面从哪 里开始,默认是 ‘1’, 你可以写一个其他的数字,不过这样就浪费了空间,所以还是写 ‘1’ 吧,或者你直 接回车也会按 ‘1’ 处理,接着是让输入最后一个柱面的数值,也就是说你需要给这个分区分多大空间,关 于柱面是多大笔者不再细究,你只需要掌握笔者教给你的方法即可,即写 “+5G”, 这样即方便又不容易出错。 用 ‘p’ 查看已经多出了一个分区。 Command (m for help): p 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: 0xb584e0a0 Device Boot Start End Blocks Id System /dev/sdb1 2048 10487807 5242880 83 Linux 继续上面的操作,一直创建主分区到4, 然后再一次创建分区的时候则会提示你输入e, 创建扩展分区sdb4 Command (m for help): n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): e Selected partition 4 First sector (31459328-41943039, default 31459328): 31459328 Last sector, +sectors or +size{K,M,G} (31459328-41943039, default 41943039): Using default value 41943039 Partition 4 of type Extended and of size 5 GiB is set 这是因为,在Linux中最多只能创建4个主分区,那如果你想多创建几个分区如何做?很容易,在创建完第三 个分区后,创建第四个分区时选择扩展分区。扩展分区,在最后一列显示为 “Extended”, 接下来继续创建分 区。 Command (m for help): p Disk /dev/sda: 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: 0x000c2a41 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 12584959 5242880 83 Linux /dev/sdb3 12584960 23070719 5242880 83 Linux /dev/sdb4 23070720 41943039 9436160 5 Extended 下面再进行创建分区时,是基于扩展分区的容量来进行分区 创建sdb5 分区 Command (m for help): p Disk /dev/sda: 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: 0x000c2a41 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 12584959 5242880 83 Linux /dev/sdb3 12584960 23070719 5242880 83 Linux /dev/sdb4 23070720 41943039 9436160 5 Extended /dev/sdb5 23072768 41943039 9435136 83 Linux 这时候再分区和以前有区别了,不再选择是主分区还是扩展分区了,而是直接定义大小。有一点笔者要讲一下, 当分完三个主分区后,第四个扩展分区需要把剩余的磁盘空间全部划分给扩展分区,不然的话剩余的空间会浪 费,因为分完扩展分区后,再划分新的分区时是在已经划分的扩展分区里来分的。其中/dev/sdb4为扩展分区 ,这个分区是不可以格式化的,你可以把它看成是一个空壳子,能使用的为/dev/sdb5, 其中/dev/sdb5为 /dev/sdb4的子分区,这个子分区叫做逻辑分区。 删除分区 使用d删除sdb1分区 Command (m for help): d Partition number (1-5, default 5): 1 Partition 1 is deleted Command (m for help): p Disk /dev/sda: 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: 0x000c2a41 Device Boot Start End Blocks Id System /dev/sdb2 2099200 12584959 5242880 83 Linux /dev/sdb3 12584960 23070719 5242880 83 Linux /dev/sdb4 23070720 41943039 9436160 5 Extended /dev/sdb5 23072768 41943039 9435136 83 Linux 输入 ‘d’ 会提示要删除哪个分区,可以选择从 1-5 其中1-3是主分区(sdb1, sdb2, sdb3),4是扩展分区 (sdb4),5是逻辑分区(sdb5),如果输入5,则直接把逻辑分区sdb5删除掉,但是如果输入4的话,会把整个 扩展分区sdb4干掉,当然也包含扩展分区里面的逻辑分区sdb5。在刚才的分区界面直接 Ctrl + C 退出来, 这样刚刚的分区全部都取消了,咱们重新来做分区。 直接创建扩展分区 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): e Partition number (1-4, default 1): 1 First sector (2048-41943039, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039 Partition 1 of type Extended and of size 20 GiB is set Command (m for help): p Disk /dev/sda: 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: 0x000c2a41 Device Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 5 Extended 创建分区 Command (m for help): n Partition type: p primary (0 primary, 1 extended, 3 free) l logical (numbered from 5) Select (default p): p Partition number (2-4, default 2): 2 No free sectors available 基于扩展分区创建主分区报错,这是因为没有足够空间分给主分区了。 所以我们创建分逻辑分区,大小分别都是5G Command (m for help): n Partition type: p primary (0 primary, 1 extended, 3 free) l logical (numbered from 5) Select (default p): l Adding logical partition 8 First sector (31467520-41943039, default 31467520): Using default value 31467520 Last sector, +sectors or +size{K,M,G} (31467520-41943039, default 41943039): Using default value 41943039 Partition 8 of type Linux and of size 5 GiB is set Command (m for help): p Disk /dev/sda: 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: 0x000c2a41 Device Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 5 Extended /dev/sdb5 4096 10489855 5242880 83 Linux /dev/sdb6 10491904 20977663 5242880 83 Linux /dev/sdb7 20979712 31465471 5242880 83 Linux /dev/sdb8 31467520 41943039 5237760 83 Linux 保存并退出 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. 保存好分区记录再使用 fdisk -l /dev/sdb 查看分区情况 [root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sda: 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: 0x000c2a41 Device Boot Start End Blocks Id System /dev/sdb1 2048 41943039 20970496 5 Extended /dev/sdb5 4096 10489855 5242880 83 Linux /dev/sdb6 10491904 20977663 5242880 83 Linux /dev/sdb7 20979712 31465471 5242880 83 Linux /dev/sdb8 31467520 41943039 5237760 83 Linux
3、格式化磁盘分区
命令 : mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4 当用man查询这四个命令的帮助文档时,你会发现我们看到了同一个帮助文档,这说明四个命令是一样的。 mke2fs常用的选项有: ‘-b’ 分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。 ‘-i’ 设定inode的大小 ‘-N’ 设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。 ‘-c’ 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢 ‘-L’ 预设该分区的标签label ‘-j’ 建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了 ‘-t’ 用来指定什么类型的文件系统,可以是ext2, ext3 也可以是 ext4 通过mke2fs命令格式化sdb5分区 [root@localhost ~]# mke2fs -t ext4 /dev/sdb5 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done 指定块大小格式化分区 [root@localhost ~]# mke2fs -t ext4 -b 8192 /dev/sdb5 Warning: blocksize 8192 not usable on most systems. mke2fs 1.42.9 (28-Dec-2013) mke2fs: 8192-byte blocks too big for system (max 4096) Proceed anyway? (y,n) y Warning: 8192-byte blocks too big for system (max 4096), forced to continue warning: 80 blocks unused. Filesystem label= OS type: Linux Block size=8192 (log=3) Fragment size=8192 (log=3) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 655280 blocks 32764 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=671006720 10 block groups 65528 blocks per group, 65528 fragments per group 32768 inodes per group Superblock backups stored on blocks: 65528, 196584, 327640, 458696, 589752 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done 指定块大小为8192会提示,块值设置太大了,我们直接输入 ‘y’ 强制格式化 命令 : e2label 用来查看或修改分区的标签 [root@localhost ~]# e2label /dev/sdb5 Test [root@localhost ~]# e2label /dev/sdb5 Test
5、挂载/卸载磁盘
都会写到该分区中。这就需要你注意一下,在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录 不为空并不影响所挂载分区的使用,但是一旦挂载上了,那么该目录下以前的东西就不能看到了。只有卸载 掉该分区后才能看到。 命令 : mount 如果不加任何选项,直接运行 “mount” 命令,会显示如下信息, [root@localhost ~]# 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=485864k,nr_inodes=121466,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) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) 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_prio,net_cls) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=32,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13763) debugfs on /sys/kernel/debug type debugfs (rw,relatime) mqueue on /dev/mqueue type mqueue (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) /dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=99576k,mode=700) 这个命令可以查看当前系统已经挂载的所有分区,以及分区文件系统的类型,挂载点和一些选项等信息, 所以你如果想知道某个分区的文件系统类型直接用该命令查看即可。下面我们先建立一个空目录,然后在 目录里建一个空白文档。 [root@localhost ~]# mkdir /jwt [root@localhost ~]# touch /jwt/newfile.txt [root@localhost ~]# ls !$ ls /jwt/newfile.txt /jwt/newfile.txt 后把刚才格式化的 /dev/sdb5 挂载到 /jwt 上 [root@localhost ~]# mount /dev/sdb5 /jwt/ mount: wrong fs type, bad option, bad superblock on /dev/sdb5, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so. 由于刚刚格式化的8192不合法所以重新格式化 [root@localhost ~]# mke2fs -t ext4 -L TEST /dev/sdb5 mke2fs 1.42.9 (28-Dec-2013) Filesystem label=TEST OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done 重新挂载 [root@localhost ~]# mount /dev/sdb5 /jwt/ [root@localhost ~]# ls /jwt/ lost+found [root@localhost ~]# df -h 查看挂载目录 Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sdb5 4.8G 20M 4.6G 1% /jwt 把 /dev/sdb5 挂载到 /newdir 后,原来在 /newdir 下的 newfile.txt 被覆盖了,通过 df -h 可以看到 刚刚挂载的分区,我们也可以使用LABEL的方式挂载分区。 卸载挂载目录 [root@localhost ~]# umount /dev/sdb5 /jwt/ umount: /jwt/: not mounted [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 使用LABEL的方式挂载分区 [root@localhost ~]# mount LABEL=TEST /jwt/ [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sdb5 4.8G 20M 4.6G 1% /jwt 查看/etc/fstab文件信息 使用cat命令 [root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jan 26 20:02:47 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 # /dev/mapper/centos-root / xfs defaults 0 0 UUID=ce073cc8-aadc-492b-9000-348409a75f6f /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 这个文件是系统启动时,需要挂载的各个分区。第一列就是分区的标识,可以写分区的LABEL,也可以写分区 的UUID(等会笔者会着重讲一下这个概念),当然也可以写分区名(/dev/sda1);第二列是挂载点;第三列是分 区的格式;第四列则是mount的一些挂载参数,等下会详细介绍一下有哪些参数,一般情况下,直接写defaul ts即可;第五列的数字表示是否被dump备份,是的话这里就是1,否则就是0;第六列是开机时是否自检磁盘。 1,2都表示检测,0表示不检测,在Redhat/CentOS中,这个1,2还有个说法,/ 分区必须设为1,而且整个 fstab中只允许出现一个1,这里有一个优先级的说法。1比2优先级高,所以先检测1,然后再检测2,如果有 多个分区需要开机检测那么都设置成2吧,1检测完了后会同时去检测2。下面该说说第四列中常用到的参数了。 “async/sync” : async表示和磁盘和内存不同步,系统每隔一段时间把内存数据写入磁盘中,而sync则会时 时同步内存和磁盘中数据; “auto/noauto” : 开机自动挂载/不自动挂载; “default” : 按照大多数永久文件系统的缺省值设置挂载定义,它包含了rw, suid, dev, exec, auto, nouser, async “ro” : 按只读权限挂载 ; “rw” : 按可读可写权限挂载 ; “exec/noexec” : 允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,那就无法使用系统了, 连mount命令都无法使用了,这时只有重新做系统了; “user/nouser” : 允许/不允许root外的其他用户挂载分区,为了安全考虑,请用nouser ; “suid/nosuid” : 允许/不允许分区有suid属性,一般设置nosuid ; “usrquota” : 启动使用者磁盘配额模式,磁盘配额相关内容在后续章节会做介绍; “grquota” : 启动群组磁盘配额模式; vim /etc/fstab 添加 LABEL=TEST /jwt ext4 defaults 0 0 即可 [root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jan 26 20:02:47 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 # /dev/mapper/centos-root / xfs defaults 0 0 UUID=ce073cc8-aadc-492b-9000-348409a75f6f /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 LABEL=TEST /jwt ext4 defaults 0 0 然后卸载掉刚才我们已经挂载的/dev/sdb5 [root@localhost ~]# umount /dev/sdb5 /jwt/ umount: /jwt/: not mounted [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 使用 df -h 查看已经成功卸载 /dev/sdb5 下面执行命令 mount -a来进行自动挂载。 [root@localhost ~]# mount -a [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sdb5 4.8G 20M 4.6G 1% /jwt 时,多出来一个 /dev/sdb5 挂载到了 /newdir 下。这就是 mount -a 命令执行的结果, 这个 ‘-a’ 选项会把/etc/fstab中出现的所有磁盘分区挂载上。 ‘-t’ 选项用来指定挂载的分区类型,默认不指定会自动识别。 [root@localhost ~]# umount /dev/sdb5 /jwt/ [root@localhost ~]# mount -t ext4 /dev/sdb5 /jwt/ [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sdb5 4.8G 20M 4.6G 1% /jwt ‘-o’ 选项用来指定挂载的分区有哪些特性,即上面 “/etc/fatab” 配置文件中第四列的那些。 [root@localhost ~]# umount /dev/sdb5 /jwt/ umount: /jwt/: not mounted [root@localhost ~]# mount -o ro,sync /dev/sdb5 /jwt/ [root@localhost ~]# cd /jwt/ [root@localhost jwt]# mkdir test mkdir: cannot create directory ‘test’: Read-only file system //mkdir: 无法创建目录 "/newdir/dir2": 只读文件系统 由于指定了 ‘ro’ 参数,所以该分区只读了。通过 mount 命令也可以看到 /dev/sdb5 有 ‘ro’ 选项。 通过mount命令查看/dev/sdb5信息 [root@localhost jwt]# mount |tail cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=32,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13763) debugfs on /sys/kernel/debug type debugfs (rw,relatime) mqueue on /dev/mqueue type mqueue (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) /dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=99576k,mode=700) /dev/sdb5 on /jwt type ext4 (ro,relatime,sync,data=ordered) 恢复读写功能 [root@localhost jwt]# mount -o remount /dev/sdb5 /jwt/ [root@localhost jwt]# mkdir /jwt/dir2 [root@localhost jwt]# ls /jwt/ dir2 lost+found
命令 : blkid 可以通过 blkid 命令获取各分区的UUID [root@localhost jwt]# blkid /dev/sda1: UUID="ce073cc8-aadc-492b-9000-348409a75f6f" TYPE="xfs" /dev/sda2: UUID="0jUFrn-WG4o-eQWH-jTim-YL6O-QNDP-zRuEmp" TYPE="LVM2_member" /dev/sdb5: LABEL="TEST" UUID="7bad286f-e1f3-4f9f-a19f-7c0909b6014c" TYPE="ext4" /dev/sr0: UUID="2019-09-11-18-50-31-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/mapper/centos-root: UUID="cf576eed-7cea-42ed-941d-b1b8a262cb26" TYPE="xfs" /dev/mapper/centos-swap: UUID="98537a52-77e0-43f3-ab28-6d2eacfe8563" TYPE="swap" 样可以获得全部磁盘分区的UUID,如果格式化的时候指定了 LABEL 则该命令也会显示LABEL值, 甚至连文件系统类型也会显示。 通过blkid 命令指定分区 [root@localhost jwt]# blkid /dev/sdb5 /dev/sdb5: LABEL="TEST" UUID="7bad286f-e1f3-4f9f-a19f-7c0909b6014c" TYPE="ext4" 通过UUID来挂载磁盘分区 [root@localhost jwt]# umount /jwt/ [root@localhost jwt]# mount UUID="7bad286f-e1f3-4f9f-a19f-7c0909b6014c" /jwt/ mount: /dev/sdb5 is already mounted or /jwt busy /dev/sdb5 is already mounted on /jwt [root@localhost jwt]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.0G 14G 24% / /dev/sda1 1014M 136M 879M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sdb5 4.8G 20M 4.6G 1% /jwt