在日常的Linux管理工作中,这部分内容使用还是比较多的。下面我们主要介绍以下几个内容。

1.查看磁盘或者目录的容量

1.1 命令 : df

“df” 查看已挂载磁盘的总容量、使用容量、剩余容量等,可以不加任何参数,默认是按k为单位显示的,如图
image.png

  1. [root@localhost ~]# df
  2. 文件系统 1K-块 已用 可用 已用% 挂载点
  3. devtmpfs 485852 0 485852 0% /dev
  4. tmpfs 497840 0 497840 0% /dev/shm
  5. tmpfs 497840 7832 490008 2% /run
  6. tmpfs 497840 0 497840 0% /sys/fs/cgroup
  7. /dev/mapper/centos-root 17811456 1462628 16348828 9% /
  8. /dev/sda1 1038336 140028 898308 14% /boot
  9. tmpfs 99572 0 99572 0% /run/user/0

“df” 常用选项有 “-i” “-h” “-k” “-m”等
使用“-i” 查看inodes使用状况,如图
image.png

  1. [root@localhost ~]# df -i
  2. 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
  3. devtmpfs 121463 382 121081 1% /dev
  4. tmpfs 124460 1 124459 1% /dev/shm
  5. tmpfs 124460 737 123723 1% /run
  6. tmpfs 124460 16 124444 1% /sys/fs/cgroup
  7. /dev/mapper/centos-root 8910848 31986 8878862 1% /
  8. /dev/sda1 524288 326 523962 1% /boot
  9. tmpfs 124460 1 124459 1% /run/user/0

“-h” 使用合适的单位显示
image.png

  1. [root@localhost ~]# df -h
  2. 文件系统 容量 已用 可用 已用% 挂载点
  3. devtmpfs 475M 0 475M 0% /dev
  4. tmpfs 487M 0 487M 0% /dev/shm
  5. tmpfs 487M 7.7M 479M 2% /run
  6. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  7. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  8. /dev/sda1 1014M 137M 878M 14% /boot
  9. tmpfs 98M 0 98M 0% /run/user/0

“-k”, “-m” 分别以K, M 为单位显示
image.png

  1. [root@localhost ~]# df -k
  2. 文件系统 1K-块 已用 可用 已用% 挂载点
  3. devtmpfs 485852 0 485852 0% /dev
  4. tmpfs 497840 0 497840 0% /dev/shm
  5. tmpfs 497840 7800 490040 2% /run
  6. tmpfs 497840 0 497840 0% /sys/fs/cgroup
  7. /dev/mapper/centos-root 17811456 1462632 16348824 9% /
  8. /dev/sda1 1038336 140028 898308 14% /boot
  9. tmpfs 99572 0 99572 0% /run/user/0
  10. [root@localhost ~]# df -m
  11. 文件系统 1M-块 已用 可用 已用% 挂载点
  12. devtmpfs 475 0 475 0% /dev
  13. tmpfs 487 0 487 0% /dev/shm
  14. tmpfs 487 8 479 2% /run
  15. tmpfs 487 0 487 0% /sys/fs/cgroup
  16. /dev/mapper/centos-root 17394 1429 15966 9% /
  17. /dev/sda1 1014 137 878 14% /boot
  18. tmpfs 98 0 98 0% /run/user/0
  • 第一列是分区的名字
  • 第二列为该分区总共的容量
  • 第三列为已经使用了多少
  • 第四列为还剩下多少
  • 第五列为已经使用百分比
  • 如果这个数值到达90%以上,那么你就应该关注了,磁盘分区满了可不是什么好事情,会引起系统崩溃的
  • 最后一列为挂载点。

    1.2 命令 : du

    “du” 用来查看某个目录或文件所占空间大小.
    语法 : du [-abckmsh] [文件或者目录名] 常用的参数有:
    “-a” 全部文件与目录大小都列出来。如果不加任何选项和参数只列出目录(包含子目录)大小,如图
    image.png
    由于dev目录文件比较多,所以在使用du -a 命令的时候,后面通过‘|’管道符进行输出前10行数据,如图
    image.png
    1. [root@localhost ~]# du -a /dev/ | head
    2. 0 /dev/vsock
    3. 0 /dev/vcsa6
    4. 0 /dev/vcs6
    5. 0 /dev/vcsa5
    6. 0 /dev/vcs5
    7. 0 /dev/vcsa4
    8. 0 /dev/vcs4
    9. 0 /dev/vcsa3
    10. 0 /dev/vcs3
    11. 0 /dev/vcsa2
    如果du不指定单位的话,默认显示单位为K.
    “-b” 列出的值以bytes为单位输出。
    “-k” 以KB为单位输出,和默认不加任何选项的输出值是一样的。
    “-m” 以MB为单位输出
    、“-h” 系统自动调节单位,例如文件太小可能就几K,那么就以K为单位显示,如果大到几G,则就以G为单位显示。具体操作如图
    image.png
    1. [root@localhost ~]# du -b /etc/passwd
    2. 846 /etc/passwd
    3. [root@localhost ~]# du -k /etc/passwd
    4. 4 /etc/passwd
    5. [root@localhost ~]# du -m /etc/passwd
    6. 1 /etc/passwd
    7. [root@localhost ~]# du -h /etc/passwd
    8. 4.0K /etc/passwd
    “-c” 最后加总,具体效果如图
    “-s” 只列出总和,具体效果如图
    image.png
    1. [root@localhost ~]# du -c /etc/passwd
    2. 4 /etc/passwd
    3. 4 总用量
    4. [root@localhost ~]# du -s /etc/passwd
    5. 4 /etc/passwd

    2.磁盘分区格式化

    我们经常做的事情就是拿一个全新的磁盘来分区并格式化。这也说明了作为一个Linux系统管理员,对于磁盘的操作必须要熟练。所以请你认真学习该部分内容。在正式介绍Linux下分区工具之前,我们需要先给虚拟机添加一块磁盘,以便于我们做后续的实验
    1、在虚拟机关机状态下编辑虚拟机设置
    image.png
    2、添加硬盘
    在打开的虚拟机设置界面 点击添加按钮
    image.png
    3、在打开的添加硬件向导里面添加硬盘,一路点击下一步即可
    image.png
    4、最后会看到虚拟机多了一块20G的硬盘。启动虚拟机
    image.png

    2.1命令 : fdisk

    fdisk 是Linux下硬盘的分区工具,是一个非常实用的命令,但是fdisk只能划分小于2T的分区。
    语法 : fdisk [-l ] [设备名称] 选项只有一个。
    “-l” 后边不跟设备名会直接列出系统中所有的磁盘设备以及分区表,加上设备名会列出该设备的分区表,如图
    image.png
    通过fdisk -l 后面指定硬盘名称可以得知硬盘的具体信息
    image.png ```shell [root@localhost ~]# fdisk -l /dev/sda

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x0003faf9

设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM

  1. fdisk 如果不加 “-l 则进入另一个模式,在该模式下,可以对磁盘进行分区操作,如图<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22159698/1628075673974-50c8c6d1-4789-43f6-ab3f-9b73dc574902.png#clientId=ucfa67be1-701a-4&from=paste&height=181&id=u05794bfd&margin=%5Bobject%20Object%5D&name=image.png&originHeight=181&originWidth=638&originalType=binary&ratio=1&size=21970&status=done&style=none&taskId=ufb53af3d-d6e9-413e-844c-411c5b2c3ff&width=638)
  2. ```shell
  3. [root@localhost ~]# fdisk /dev/sdb
  4. 欢迎使用 fdisk (util-linux 2.23.2)。
  5. 更改将停留在内存中,直到您决定将更改写入磁盘。
  6. 使用写入命令前请三思。
  7. Device does not contain a recognized partition table
  8. 使用磁盘标识符 0xaa8078bf 创建新的 DOS 磁盘标签。
  9. 命令(输入 m 获取帮助):

如果你输入 ‘m’ 会列出常用的命令
image.png

  1. 命令(输入 m 获取帮助):m
  2. 命令操作
  3. a toggle a bootable flag
  4. b edit bsd disklabel
  5. c toggle the dos compatibility flag
  6. d delete a partition
  7. g create a new empty GPT partition table
  8. G create an IRIX (SGI) partition table
  9. l list known partition types
  10. m print this menu
  11. n add a new partition
  12. o create a new empty DOS partition table
  13. p print the partition table
  14. q quit without saving changes
  15. s create a new empty Sun disklabel
  16. t change a partition's system id
  17. u change display/entry units
  18. v verify the partition table
  19. w write table to disk and exit
  20. x extra functionality (experts only)
  21. 命令(输入 m 获取帮助):

如果你的英文好,我想你不难理解这些字母的功能。常用的有’p’, ‘n’, ‘d’, ‘w’, ‘q’.
“p” 打印当前磁盘的分区情况,执行效果如图
image.png

  1. 命令(输入 m 获取帮助):p
  2. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  3. Units = 扇区 of 1 * 512 = 512 bytes
  4. 扇区大小(逻辑/物理):512 字节 / 512 字节
  5. I/O 大小(最小/最佳):512 字节 / 512 字节
  6. 磁盘标签类型:dos
  7. 磁盘标识符:0xaa8078bf
  8. 设备 Boot Start End Blocks Id System
  9. 命令(输入 m 获取帮助):

‘n’ 建立一个新的分区。
‘w’ 保存操作。
‘q’ 退出。
‘d’ 删除一个分区
下面我会把刚才增加的磁盘/dev/sdb进行分区操作。先使用 ‘p’ 命令看一下/dev/sdb的分区状况,可以看到目前/dev/sdb没有任何分区,下面给它建立第一个分区,执行效果如图
image.png

  1. [root@localhost ~]# fdisk /dev/sdb
  2. 欢迎使用 fdisk (util-linux 2.23.2)。
  3. 更改将停留在内存中,直到您决定将更改写入磁盘。
  4. 使用写入命令前请三思。
  5. Device does not contain a recognized partition table
  6. 使用磁盘标识符 0x985c67e8 创建新的 DOS 磁盘标签。
  7. 命令(输入 m 获取帮助):n
  8. Partition type:
  9. p primary (0 primary, 0 extended, 4 free)
  10. e extended
  11. Select (default p):

使用 ‘n’ 命令新建分区,它会提示是要 ‘e’ (扩展分区) 还是 ‘p’ (主分区) [1] 我的选择是 ‘p’, 于是输入 ‘p’ 然后回车,执行效果如图
image.png

  1. Select (default p): p
  2. 分区号 (1-4,默认 1):1
  3. 起始 扇区 (2048-41943039,默认为 2048):2048
  4. Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
  5. 分区 1 已设置为 Linux 类型,大小设为 5 GiB
  6. 命令(输入 m 获取帮助):

输入 ‘p’ 后,会提示分区数,这里写 ‘1’, 因为是第一个分区,当然你也可以写 ‘2’ 或 ‘3’, 如果你直接回车的话,会继续提示你必须输入一个数字,接着又提示第一个柱面从哪里开始,默认是 ‘1’, 你可以写一个其他的数字,不过这样就浪费了空间,所以还是写 ‘1’ 吧,或者你直接回车也会按 ‘1’ 处理,接着是让输入最后一个柱面的数值,也就是说你需要给这个分区分多大空间,关于柱面是多大笔者不再细究,你只需要掌握方法即可,即写 “+5G”, 这样即方便又不容易出错。用 ‘p’ 查看已经多出了一个分区,执行效果如图。
image.png

  1. 命令(输入 m 获取帮助):p
  2. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  3. Units = 扇区 of 1 * 512 = 512 bytes
  4. 扇区大小(逻辑/物理):512 字节 / 512 字节
  5. I/O 大小(最小/最佳):512 字节 / 512 字节
  6. 磁盘标签类型:dos
  7. 磁盘标识符:0xd2f995c7
  8. 设备 Boot Start End Blocks Id System
  9. /dev/sdb1 2048 10487807 5242880 83 Linux
  10. 命令(输入 m 获取帮助):

继续上面的操作,一直创建主分区到4, 然后再一次创建分区的时候则会提示你输入e,执行效果如图。
image.png
这是因为,在Linux中最多只能创建4个主分区,那如果你想多创建几个分区如何做?很容易,在创建完第三个分区后,创建第四个分区时选择扩展分区。扩展分区,在最后一列显示为 “Extended”, 接下来继续创建分区,执行效果如图
image.png
下面再进行创建分区时,是基于扩展分区的容量来进行分区,执行效果如图
image.png
这时候再分区和以前有区别了,不再选择是主分区还是扩展分区了,而是直接定义大小。有一点要讲一下,当分完三个主分区后,第四个扩展分区需要把剩余的磁盘空间全部划分给扩展分区,不然的话剩余的空间会浪费,因为分完扩展分区后,再划分新的分区时是在已经划分的扩展分区里来分的。其中/dev/sdb4为扩展分区,这个分区是不可以格式化的,你可以把它看成是一个空壳子,能使用的为/dev/sdb5, 其中/dev/sdb5为/dev/sdb4的子分区,这个子分区叫做逻辑分区。如果你发现分区分的不合适,想删除掉某个分区怎么办?这就用到了 ‘d’ 命令,执行效果如图。
image.png

  1. 命令(输入 m 获取帮助):D
  2. 分区号 (1-5,默认 5):1
  3. 分区 1 已删除
  4. 命令(输入 m 获取帮助):p
  5. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  6. Units = 扇区 of 1 * 512 = 512 bytes
  7. 扇区大小(逻辑/物理):512 字节 / 512 字节
  8. I/O 大小(最小/最佳):512 字节 / 512 字节
  9. 磁盘标签类型:dos
  10. 磁盘标识符:0xe6dc353c
  11. 设备 Boot Start End Blocks Id System
  12. /dev/sdb2 10487808 20973567 5242880 83 Linux
  13. /dev/sdb3 20973568 31459327 5242880 83 Linux
  14. /dev/sdb4 31459328 41943039 5241856 5 Extended
  15. /dev/sdb5 31461376 33558527 1048576 83 Linux
  16. 命令(输入 m 获取帮助):

使用d删除sdb5分区
image.png
输入 ‘d’ 会提示要删除哪个分区,可以选择从 1-5 其中1-3是主分区(sdb1, sdb2, sdb3),4是扩展分区(sdb4),5是逻辑分区(sdb5),如果输入5,则直接把逻辑分区sdb5删除掉,但是如果输入4的话,会把整个扩展分区sdb4干掉,当然也包含扩展分区里面的逻辑分区sdb5。在刚才的分区界面直接 Ctrl + C 退出来,这样刚刚的分区全部都取消了,咱们重新来做分区,如图
image.png

image.png

如果把第一个分区分为扩展分区,并且把全部空间都分给扩展分区的话,再继续分区的话,会提示的分区类型为主分区还是逻辑分区(logical), 用 ‘l’ 表示逻辑分区,逻辑分区的id是从5开始的,因为前四个id为主分区或者扩展分区。既然把所有磁盘空间都分为了扩展分区,如果你在这里选择 ‘p’ 则会报错,如图
image.png
这是因为没有足够空间分给主分区了,那我们就分逻辑分区,下面我们直接通过命令来创建分区sdb6,sdb7,sdb8,分别大小为5G容量,执行效果如图
image.png
分区完后,需要输入 ‘w’ 命令来保存我们的配置,执行效果如图
image.png
再使用 fdisk -l /dev/sdb 查看分区情况,执行效果如图
image.png

  1. [root@localhost ~]# fdisk -l /dev/sdb
  2. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  3. Units = 扇区 of 1 * 512 = 512 bytes
  4. 扇区大小(逻辑/物理):512 字节 / 512 字节
  5. I/O 大小(最小/最佳):512 字节 / 512 字节
  6. 磁盘标签类型:dos
  7. 磁盘标识符:0xd135ed0e
  8. 设备 Boot Start End Blocks Id System
  9. /dev/sdb1 2048 41943039 20970496 5 Extended
  10. /dev/sdb5 4096 10489855 5242880 83 Linux
  11. /dev/sdb6 10491904 20977663 5242880 83 Linux
  12. /dev/sdb7 20979712 31465471 5242880 83 Linux
  13. /dev/sdb8 31467520 41943039 5237760 83 Linux

3. 格式化磁盘分区

3.1 命令 : 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.
下面展示下示例图,执行效果如图
image.png

  1. [root@localhost ~]# mke2fs -t ext4 /dev/sdb5
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. 文件系统标签=
  4. OS type: Linux
  5. 块大小=4096 (log=2)
  6. 分块大小=4096 (log=2)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 327680 inodes, 1310720 blocks
  9. 65536 blocks (5.00%) reserved for the super user
  10. 第一个数据块=0
  11. Maximum filesystem blocks=1342177280
  12. 40 block groups
  13. 32768 blocks per group, 32768 fragments per group
  14. 8192 inodes per group
  15. Superblock backups stored on blocks:
  16. 32768, 98304, 163840, 229376, 294912, 819200, 884736
  17. Allocating group tables: 完成
  18. 正在写入inode表: 完成
  19. Creating journal (32768 blocks): 完成
  20. Writing superblocks and filesystem accounting information: 完成
  21. [root@localhost ~]#

指定文件系统格式为ext4, 该命令等同于 mkfs.ext4 /dev/sdb5. 目前CentOS 6 默认文件系统格式为ext4, 所以以后你遇到需要格式磁盘分区的时候,直接指定格式为ext4即可,但早期的版本CentOS 5 是使用ext3作为默认的文件系统的,所以你可以根据操作系统的版本来决定格式化什么格式的文件系统。在上面的例子中,你是否有注意到一些指标呢?其中一个指标是 “块大小=4096” 这里涉及到一个 “块” 的概念,磁盘在被格式化的时候会预先规定好每一个块的大小,然后再把所有的空间分割成一个一个的小块,存数据的时候也是一个块一个块的去写入。所以如果你的磁盘存的都是特别小特别小的文件,比如说1k或者2k,那么建议在格式化磁盘的时候指定块数值小一点。ext文件系统默认块大小为4096也就是4k. 在格式化的时候,可以指定块大小为1024, 2048, 4096(它们是成倍增加的),虽然格式化的时候可以指定块大小超过4096,但是一旦超过4096则不能正常挂载,如何指定块大小?执行效果如图
image.png

  1. [root@localhost ~]# mke2fs -t ext4 -b 8192 /dev/sdb5
  2. Warning: blocksize 8192 not usable on most systems.
  3. mke2fs 1.42.9 (28-Dec-2013)
  4. mke2fs: 8192-byte blocks too big for system (max 4096)
  5. 无论如何也要继续? (y,n) y
  6. Warning: 8192-byte blocks too big for system (max 4096), forced to continue
  7. warning: 80 blocks unused.
  8. 文件系统标签=
  9. OS type: Linux
  10. 块大小=8192 (log=3)
  11. 分块大小=8192 (log=3)
  12. Stride=0 blocks, Stripe width=0 blocks
  13. 327680 inodes, 655280 blocks
  14. 32764 blocks (5.00%) reserved for the super user
  15. 第一个数据块=0
  16. Maximum filesystem blocks=671006720
  17. 10 block groups
  18. 65528 blocks per group, 65528 fragments per group
  19. 32768 inodes per group
  20. Superblock backups stored on blocks:
  21. 65528, 196584, 327640, 458696, 589752
  22. Allocating group tables: 完成
  23. 正在写入inode表: 完成
  24. Creating journal (16384 blocks): 完成
  25. Writing superblocks and filesystem accounting information: 完成
  26. [root@localhost ~]#

指定块大小为8192会提示,块值设置太大了,我们直接输入 ‘y’ 强制格式化,你还可以尝试指定更大的数字。
可以使用 ‘-L’ 来指定标签。标签会在挂载磁盘的时候使用,另外也可以写到配置文件里,稍后笔者介绍。关于格式化的这一部分,笔者建议你除非有需求,否则不需要指定块大小,也就是说,你只需要记住这两个选项: ‘-t’ 和 ‘-L’ 即可。

3.2 命令 : e2label

用来查看或修改分区的标签
image.png

  1. [root@localhost ~]# e2label /dev/sdb5 Test
  2. [root@localhost ~]# e2label /dev/sdb5
  3. Test
  4. [root@localhost ~]#

4.挂载/卸载磁盘

在上面的内容中讲到了磁盘的分区和格式化,那么格式化完了后,如何去用它呢?这就涉及到了挂载这块磁盘。格式化后的磁盘其实是一个块设备文件,类型为b,也许你会想,既然这个块文件就是那个分区,那么直接在那个文件中写数据不就写到了那个分区中么?当然不行。
在挂载某个分区前需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某一个分区挂载到了这个挂载点(目录)下,那么再往这个目录写数据使,则都会写到该分区中。这就需要你注意一下,在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用,但是一旦挂载上了,那么该目录下以前的东西就不能看到了。只有卸载掉该分区后才能看到。

4.1命令 : mount

如果不加任何选项,直接运行 “mount” 命令,会显示如下信息
image.png
这个命令可以查看当前系统已经挂载的所有分区,以及分区文件系统的类型,挂载点和一些选项等信息,所以你如果想知道某个分区的文件系统类型直接用该命令查看即可。下面我们先建立一个空目录,然后在目录里建一个空白文档,执行效果如图
image.png

  1. [root@localhost ~]# mkdir /newdir
  2. [root@localhost ~]# touch /newdir/newfile1.txt
  3. [root@localhost ~]# ls !$
  4. ls /newdir/newfile1.txt
  5. /newdir/newfile1.txt
  6. [root@localhost ~]#

然后把刚才格式化的 /dev/sdb5 挂载到 /newdir 上,执行效果如图
image.png
可以看到,我的/dev/sdb5指定的块值8192不合法,所以只能重新格式化磁盘,执行效果如图
image.png

  1. [root@localhost ~]# mke2fs -t ext4 -L TEST /dev/sdb5
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. 文件系统标签=TEST
  4. OS type: Linux
  5. 块大小=4096 (log=2)
  6. 分块大小=4096 (log=2)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 327680 inodes, 1310720 blocks
  9. 65536 blocks (5.00%) reserved for the super user
  10. 第一个数据块=0
  11. Maximum filesystem blocks=1342177280
  12. 40 block groups
  13. 32768 blocks per group, 32768 fragments per group
  14. 8192 inodes per group
  15. Superblock backups stored on blocks:
  16. 32768, 98304, 163840, 229376, 294912, 819200, 884736
  17. Allocating group tables: 完成
  18. 正在写入inode表: 完成
  19. Creating journal (32768 blocks): 完成
  20. Writing superblocks and filesystem accounting information: 完成
  21. [root@localhost ~]#

使用默认块值即可。我们继续挂载sdb5,执行效果如图
image.png

  1. [root@localhost ~]# mount /dev/sdb5 /newdir
  2. [root@localhost ~]# ls /newdir/
  3. lost+found
  4. [root@localhost ~]# df -h
  5. 文件系统 容量 已用 可用 已用% 挂载点
  6. devtmpfs 475M 0 475M 0% /dev
  7. tmpfs 487M 0 487M 0% /dev/shm
  8. tmpfs 487M 7.7M 479M 2% /run
  9. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  10. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  11. /dev/sda1 1014M 137M 878M 14% /boot
  12. tmpfs 98M 0 98M 0% /run/user/0
  13. /dev/sdb5 4.8G 20M 4.6G 1% /newdir
  14. [root@localhost ~]#

把 /dev/sdb5 挂载到 /newdir 后,原来在 /newdir 下的 newfile.txt 被覆盖了,通过 df -h 可以看到刚刚挂载的分区,我们也可以使用LABEL的方式挂载分区,执行效果如图
image.png

  1. [root@localhost ~]# umount /dev/sdb5
  2. [root@localhost ~]# df -h
  3. 文件系统 容量 已用 可用 已用% 挂载点
  4. devtmpfs 475M 0 475M 0% /dev
  5. tmpfs 487M 0 487M 0% /dev/shm
  6. tmpfs 487M 7.7M 479M 2% /run
  7. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  8. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  9. /dev/sda1 1014M 137M 878M 14% /boot
  10. tmpfs 98M 0 98M 0% /run/user/0
  11. [root@localhost ~]# mount LABEL=TEST /newdir/
  12. [root@localhost ~]# df -h
  13. 文件系统 容量 已用 可用 已用% 挂载点
  14. devtmpfs 475M 0 475M 0% /dev
  15. tmpfs 487M 0 487M 0% /dev/shm
  16. tmpfs 487M 7.7M 479M 2% /run
  17. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  18. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  19. /dev/sda1 1014M 137M 878M 14% /boot
  20. tmpfs 98M 0 98M 0% /run/user/0
  21. /dev/sdb5 4.8G 20M 4.6G 1% /newdir
  22. [root@localhost ~]#

本例中用到了 “umount” 命令,这个是用来卸载磁盘分区的,稍后笔者介绍。mount 命令常用的选项有:’-a’, ‘-t’, ‘-o’. 在讲 ‘-a’ 选项前,我们有必要先了解一下这个文件 /etc/fstab,执行效果如图
image.png

  1. /dev/sdb5 4.8G 20M 4.6G 1% /newdir
  2. [root@localhost ~]# cat /etc/fstab
  3. #
  4. # /etc/fstab
  5. # Created by anaconda on Thu Aug 5 00:26:55 2021
  6. #
  7. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  8. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  9. #
  10. /dev/mapper/centos-root / xfs defaults 0 0
  11. UUID=c28ef287-d640-413c-9b66-161b046c67d9 /boot xfs defaults 0 0
  12. /dev/mapper/centos-swap swap swap defaults 0 0
  13. [root@localhost ~]#

这个文件是系统启动时,需要挂载的各个分区。第一列就是分区的标识,可以写分区的LABEL,也可以写分区的UUID,当然也可以写分区名(/dev/sda1);第二列是挂载点;第三列是分区的格式;第四列则是mount的一些挂载参数,等下会详细介绍一下有哪些参数,一般情况下,直接写defaults即可;第五列的数字表示是否被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” : 启动群组磁盘配额模式;
学完这个/etc/fstab后,我们就可以自己修改这个文件,增加一行来挂载新增分区。例如,我增加了这样一行,示例代码如下。

  1. [root@localhost ~]# vim /etc/fstab
  2. 3
  3. #
  4. # /etc/fstab
  5. # Created by anaconda on Thu Aug 5 00:26:55 2021
  6. #
  7. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  8. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  9. #
  10. /dev/mapper/centos-root / xfs defaults 0 0
  11. UUID=c28ef287-d640-413c-9b66-161b046c67d9 /boot xfs defaults
  12. 0 0
  13. /dev/mapper/centos-swap swap swap defaults 0 0
  14. LABEL=TEST /newdir ext4 defaults 0 0

image.png
然后卸载掉刚才我们已经挂载的/dev/sdb5,执行效果如图
image.png

  1. [root@localhost ~]# umount /dev/sdb5
  2. [root@localhost ~]# df -h
  3. 文件系统 容量 已用 可用 已用% 挂载点
  4. devtmpfs 475M 0 475M 0% /dev
  5. tmpfs 487M 0 487M 0% /dev/shm
  6. tmpfs 487M 7.7M 479M 2% /run
  7. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  8. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  9. /dev/sda1 1014M 137M 878M 14% /boot
  10. tmpfs 98M 0 98M 0% /run/user/0
  11. [root@localhost ~]#

使用 df -h 查看已经成功卸载 /dev/sdb5 下面执行命令 mount -a来进行自动挂载,执行效果如图
image.png

  1. [root@localhost ~]# mount -a
  2. [root@localhost ~]# df -h
  3. 文件系统 容量 已用 可用 已用% 挂载点
  4. devtmpfs 475M 0 475M 0% /dev
  5. tmpfs 487M 0 487M 0% /dev/shm
  6. tmpfs 487M 7.7M 479M 2% /run
  7. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  8. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  9. /dev/sda1 1014M 137M 878M 14% /boot
  10. tmpfs 98M 0 98M 0% /run/user/0
  11. /dev/sdb5 4.8G 20M 4.6G 1% /newdir
  12. [root@localhost ~]#

此时,多出来一个 /dev/sdb5 挂载到了 /newdir 下。这就是 mount -a 命令执行的结果,这个 ‘-a’ 选项会把/etc/fstab中出现的所有磁盘分区挂载上。
‘-t’ 选项用来指定挂载的分区类型,默认不指定会自动识别。执行效果如图
image.png

  1. [root@localhost ~]# umount /dev/sdb5
  2. [root@localhost ~]# mount -t ext4 /dev/sdb5 /newdir/
  3. [root@localhost ~]# df -h
  4. 文件系统 容量 已用 可用 已用% 挂载点
  5. devtmpfs 475M 0 475M 0% /dev
  6. tmpfs 487M 0 487M 0% /dev/shm
  7. tmpfs 487M 7.7M 479M 2% /run
  8. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  9. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  10. /dev/sda1 1014M 137M 878M 14% /boot
  11. tmpfs 98M 0 98M 0% /run/user/0
  12. /dev/sdb5 4.8G 20M 4.6G 1% /newdir
  13. [root@localhost ~]#

‘-o’ 选项用来指定挂载的分区有哪些特性,即上面 “/etc/fatab” 配置文件中第四列的那些。我们经常这样使用这个 ‘-o’ 选项,执行效果如图
image.png

  1. [root@localhost ~]# umount /dev/sdb5
  2. [root@localhost ~]# mount -o ro,sync /dev/sdb5 /newdir/
  3. [root@localhost ~]# cd /newdir/
  4. [root@localhost newdir]# mkdir test
  5. mkdir: 无法创建目录"test": 只读文件系统
  6. [root@localhost newdir]#

如图所示,mkdir: 无法创建目录 “/newdir/dir2”: 只读文件系统
由于指定了 ‘ro’ 参数,所以该分区只读了。通过 mount 命令也可以看到 /dev/sdb5 有 ‘ro’ 选项,执行效果如图
image.png
下面重新挂载,让它恢复读写。执行效果如图
image.png

  1. [root@localhost newdir]# mount -o remount /dev/sdb5 /newdir/
  2. [root@localhost newdir]# mkdir /newdir/dir2
  3. [root@localhost newdir]# ls /newdir/
  4. dir2 lost+found
  5. [root@localhost newdir]#

4.2 命令 : blkid

在日常的运维工作中遇到过这样的情况,一台服务器上新装了两块磁盘,磁盘a(在服务器上显示为sdc)和磁盘b(在服务器上显示为sdd),有一次把这两块磁盘都拔掉了,然后再重新插上,重启机器,结果磁盘编号调换了,a变成了sdd,b变成了sdc(这是因为把磁盘插错了插槽),问题来了。通过上边的学习,你挂载磁盘是通过/dev/hdb1 这样的分区名字来挂载的,如果先前加入到了/etc/fstab 中,结果系统启动后则会挂载错分区。那么怎么样避免这样的情况发生?
这就用到了UUID,可以通过 blkid 命令获取各分区的UUID,执行效果如图
image.png
这样可以获得全部磁盘分区的UUID,如果格式化的时候指定了 LABEL 则该命令也会显示LABEL值,甚至连文件系统类型也会显示。当然这个命令后面也可以指定哪个分区,执行效果如图
image.png
获得UUID后,如何使用它呢,执行效果如图
image.png

  1. [root@localhost newdir]# blkid /dev/sdb5
  2. /dev/sdb5: LABEL="TEST" UUID="5145aeac-6883-4df9-8449-5cf14f1e1c0c" TYPE="ext4"
  3. [root@localhost newdir]# cd
  4. [root@localhost ~]# umount /newdir/
  5. [root@localhost ~]# mount UUID="5145aeac-6883-4df9-8449-5cf14f1e1c0c" /newdir/
  6. [root@localhost ~]# df -h
  7. 文件系统 容量 已用 可用 已用% 挂载点
  8. devtmpfs 475M 0 475M 0% /dev
  9. tmpfs 487M 0 487M 0% /dev/shm
  10. tmpfs 487M 7.7M 479M 2% /run
  11. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  12. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  13. /dev/sda1 1014M 137M 878M 14% /boot
  14. tmpfs 98M 0 98M 0% /run/user/0
  15. /dev/sdb5 4.8G 20M 4.6G 1% /newdir
  16. [root@localhost ~]#

也可以把下面这行写到 /etc/fstab 中,执行效果如图
image.png

  1. [root@localhost ~]# cat /etc/fstab
  2. #
  3. # /etc/fstab
  4. # Created by anaconda on Thu Aug 5 00:26:55 2021
  5. #
  6. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  7. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  8. #
  9. /dev/mapper/centos-root / xfs defaults 0 0
  10. UUID=c28ef287-d640-413c-9b66-161b046c67d9 /boot xfs defaults 0 0
  11. /dev/mapper/centos-swap swap swap defaults 0 0
  12. LABEL=TEST /newdir ext4 defaults 0 0
  13. UUID="5145aeac-6883-4df9-8449-5cf14f1e1c0c" ext4 defaults 0 0
  14. [root@localhost ~]#

如果想让某个分区开机后就自动挂载,有两个办法可以实现:
在 /etc/fstab 中添加一行,如上图,或者把挂载命令写到 /etc/rc.d/rc.local 文件中去,笔者会经常把想要开机启动的命令加到这个文件中。系统启动完后会执行这个文件中的命令,所以只要你想开机后运行什么命令统统写入到这个文件下面吧,直接放到最后面即可,把挂载的命令放到该文件的最后一行,执行效果如图
image.png

  1. [root@localhost ~]# cat /etc/rc.d/rc.local
  2. #!/bin/bash
  3. # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
  4. #
  5. # It is highly advisable to create own systemd services or udev rules
  6. # to run scripts during boot instead of using this file.
  7. #
  8. # In contrast to previous versions due to parallel execution during boot
  9. # this script will NOT be run after all other services.
  10. #
  11. # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
  12. # that this script will be executed during boot.
  13. touch /var/lock/subsys/local
  14. mount UUID="5145aeac-6883-4df9-8449-5cf14f1e1c0c" /nwdir/
  15. [root@localhost ~]#

以上两种方法,任选其一,介绍第二种方法其实也是教给你一个小知识,如何让一些操作行为随系统启动而自动执行。另外,需要给你一个小建议,那就是挂载磁盘分区的时候,尽量使用UUID或者LABEL这两种方法。

4.3 命令 : umount

这个命令也简单,后边可以跟挂载点,也可以跟分区名(/dev/hdb1), 但是不可以跟LABEL和UUID.
image.png
umount 命令有一个非常有用的选项那就是 ‘-l’, 有时候你会遇到不能卸载的情况,执行效果如图
image.png
这是因为当前目录为要卸载的分区上,解决办法有两种,一是到其他目录,二是使用 ‘-l’ 选项,执行效果如图
image.png

  1. [root@localhost ~]# umount -l /dev/sdb5
  2. [root@localhost ~]# df -h
  3. 文件系统 容量 已用 可用 已用% 挂载点
  4. devtmpfs 475M 0 475M 0% /dev
  5. tmpfs 487M 0 487M 0% /dev/shm
  6. tmpfs 487M 7.7M 479M 2% /run
  7. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  8. /dev/mapper/centos-root 17G 1.4G 16G 9% /
  9. /dev/sda1 1014M 137M 878M 14% /boot
  10. tmpfs 98M 0 98M 0% /run/user/0
  11. [root@localhost ~]#

4.4 建立一个swap文件增加虚拟内存

从装系统时就接触过这个swap了,它类似与windows的虚拟内存,分区的时候一般大小为内存的2倍,如果你的内存超过8G,那么你分16G似乎是没有必要了。分16G足够日常交换了。然而,还会有虚拟内存不够用的情况发生。如果真遇到了,莫非还要重新给磁盘分区?当然不能,那我们就增加一个虚拟的磁盘出来。基本的思路就是:建立swapfile -> 格式化为swap格式 -> 启用该虚拟磁盘,执行效果如图
image.png

  1. [root@localhost ~]# dd if=/dev/zero of=/tmp/newdisk bs=4k ount=102400
  2. dd: 无法识别的操作数"ount=102400"
  3. Try 'dd --help' for more information.
  4. [root@localhost ~]# dd if=/dev/zero of=/tmp/newdisk bs=4k count=102400
  5. 记录了102400+0 的读入
  6. 记录了102400+0 的写出
  7. 419430400字节(419 MB)已复制,2.61803 秒,160 MB/秒
  8. [root@localhost ~]#

“dd” 这个命令经常用到,所以请你也要掌握它的使用方法,其实也不难,用 “if” 指定源,基本上除了 “/dev/zero” 外基本上不会写别的,而/dev/zero 是UNIX系统特有的一个文件,它可以提供源源不断的 “0”, 关于它的其他信息请你在网上查一下资料。 “of” 指定目标文件, “bs” 定义块的大小, “count” 定义块的数量,这两个参数的多少决定了目标文件的大小,目标文件大小 = bs x count. 我们用dd建了一个大小为400M的文件,然后格式化成swap格式,执行效果如图
image.png

  1. [root@localhost ~]# mkswap -f /tmp/newdisk
  2. 正在设置交换空间版本 1,大小 = 409596 KiB
  3. 无标签,UUID=6a298e81-7834-4586-a136-f7c1bd3886b6
  4. [root@localhost ~]#

格式化完后,就可以挂载上使用了,执行效果如图
image.png

  1. [root@localhost ~]# mkswap -f /tmp/newdisk
  2. mkswap: /tmp/newdisk: warning: wiping old swap signature.
  3. 正在设置交换空间版本 1,大小 = 409596 KiB
  4. 无标签,UUID=4b364095-e068-45ca-b022-aa3add30e470
  5. [root@localhost ~]# free -m
  6. total used free shared buff/cache available
  7. Mem: 972 130 302 7 539 692
  8. Swap: 2047 0 2047
  9. [root@localhost ~]# swapon /tmp/newdisk
  10. swapon: /tmp/newdisk:不安全的权限 0644,建议使用 0600
  11. [root@localhost ~]# free -m
  12. total used free shared buff/cache available
  13. Mem: 972 130 302 7 539 692
  14. Swap: 2447 0 2447
  15. [root@localhost ~]#

前后对比swap分区多了400M空间。其中 “free” 这个命令用来查看内存使用情况, “-m” 表示以M为单位显示,会在后面介绍该命令。

4.5 LVM讲解

4.5.1什么是LVM?

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

4.5.2为什么要使用LVM?

在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,这时候,我们不能直接更换大硬盘,因为硬盘有价,数据无价,这时候我们就可以使用LVM,LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

4.5.3 LVM工作机制?

LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

4.5.4逻辑卷管理概念?

(1) 物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.
(2) 卷组(VG, Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
(3) 逻辑卷(LV, Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。
具体操作:
1:检查系统中是否安装了LVM管理工具,执行效果如图
image.png
2:如果未安装,则使用yum 方式安装,执行效果如图
image.png
3.手动添加1个硬盘:sdb 30G

3.1 先开始创建物理卷PV:

基本PV命令:

pvcreate 将物理分区新建为pv

pvs/pvscan 查看系统里有pv的磁盘

pvdisplay 显示系统上面的pv状态

pvremove 删除pv

准备使用: 1个磁盘: /dev/sdb 来完成LVM, 执行效果如图
image.png
使用pvs查看新建的PV,执行效果如图
image.png

  1. [root@localhost ~]# pvcreate /dev/sdb
  2. Physical volume "/dev/sdb" successfully created.
  3. [root@localhost ~]# pvs
  4. PV VG Fmt Attr PSize PFree
  5. /dev/sda2 centos lvm2 a-- <19.00g 0
  6. /dev/sdb lvm2 --- 30.00g 30.00g
  7. [root@localhost ~]#

3.2 创建卷组vg

有关vg的命令:

vgcreate [-s xM] vgName /dev/sd …… 新建vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv
vgextend 扩展vg,就是增加pv
vgs/vgscan 查看系统里有vg的磁盘
vgdisplay 显示系统上面的vg状态
vgremove 删除vg
vgreduce 在vg里删除pv
创建vgEric 并查看,执行效果如图
image.png

  1. [root@localhost ~]# vgcreate -s 16M vgEric /dev/sdb
  2. Volume group "vgEric" successfully created
  3. [root@localhost ~]# vgs
  4. VG #PV #LV #SN Attr VSize VFree
  5. centos 1 2 0 wz--n- <19.00g 0
  6. vgEric 1 0 0 wz--n- 29.98g 29.98g
  7. [root@localhost ~]#

3.3 创建逻辑卷lv
有关lv的命令:
lvcreate -l pe num /-L size -n lvname vgName 新建lv,-l指定pe的个数,-L指定容量,M,G
lvextend 增加容量
lvs/lvscan 查看系统里有lv的磁盘
lvdisplay 显示系统上面的lv状态
lvremove 删除lv
lvreduce 在lv里减少容量
创建lvEric,并查看,执行效果如图
image.png

  1. [root@localhost ~]# lvcreate -l 1 -n lvEric vgEric
  2. Logical volume "lvEric" created.
  3. [root@localhost ~]# lvs
  4. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  5. root centos -wi-ao---- <17.00g
  6. swap centos -wi-ao---- 2.00g
  7. lvEric vgEric -wi-a----- 16.00m
  8. [root@localhost ~]#

格式化新建的LV,执行效果如图
image.png

  1. [root@localhost ~]# mkfs.ext4 /dev/vgEric/lvEric
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. 文件系统标签=
  4. OS type: Linux
  5. 块大小=1024 (log=0)
  6. 分块大小=1024 (log=0)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 4096 inodes, 16384 blocks
  9. 819 blocks (5.00%) reserved for the super user
  10. 第一个数据块=1
  11. Maximum filesystem blocks=16777216
  12. 2 block groups
  13. 8192 blocks per group, 8192 fragments per group
  14. 2048 inodes per group
  15. Superblock backups stored on blocks:
  16. 8193
  17. Allocating group tables: 完成
  18. 正在写入inode表: 完成
  19. Creating journal (1024 blocks): 完成
  20. Writing superblocks and filesystem accounting information: 完成
  21. [root@localhost ~]#

3.4 挂载使用,执行效果如图
image.png

  1. [root@localhost ~]# mount /dev/vgEric/lvEric /mnt/
  2. [root@localhost ~]# df -h
  3. 文件系统 容量 已用 可用 已用% 挂载点
  4. devtmpfs 475M 0 475M 0% /dev
  5. tmpfs 487M 0 487M 0% /dev/shm
  6. tmpfs 487M 7.7M 479M 2% /run
  7. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  8. /dev/mapper/centos-root 17G 1.5G 16G 9% /
  9. /dev/sda1 1014M 137M 878M 14% /boot
  10. tmpfs 98M 0 98M 0% /run/user/0
  11. /dev/mapper/vgEric-lvEric 15M 268K 14M 2% /mnt
  12. [root@localhost ~]#

图2.33 挂载lv
下面我们将对LVM进行扩容和缩减操作,所以向/mnt中写入测试数据以验证LVM 的磁盘动态管理。
4.LVM的在线扩展
image.png

  1. [root@localhost ~]# lvs
  2. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  3. root centos -wi-ao---- <17.00g
  4. swap centos -wi-ao---- 2.00g
  5. lvEric vgEric -wi-ao---- 16.00m
  6. [root@localhost ~]#

查看实际的磁盘容量,发现并没改变,需要对文件系统进行扩容,执行效果如图
image.png

  1. [root@localhost ~]# resize2fs /dev/vgEric/lvEric
  2. resize2fs 1.42.9 (28-Dec-2013)
  3. The filesystem is already 16384 blocks long. Nothing to do!
  4. [root@localhost ~]# df -h
  5. 文件系统 容量 已用 可用 已用% 挂载点
  6. devtmpfs 475M 0 475M 0% /dev
  7. tmpfs 487M 0 487M 0% /dev/shm
  8. tmpfs 487M 7.7M 479M 2% /run
  9. tmpfs 487M 0 487M 0% /sys/fs/cgroup
  10. /dev/mapper/centos-root 17G 1.5G 16G 9% /
  11. /dev/sda1 1014M 137M 878M 14% /boot
  12. tmpfs 98M 0 98M 0% /run/user/0
  13. /dev/mapper/vgEric-lvEric 15M 268K 14M 2% /mnt
  14. [root@localhost ~]#
  1. 删除LVM

如果要彻底的来移除LVM的话,需要把创建的步骤反过来操作。

1:卸载 文件系统

2:删除lv

3:删除vg

4:删除pv
执行效果如图
image.png

  1. [root@localhost ~]# umount /mnt/
  2. [root@localhost ~]# lvremove /dev/mapper/vgEric-lvEric
  3. Do you really want to remove active logical volume vgEric/lvEric? [y/n]: y
  4. Logical volume "lvEric" successfully removed
  5. [root@localhost ~]#