磁盘管理

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


磁盘管理

上一篇:xml -- forearch遍历用法


下一篇:Linux Mysql创建用户并分配权限