Linux磁盘管理


一、虚拟机添加磁盘

  • 步骤一:打开虚拟机,点击左侧“编辑虚拟机设置”选项

05-Linux磁盘管理 - 图1

  • 步骤二:选中“硬盘”,点击“添加”

05-Linux磁盘管理 - 图2

  • 步骤三:选中“硬盘”,下一步

05-Linux磁盘管理 - 图3

  • 步骤四:不断next(下一步),直到出现如下图所示界面,选中“将虚拟磁盘存储为单个文件”,至于磁盘大小自己选择,我这里是默认的20GB,选好之后下一步

05-Linux磁盘管理 - 图4

  • 步骤五:点击“完成”

05-Linux磁盘管理 - 图5

  • 步骤六:步骤五完成后会回到如步骤二图所示界面,点击其下方的“确定”选项,会回到步骤一所示图片,若“设备”下方出现“磁盘2”,表示磁盘添加成功

05-Linux磁盘管理 - 图6


二、磁盘管理

1. 查看磁盘设备

  • sd表示硬盘
  • Linux系统,设备存放在dev文件夹下
  • ls /dev | grep sd 将dev文件夹下带有sd字样的文件或者目录过滤出来(grep 关键字 —> 将带有关键字的文件或目录列出来)
  1. [root@myserver ~]# ls /dev | grep sd
  2. sda
  3. sda1
  4. sda2
  5. sdb
  6. sdc
  7. sdd
  8. [root@myserver ~]#
  9. -----------------------------------------------------------------------
  10. · sda表示第一块磁盘,是我们安装系统时添加的
  11. · sda1为第一块磁盘的第一个分区,sda2为第一块磁盘的第二个分区
  12. · sdb表示第二块磁盘,是我们手动添加的(sdcsdd也是手动添加的,分别代表第二和第三块磁盘)

2. Linux磁盘使用

(1) 分区
  • 有mbr和gpt两种分区,较小时使用mbr分区,分区大于2TB时使用gpt分区
  • fdisk —> 分区工具
  1. [root@myserver ~]# fdisk /dev/sdb
  2. Welcome to fdisk (util-linux 2.32.1).
  3. Changes will remain in memory only, until you decide to write them.
  4. Be careful before using the write command.
  5. Device does not contain a recognized partition table.
  6. Created a new DOS disklabel with disk identifier 0x9dab2882.
  7. Command (m for help): n
  8. Partition type
  9. p primary (0 primary, 0 extended, 4 free)
  10. e extended (container for logical partitions)
  11. Select (default p): p
  12. Partition number (1-4, default 1): 1
  13. First sector (2048-41943039, default 2048):
  14. Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +5G
  15. Created a new partition 1 of type 'Linux' and of size 5 GiB.
  16. Command (m for help): p
  17. Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
  18. Units: sectors of 1 * 512 = 512 bytes
  19. Sector size (logical/physical): 512 bytes / 512 bytes
  20. I/O size (minimum/optimal): 512 bytes / 512 bytes
  21. Disklabel type: dos
  22. Disk identifier: 0x9dab2882
  23. Device Boot Start End Sectors Size Id Type
  24. /dev/sdb1 2048 10487807 10485760 5G 83 Linux
  25. Command (m for help): wq
  26. The partition table has been altered.
  27. Calling ioctl() to re-read partition table.
  28. Syncing disks.
  29. [root@myserver ~]# ls /dev | grep sd
  30. sda
  31. sda1
  32. sda2
  33. sdb
  34. sdb1
  35. sdc
  36. sdd
  37. -------------------------------------------------------------------------------
  38. · fdisk /dev/sdb --> 进入分区模式,对第二块磁盘(sdb)进行分区操作
  39. · Command (m for help): n --> 输入n,创建分区
  40. · Select (default p): p --> 输入p创建主分区(默认,能创建4个),输入e创建扩展分区
  41. · Partition number (1-4, default 1): 1 --> 确定当前创建的主分区编号,因为该磁盘没有主分区所以编号默认为1
  42. · First sector (2048-41943039, default 2048): --> 确定分区起始位置,默认为2048
  43. · Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +5G --> 确定分区大小(+5G表示,分区大小为5G)
  44. · Command (m for help): p --> 输入p,打印分区信息
  45. · Command (m for help): wq --> 输入wq保存分区设置并退出分区模式
  46. · ls /dev | grep sd --> 查看磁盘设备,第二块磁盘果然已经添加了第一个分区sdb1

(2) 创建文件系统
  • 又称分区格式化
  • 文件系统有ext3、ext4,xfs等,推荐xfs
  • mkfs —> 创建文件系统工具
  • -t 确定创建的文件系统的类型
  1. [root@myserver ~]# mkfs -t xfs /dev/sdb1
  2. meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
  3. = sectsz=512 attr=2, projid32bit=1
  4. = crc=1 finobt=1, sparse=1, rmapbt=0
  5. = reflink=1
  6. data = bsize=4096 blocks=1310720, imaxpct=25
  7. = sunit=0 swidth=0 blks
  8. naming =version 2 bsize=4096 ascii-ci=0, ftype=1
  9. log =internal log bsize=4096 blocks=2560, version=2
  10. = sectsz=512 sunit=0 blks, lazy-count=1
  11. realtime =none extsz=4096 blocks=0, rtextents=0
  12. ---------------------------------------------------------------------------
  13. · mkfs -t xfs /dev/sdb1 为第二块磁盘的第一块分区(sdb1分区)创建xfs文件系统
  14. ---------------------------------------------------------------------------
  15. [root@myserver ~]# mkfs -t ext4 /dev/sdb2
  16. mke2fs 1.45.4 (23-Sep-2019)
  17. Creating filesystem with 1572864 4k blocks and 393216 inodes
  18. Filesystem UUID: 14785859-9e9e-4a30-a3db-0dd4525f57d6
  19. Superblock backups stored on blocks:
  20. 32768, 98304, 163840, 229376, 294912, 819200, 884736
  21. Allocating group tables: done
  22. Writing inode tables: done
  23. Creating journal (16384 blocks): done
  24. Writing superblocks and filesystem accounting information: done
  25. ---------------------------------------------------------------------------
  26. · mkfs -t ext4 /dev/sdb2 为第二块磁盘的第二块分区(sdb2分区)创建ext4文件系统

(3) 挂载
  • mkdir -p /data/sdb1 —> 创建一个挂载点,就是一个文件目录
  • mount /dev/sdb1 /data/sdb1 —> 将第二块磁盘的第一个分区(sdb1分区)挂载到/data/adb1目录下
  • 挂载成后就可以向挂载点写数据了,这些数据会流到磁盘存储起来
  1. [root@myserver ~]# ls /
  2. bin dev home lib64 mnt proc run srv tmp var
  3. boot etc lib media opt root sbin sys usr
  4. [root@myserver ~]# mkdir -p /data/sdb1
  5. [root@myserver ~]# ls /
  6. bin data etc lib media opt root sbin sys usr
  7. boot dev home lib64 mnt proc run srv tmp var
  8. [root@myserver ~]# mount /dev/sdb1 /data/sdb1
  9. [root@myserver ~]# df -h
  10. Filesystem Size Used Avail Use% Mounted on
  11. devtmpfs 1.9G 0 1.9G 0% /dev
  12. tmpfs 1.9G 0 1.9G 0% /dev/shm
  13. tmpfs 1.9G 10M 1.9G 1% /run
  14. tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
  15. /dev/mapper/cl-root 36G 4.5G 31G 13% /
  16. /dev/sda1 976M 193M 716M 22% /boot
  17. tmpfs 376M 1.2M 375M 1% /run/user/42
  18. tmpfs 376M 4.6M 371M 2% /run/user/0
  19. /dev/sr0 7.7G 7.7G 0 100% /run/media/root/CentOS-8-2-2004-x86_64-dvd
  20. /dev/sdb1 5.0G 68M 5.0G 2% /data/sdb1
  21. --------------------------------------------------------------------------------------
  22. · df -h --> 查看当前磁盘的状况
  23. · 磁盘名称 磁盘大小 使用空间 可用空间 使用率 挂载点

(4) 卸载
  • umount 设备名/挂载点名 —> 卸载磁盘分区
  • !注意,不要在挂载点目录下卸载磁盘分区(如在/data/sdb1目录下卸载/dev/sdb1),会报错
  1. [root@myserver ~]# mount /dev/sdb1 /data/sdb1
  2. [root@myserver ~]# df -h
  3. Filesystem Size Used Avail Use% Mounted on
  4. devtmpfs 1.9G 0 1.9G 0% /dev
  5. tmpfs 1.9G 0 1.9G 0% /dev/shm
  6. tmpfs 1.9G 10M 1.9G 1% /run
  7. tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
  8. /dev/mapper/cl-root 36G 4.5G 31G 13% /
  9. /dev/sda1 976M 193M 716M 22% /boot
  10. tmpfs 376M 1.2M 375M 1% /run/user/42
  11. tmpfs 376M 4.6M 371M 2% /run/user/0
  12. /dev/sr0 7.7G 7.7G 0 100% /run/media/root/CentOS-8-2-2004-x86_64-dvd
  13. /dev/sdb1 5.0G 68M 5.0G 2% /data/sdb1
  14. [root@myserver ~]# umount /dev/sdb1
  15. [root@myserver ~]# df -h
  16. Filesystem Size Used Avail Use% Mounted on
  17. devtmpfs 1.9G 0 1.9G 0% /dev
  18. tmpfs 1.9G 0 1.9G 0% /dev/shm
  19. tmpfs 1.9G 10M 1.9G 1% /run
  20. tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
  21. /dev/mapper/cl-root 36G 4.5G 31G 13% /
  22. /dev/sda1 976M 193M 716M 22% /boot
  23. tmpfs 376M 1.2M 375M 1% /run/user/42
  24. tmpfs 376M 4.6M 371M 2% /run/user/0
  25. /dev/sr0 7.7G 7.7G 0 100% /run/media/root/CentOS-8-2-2004-x86_64-dvd
  26. --------------------------------------------------------------------------------------
  27. · 通过设备名卸载磁盘分区sdb1
  28. --------------------------------------------------------------------------------------
  29. [root@myserver ~]# mount /dev/sdb1 /data/sdb1
  30. [root@myserver ~]# df -h
  31. Filesystem Size Used Avail Use% Mounted on
  32. devtmpfs 1.9G 0 1.9G 0% /dev
  33. tmpfs 1.9G 0 1.9G 0% /dev/shm
  34. tmpfs 1.9G 10M 1.9G 1% /run
  35. tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
  36. /dev/mapper/cl-root 36G 4.5G 31G 13% /
  37. /dev/sda1 976M 193M 716M 22% /boot
  38. tmpfs 376M 1.2M 375M 1% /run/user/42
  39. tmpfs 376M 4.6M 371M 2% /run/user/0
  40. /dev/sr0 7.7G 7.7G 0 100% /run/media/root/CentOS-8-2-2004-x86_64-dvd
  41. /dev/sdb1 5.0G 68M 5.0G 2% /data/sdb1
  42. [root@myserver ~]# umount /data/sdb1
  43. [root@myserver ~]# df -h
  44. Filesystem Size Used Avail Use% Mounted on
  45. devtmpfs 1.9G 0 1.9G 0% /dev
  46. tmpfs 1.9G 0 1.9G 0% /dev/shm
  47. tmpfs 1.9G 10M 1.9G 1% /run
  48. tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
  49. /dev/mapper/cl-root 36G 4.5G 31G 13% /
  50. /dev/sda1 976M 193M 716M 22% /boot
  51. tmpfs 376M 1.2M 375M 1% /run/user/42
  52. tmpfs 376M 4.6M 371M 2% /run/user/0
  53. /dev/sr0 7.7G 7.7G 0 100% /run/media/root/CentOS-8-2-2004-x86_64-dvd
  54. --------------------------------------------------------------------------------------
  55. · 通过挂载点卸载磁盘分区sdb1

(5) 设置开机自动挂载
  • 默认情况下,系统并不会开机自动挂载磁盘分区,所以需要我们手动设置
  • 在/etc/fstab文件中进行设置
  1. [root@myserver ~]# vim /etc/fstab
  2. ######################################################################
  3. 在/etc/fstab文件最后换一行输入:(!注意,一定不要出错,不然会导致开机失败)
  4. --------------------------------------
  5. /dev/sdb1 /data/sdb1 xfs defaults 0 0
  6. --------------------------------------
  7. 磁盘分区名 挂载点 对应文件系统 默认
  8. ######################################################################
  9. [root@myserver ~]# mount -av
  10. / : ignored
  11. /boot : already mounted
  12. swap : ignored
  13. /data/sdb1 : already mounted
  14. [root@myserver ~]# reboot
  15. [root@myserver ~]# df -h
  16. Filesystem Size Used Avail Use% Mounted on
  17. devtmpfs 1.9G 0 1.9G 0% /dev
  18. tmpfs 1.9G 0 1.9G 0% /dev/shm
  19. tmpfs 1.9G 11M 1.9G 1% /run
  20. tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
  21. /dev/mapper/cl-root 36G 4.5G 31G 13% /
  22. /dev/sdb1 5.0G 68M 5.0G 2% /data/sdb1
  23. /dev/sda1 976M 193M 716M 22% /boot
  24. tmpfs 376M 1.2M 375M 1% /run/user/42
  25. tmpfs 376M 4.6M 371M 2% /run/user/0
  26. /dev/sr0 7.7G 7.7G 0 100% /run/media/root/CentOS-8-2-2004-x86_64-dvd
  27. ---------------------------------------------------------------------------------------
  28. · mount -av --> 查询当前已挂载的挂载点
  29. · reboot --> 重启系统
  30. · df -h --> 重启之后查询磁盘状态,我们可以看到磁盘分区sdb1已经挂载