Centos7磁盘相关命令


Linux系统的分区概念

分区格式:

磁盘的常见分区格式:MBR分区和GPT分区:

MBR 分区,

MBR 的意思是 “主引导记录”。MBR 最大支持 2TB 容量,在容量方面存在着极大的瓶颈。
MBR分区最多可以分4个分区

硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。

一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。

扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。

由于扩展分区只能有一个,所以这4个分区可以是4个主分区(P + P + P + P)或者3个主分区加1个扩展分区(P + P + P + E)

注意:
(1)实际上,不建议用户将硬盘分为4个主分区.这是因为,假如一个20GB的硬盘,若4个主分区占据了15GB的空间,则剩下的5GB空间完全不能使用,因为已经没有多余的分区表可以记录这些空间了.
(2)考虑到磁盘的连续性,一般建议将扩展分区放在最后面的柱面内.
(3)理论上允许一个硬盘只有1个主分区,其它空间都分配给扩展分区.(P + E)

参考:https://blog.csdn.net/weixin_48345177/article/details/131287556

GPT 分区,

GPT 意为 GUID 分区表,它支持的磁盘容量比 MBR 大得多。
这是一个正逐渐取代 MBR 的新标准,它是由 UEFI 辅住而形成的,将来 UEFI 用于取代老旧的 BIOS,而 GPT 则取代老旧的 MBR。
GPT分区最多可以分128个分区。

MBR、GPT分区的不同

gpt类型的分区有主分区吗?
答:GPT(GUID Partition Table)类型的分区是可以有主分区的,但与MBR(Master Boot Record)类型的分区不同的是,GPT允许创建最多128个主分区。此外,GPT还提供了一个保护分区和一个备份分区。保护分区包含硬盘的分区表,而备份分区则是对保护分区的备份,以防分区表损坏。因此,GPT类型的分区比MBR更灵活和可靠。

gpt类型的分区有扩展分区的概念吗?
答:GPT类型的分区没有扩展分区的概念。扩展分区是MBR类型的分区中的一种特殊分区,它可以包含其他逻辑分区。但在GPT分区方案中,每个分区都是独立的主分区,没有扩展分区的概念。因此,可以在GPT分区中直接创建多个主分区来满足需要。这也是GPT与MBR分区方案的另一个不同之处。

MBR磁盘分区工具fdisk:

fdisk工具:常用命令含义

fdisk工具用于 MBR格式

  1. 命令:fdisk
  2. fdisk分区:
  3. 1、最多只有4个分区
  4. 2 第一步:创建分区
  5. fdisk /dev/sdb
  6. n : 创建一个分区
  7. d : 删除一个分区
  8. p : 打印分区列表
  9. w : 写入磁盘
  10. 第二步:保存分区
  11. w : 写入磁盘
  12. 3、制作文件系统
  13. mkfs.xfs /dev/sdb1
  14. 4、挂载使用
  15. mount /dev/sdb1 /opt
  16. 5、查看
  17. lsblk

fdisk工具:常用命令含义

适用于磁盘小于2T的磁盘,分区类型MBR,主分区4或者主分区3+扩展分区,分区后需要保存才能生效。
操作步骤如下:

  1. fdisk /dev/sdb
  2. Command (m for help): m #输入m列出常用的命令
  3. Command action
  4. a toggle a bootable flag #切换分区启动标记
  5. b edit bsd disklabel #编辑sdb磁盘标签
  6. c toggle the dos compatibility flag #切换dos兼容模式
  7. d delete a partition #删除分区
  8. l list known partition types #显示分区类型
  9. m print this menu #显示帮助菜单
  10. n add a new partition #新建分区
  11. o create a new empty DOS partition table #创建新的空白分区表
  12. p print the partition table #显示分区表的信息
  13. q quit without saving changes #不保存退出
  14. s create a new empty Sun disklabel #创建新的Sun磁盘标签
  15. t change a partitions system id #修改分区ID,可以通过l查看id
  16. u change display/entry units #修改容量单位,磁柱或扇区
  17. v verify the partition table #检验分区表
  18. w write table to disk and exit #保存退出
  19. x extra functionality (experts only) #拓展功能
  20. n #新建分区
  21. p #显示分区表的信息
  22. d # 删除一个已有的分区,保存退出后需要执行partprobe命令刷新一下分区表
  23. w #保存退出

fdisk创建分区:

操作步骤如下:

  1. fdisk /dev/sdb
  2. 欢迎使用 fdisk (util-linux 2.23.2)。
  3. 更改将停留在内存中,直到您决定将更改写入磁盘。
  4. 使用写入命令前请三思。
  5. Device does not contain a recognized partition table
  6. 使用磁盘标识符 0x12c57921 创建新的 DOS 磁盘标签。
  7. 命令(输入 m 获取帮助):n
  8. Partition type:
  9. p primary (0 primary, 0 extended, 4 free)
  10. e extended
  11. Select (default p): p
  12. 分区号 (1-4,默认 1):
  13. 起始 扇区 (2048-41943039,默认为 2048):
  14. 将使用默认值 2048
  15. Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
  16. 分区 1 已设置为 Linux 类型,大小设为 1 GiB
  17. 命令(输入 m 获取帮助):p
  18. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  19. Units = 扇区 of 1 * 512 = 512 bytes
  20. 扇区大小(逻辑/物理):512 字节 / 512 字节
  21. I/O 大小(最小/最佳):512 字节 / 512 字节
  22. 磁盘标签类型:dos
  23. 磁盘标识符:0x12c57921
  24. 设备 Boot Start End Blocks Id System
  25. /dev/sdb1 2048 2099199 1048576 83 Linux
  26. 命令(输入 m 获取帮助):
  27. #####
  28. 重复上述步骤,创建41G的主分区
  29. 命令(输入 m 获取帮助):p
  30. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  31. Units = 扇区 of 1 * 512 = 512 bytes
  32. 扇区大小(逻辑/物理):512 字节 / 512 字节
  33. I/O 大小(最小/最佳):512 字节 / 512 字节
  34. 磁盘标签类型:dos
  35. 磁盘标识符:0x12c57921
  36. 设备 Boot Start End Blocks Id System
  37. /dev/sdb1 2048 2099199 1048576 83 Linux
  38. /dev/sdb2 2099200 4196351 1048576 83 Linux
  39. /dev/sdb3 4196352 6293503 1048576 83 Linux
  40. /dev/sdb4 6293504 8390655 1048576 83 Linux
  41. ####
  42. 之后再创建新的分区就会失败。即使有足够的空间。
  43. 命令(输入 m 获取帮助):
  44. 命令(输入 m 获取帮助):n
  45. If you want to create more than four partitions, you must replace a
  46. primary partition with an extended partition first.
  47. 命令(输入 m 获取帮助):
  48. #####
  49. 删除主分区4,把剩余的空间都给他
  50. 命令(输入 m 获取帮助):d # 删除主分区4
  51. 分区号 (1-4,默认 4):4
  52. 分区 4 已删除
  53. 命令(输入 m 获取帮助):p # 查看
  54. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  55. Units = 扇区 of 1 * 512 = 512 bytes
  56. 扇区大小(逻辑/物理):512 字节 / 512 字节
  57. I/O 大小(最小/最佳):512 字节 / 512 字节
  58. 磁盘标签类型:dos
  59. 磁盘标识符:0x12c57921
  60. 设备 Boot Start End Blocks Id System
  61. /dev/sdb1 2048 2099199 1048576 83 Linux
  62. /dev/sdb2 2099200 4196351 1048576 83 Linux
  63. /dev/sdb3 4196352 6293503 1048576 83 Linux
  64. 命令(输入 m 获取帮助):n # 新建扩展分区
  65. Partition type:
  66. p primary (3 primary, 0 extended, 1 free)
  67. e extended
  68. Select (default e): e # 选择创建扩展分区
  69. 已选择分区 4
  70. 起始 扇区 (6293504-41943039,默认为 6293504):
  71. 将使用默认值 6293504
  72. Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039): # 直接回车,剩余空间都给它
  73. 将使用默认值 41943039
  74. 分区 4 已设置为 Extended 类型,大小设为 17 GiB
  75. 命令(输入 m 获取帮助):p # 查看
  76. 磁盘 /dev/sdb21.5 GB, 21474836480 字节,41943040 个扇区
  77. Units = 扇区 of 1 * 512 = 512 bytes
  78. 扇区大小(逻辑/物理):512 字节 / 512 字节
  79. I/O 大小(最小/最佳):512 字节 / 512 字节
  80. 磁盘标签类型:dos
  81. 磁盘标识符:0x12c57921
  82. 设备 Boot Start End Blocks Id System
  83. /dev/sdb1 2048 2099199 1048576 83 Linux
  84. /dev/sdb2 2099200 4196351 1048576 83 Linux
  85. /dev/sdb3 4196352 6293503 1048576 83 Linux
  86. /dev/sdb4 6293504 41943039 17824768 5 Extended
  87. 命令(输入 m 获取帮助): w # 保存
  88. #######
  89. 查看sdb分区。
  90. [root@test ~]# lsblk /dev/sdb
  91. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  92. sdb 8:16 0 10G 0 disk
  93. ├─sdb1 8:17 0 1G 0 part
  94. ├─sdb2 8:18 0 1G 0 part
  95. ├─sdb3 8:19 0 1G 0 part
  96. └─sdb4 8:20 0 1K 0 part

GPT磁盘分区工具gdis:

gdis工具用于 GPT格式

  1. [root@egon ~]# yum install gdisk -y
  2. [root@egon ~]# gdisk /dev/sdc
  3. ......
  4. Command (? for help): m
  5. b back up GPT data to a file #将GPT数据备份到文件中
  6. c change a partition's name #更改分区的名称
  7. d delete a partition #删除分区
  8. i show detailed information on a partition #显示分区的详细信息
  9. l list known partition types #列出已知的分区类型
  10. n add a new partition #添加一个新的分区
  11. o create a new empty GUID partition table (GPT) #创建一个新的空GUID分区表(GPT)
  12. p print the partition table #打印分区表
  13. q quit without saving changes #没有保存更改就退出
  14. r recovery and transformation options (experts only) #恢复和转换选项(仅限专家使用)
  15. s sort partitions #年代分类分区
  16. t change a partition's type code #不要更改分区的类型代码
  17. v verify disk #验证磁盘
  18. w write table to disk and exit #将表写入磁盘并退出
  19. x extra functionality (experts only) #额外功能(仅限专家使用)
  20. ? print this menu #打印菜单

gdisk创建分区

  1. Command (? for help): n # 新建
  2. Partition number (1-128, default 1): # 直接回车,默认分区号为1
  3. First sector (34-5242879966, default = 2048) or {+-}size{KMGTP}: #直接回车,使用默认的起始位置
  4. Last sector (2048-5242879966, default = 5242879966) or {+-}size{KMGTP}: +1G # 设定1G的空间
  5. Current type is 'Linux filesystem'
  6. Hex code or GUID (L to show codes, Enter = 8300): L # 列出所有文件系统
  7. ......会看到一系列文件系统信息,默认的8300编号代表Linux filesystem,用它就好
  8. Hex code or GUID (L to show codes, Enter = 8300): # 直接回车用默认8300就好
  9. Changed type of partition to 'Linux filesystem'
  10. Command (? for help): p # 打印查看
  11. ......
  12. Number Start (sector) End (sector) Size Code Name
  13. 1 2048 2099199 1024.0 MiB 8300 Linux filesystem
  14. Command (? for help): w # 保存
  15. Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
  16. PARTITIONS!!
  17. Do you want to proceed? (Y/N): y # 输入y保存
  18. OK; writing new GUID partition table (GPT) to /dev/sdc.
  19. The operation has completed successfully.

格式化制作文件系统与挂载

磁盘必须格式化文件系统才能挂载使用

格式化文件系统

  1. 针对一个硬盘 /dev/sdb
  2. 可以不分区,直接格式化制作文件系统。
  3. mkfs.xfs /dev/sdb
  4. 也可以基于MBR或者GPT分区方式完毕后,针对某一分区,比如/dev/sdb2制作文件系统。
  5. [root@test ~]# mkfs.xfs /dev/sdb2
  6. meta-data=/dev/sdb2 isize=512 agcount=4, agsize=65536 blks
  7. = sectsz=512 attr=2, projid32bit=1
  8. = crc=1 finobt=0, sparse=0
  9. data = bsize=4096 blocks=262144, imaxpct=25
  10. = sunit=0 swidth=0 blks
  11. naming =version 2 bsize=4096 ascii-ci=0 ftype=1
  12. log =internal log bsize=4096 blocks=2560, version=2
  13. = sectsz=512 sunit=0 blks, lazy-count=1
  14. realtime =none extsz=4096 blocks=0, rtextents=0

centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,仍然支持ext4,xfs专为大数据产生,每个单个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump,xfsrestore来备份和恢复。

挂载与卸载:

以/dev/sdb2 为例子演示

挂载
[root@test ~]# mkdir /opt2
[root@test ~]# mount /dev/sdb2 /opt2

卸载
[root@test ~]# umount /dev/sdb2 或者 umount /opt2

强制卸载
umount -l /dev/sdb2 # 或者umount -l /opt2

开启开机自动挂载
编辑文件/etc/fstab

  1. [root@test~]# sed -i '$a /dev/sdb1 /opt xfs defaults 0 0' /etc/fstab
  2. [root@test~]# tail -1 /etc/fstab
  3. /dev/sdb1 /opt xfs defaults 0 0

补充:磁盘挂载mount

  1. -t 指定文件系统
  2. -a 挂载/etc/fstab中配置的所有
  3. [root@egon ~]# mount -t xfs /dev/sdb1 /db1
  4. 可以查看到文件系统的uuid并挂载
  5. [root@egon ~]# blkid | grep sdb1
  6. /dev/sdb1: UUID="10a939a8-d17c-4a0f-9a89-8066ac013855" TYPE="xfs"
  7. [root@egon ~]# mount UUID="10a939a8-d17c-4a0f-9a89-8066ac013855" /opt
  8. 建议配置文件/etc/fstabuuid
  9. [root@egon ~]# tail -1 /etc/fstab # 编辑文件,新增一行
  10. UUID="10a939a8-d17c-4a0f-9a89-8066ac013855" /opt xfs defaults 0 0
  11. [root@egon ~]# mount -a
  12. [root@egon ~]# df # 查看挂载情况

LVM

LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘
可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。

实际的物理磁盘及其划分的分区和其上的物理卷(PV)。
一个或多个物理卷可以用来创建卷组(VG)。
然后基于卷组可以创建逻辑卷(LV)。
只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。
文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。

通过LVM技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提过一个卷的概念,然后在这些卷上简历文件系统,:

  1. 物理卷(PV):(physical volume),把常规的磁盘设备通过pvcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区。(面粉)
  2. 卷组(VG):(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体。(面团)
  3. 逻辑卷(LV):(logical volume),从卷组中划分需要的空间大小出来。用户仅需对其格式化然后即可挂载使用。从VG中切割出的空间用于创建文件系统。(切成馒头)
  4. 基本单元(PE):(physical extend),分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25PE

lvm优缺点总结:

  1. # 优点:
  2. # 1、可以在系统运行的状态下动态的扩展文件系统的大小。
  3. # 2、文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
  4. # 3、可以增加新的磁盘到LVM的存储池中。
  5. # 4、可以以镜像的方式冗余重要的数据到多个物理磁盘。
  6. # 5、可以方便的导出整个卷组到另外一台机器。
  7. # 缺点:
  8. # 1、因为加入了额外的操作,存取性能受到影响。
  9. # 2、当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
  10. 解释:LVM如果有一个磁盘损坏,整个lvm都坏了,lvm只有动态扩展作用,
  11. 方案:底层用RAID + 上层LVM = 既有冗余又有动态扩展
  12. # 2、在从卷组中移除一个磁盘的时候必须使用reducevg命令(该命令要求root权限,并且不允许在快照卷组中使用)

LVM使用:

  1. 下载软件包
  2. 1yum install -y lvm2
  3. # 制作
  4. [root@egon ~]# pvcreate /dev/sdb1 # 对分区做
  5. [root@egon ~]# pvcreate /dev/sdb2 # 对分区做
  6. [root@egon ~]# pvcreate /dev/sdb3 # 对分区做
  7. [root@egon ~]# pvcreate /dev/sdc # 对整块盘做
  8. # 查看
  9. [root@egon ~]# pvs
  10. PV VG Fmt Attr PSize PFree
  11. /dev/sdb1 lvm2 --- 1.00g 1.00g
  12. /dev/sdb2 lvm2 --- 1.00g 1.00g
  13. /dev/sdb3 lvm2 --- 1.00g 1.00g
  14. /dev/sdc lvm2 --- 20.00g 20.00g
  15. [root@egon ~]# pvscan
  16. PV /dev/sdb1 lvm2 [1.00 GiB]
  17. PV /dev/sdc lvm2 [20.00 GiB]
  18. PV /dev/sdb2 lvm2 [1.00 GiB]
  19. PV /dev/sdb3 lvm2 [1.00 GiB]
  20. Total: 4 [23.00 GiB] / in use: 0 [0 ] / in no VG: 4 [23.00 GiB]
  21. ####
  22. 制作vg:将pv划入vg
  23. # 制作一个vg1:
  24. [root@egon ~]# vgcreate vg1 /dev/sdb1 /dev/sdc # 包含/dev/sdb1与/dev/sdc两个pv
  25. Volume group "vg1" successfully created
  26. [root@egon ~]# vgs
  27. VG #PV #LV #SN Attr VSize VFree
  28. vg1 2 0 0 wz--n- 20.99g 20.99g
  29. # 也可以再制作一个vg2:
  30. [root@egon ~]# vgcreate vg2 /dev/sdb2 /dev/sdb3 # 包含/dev/sdb2与/dev/sdb3两个pv
  31. Volume group "vg2" successfully created
  32. [root@egon ~]# vgs
  33. VG #PV #LV #SN Attr VSize VFree
  34. vg1 2 0 0 wz--n- 20.99g 20.99g
  35. vg2 2 0 0 wz--n- 1.99g 1.99g
  36. [root@egon ~]#
  37. 3创建逻辑卷lvm
  38. 选项
  39. -L #逻辑卷大小
  40. -n #逻辑卷名字
  41. # 从vg1中分出来逻辑卷lv1_from_vg1、lv2_from_vg1
  42. [root@egon ~]# lvcreate -L 100M -n lv1_from_vg1 vg1
  43. [root@egon ~]# lvcreate -L 200M -n lv2_from_vg1 vg1
  44. # 从vg2中分出来一个建逻辑卷lv1_from_vg2、lv1_from_vg2
  45. [root@egon ~]# lvcreate -L 300M -n lv1_from_vg2 vg2
  46. [root@egon ~]# lvcreate -L 400M -n lv2_from_vg2 vg2
  47. # 查看
  48. [root@egon ~]# lvs
  49. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  50. lv1_from_vg1 vg1 -wi-a----- 100.00m
  51. lv2_from_vg1 vg1 -wi-a----- 200.00m
  52. lv1_from_vg2 vg2 -wi-a----- 300.00m
  53. lv2_from_vg2 vg2 -wi-a----- 400.00m
  54. # 把vg的100%空间都给lv
  55. lvcreate -l 100%VG -n lv的名字 vg的名字
  56. 格式与挂载:
  57. [root@egon ~]# mkfs.xfs /dev/vg1/lv1_from_vg1
  58. [root@egon ~]# mkfs.xfs /dev/vg1/lv2_from_vg1
  59. [root@egon ~]# mkfs.xfs /dev/vg2/lv1_from_vg2
  60. [root@egon ~]# mkfs.xfs /dev/vg2/lv2_from_vg2
  61. [root@egon ~]# mount /dev/vg1/lv1_from_vg1 /test1/
  62. [root@egon ~]# mount /dev/vg1/lv2_from_vg1 /test2/
  63. [root@egon ~]#
  64. [root@egon ~]# mount /dev/vg2/lv1_from_vg2 /test3/
  65. [root@egon ~]# mount /dev/vg2/lv2_from_vg2 /test4/
  66. # 查看
  67. [root@egon ~]# df
  68. 文件系统 1K-块 已用 可用 已用% 挂载点
  69. ...
  70. /dev/mapper/vg1-lv1_from_vg1 98980 5344 93636 6% /test1
  71. /dev/mapper/vg1-lv2_from_vg1 201380 10464 190916 6% /test2
  72. /dev/mapper/vg2-lv1_from_vg2 303780 15584 288196 6% /test3
  73. /dev/mapper/vg2-lv2_from_vg2 406180 20704 385476 6% /test4
  74. [root@egon ~]#

示例:

  1. [root@test ~]# pvcreate /dev/sdb1
  2. Physical volume "/dev/sdb1" successfully created.
  3. [root@test ~]#
  4. [root@test ~]# pvcreate /dev/sdb2
  5. WARNING: xfs signature detected on /dev/sdb2 at offset 0. Wipe it? [y/n]: ^C Interrupted...
  6. Aborted wiping of xfs.
  7. 1 existing signature left on the device.
  8. Interrupted...
  9. [root@test ~]#
  10. [root@test ~]#
  11. [root@test ~]# pvcreate /dev/sdb3
  12. WARNING: swap signature detected on /dev/sdb3 at offset 4086. Wipe it? [y/n]: y
  13. Wiping swap signature on /dev/sdb3.
  14. Physical volume "/dev/sdb3" successfully created.
  15. [root@test ~]#
  16. [root@test ~]#
  17. [root@test ~]#
  18. [root@test ~]#
  19. [root@test ~]#
  20. [root@test ~]# lsblk
  21. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  22. sda 8:0 0 100G 0 disk
  23. ├─sda1 8:1 0 512M 0 part /boot
  24. └─sda2 8:2 0 99.5G 0 part
  25. ├─centos-root 253:0 0 99G 0 lvm /
  26. └─centos-swap 253:1 0 512M 0 lvm [SWAP]
  27. sdb 8:16 0 10G 0 disk
  28. ├─sdb1 8:17 0 1G 0 part
  29. ├─sdb2 8:18 0 1G 0 part
  30. ├─sdb3 8:19 0 1G 0 part
  31. └─sdb4 8:20 0 1K 0 part
  32. sr0 11:0 1 1024M 0 rom
  33. [root@test ~]#
  34. [root@test ~]#
  35. [root@test ~]#
  36. [root@test ~]# pvs
  37. PV VG Fmt Attr PSize PFree
  38. /dev/sda2 centos lvm2 a-- <99.50g 0
  39. /dev/sdb1 lvm2 --- 1.00g 1.00g
  40. /dev/sdb3 lvm2 --- 1.00g 1.00g
  41. [root@test ~]#
  42. [root@test ~]# pvscan
  43. PV /dev/sda2 VG centos lvm2 [<99.50 GiB / 0 free]
  44. PV /dev/sdb3 lvm2 [1.00 GiB]
  45. PV /dev/sdb1 lvm2 [1.00 GiB]
  46. Total: 3 [<101.50 GiB] / in use: 1 [<99.50 GiB] / in no VG: 2 [2.00 GiB]
  47. [root@test ~]#
  48. [root@test ~]#
  49. [root@test ~]# vgcteate vg1 /dev/sdb1 /dev/sdb3
  50. -bash: vgcteate: command not found
  51. [root@test ~]# vgcreate vg1 /dev/sdb1 /dev/sdb3
  52. Volume group "vg1" successfully created
  53. [root@test ~]#
  54. [root@test ~]# vgs
  55. VG #PV #LV #SN Attr VSize VFree
  56. centos 1 2 0 wz--n- <99.50g 0
  57. vg1 2 0 0 wz--n- 1.99g 1.99g
  58. [root@test ~]#
  59. [root@test ~]#
  60. [root@test ~]# lvcreate -L 100M -n 1v1_from_vg1 vg1
  61. Logical volume "1v1_from_vg1" created.
  62. [root@test ~]# lvcreate -L 100M -n 1v1_from_vg1 vg1
  63. Logical Volume "1v1_from_vg1" already exists in volume group "vg1"
  64. [root@test ~]# lvcreate -L 100M -n 2v1_from_vg1 vg1
  65. Logical volume "2v1_from_vg1" created.
  66. [root@test ~]#
  67. [root@test ~]# lvs
  68. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  69. root centos -wi-ao---- <99.00g
  70. swap centos -wi-ao---- 512.00m
  71. 1v1_from_vg1 vg1 -wi-a----- 100.00m
  72. 2v1_from_vg1 vg1 -wi-a----- 100.00m
  73. [root@test ~]# mkfs.xfs /dev/vg1/1v1_from_vg1
  74. meta-data=/dev/vg1/1v1_from_vg1 isize=512 agcount=4, agsize=6400 blks
  75. = sectsz=512 attr=2, projid32bit=1
  76. = crc=1 finobt=0, sparse=0
  77. data = bsize=4096 blocks=25600, imaxpct=25
  78. = sunit=0 swidth=0 blks
  79. naming =version 2 bsize=4096 ascii-ci=0 ftype=1
  80. log =internal log bsize=4096 blocks=855, version=2
  81. = sectsz=512 sunit=0 blks, lazy-count=1
  82. realtime =none extsz=4096 blocks=0, rtextents=0
  83. [root@test ~]# mkfs.xfs /dev/vg1/2v1_from_vg1
  84. meta-data=/dev/vg1/2v1_from_vg1 isize=512 agcount=4, agsize=6400 blks
  85. = sectsz=512 attr=2, projid32bit=1
  86. = crc=1 finobt=0, sparse=0
  87. data = bsize=4096 blocks=25600, imaxpct=25
  88. = sunit=0 swidth=0 blks
  89. naming =version 2 bsize=4096 ascii-ci=0 ftype=1
  90. log =internal log bsize=4096 blocks=855, version=2
  91. = sectsz=512 sunit=0 blks, lazy-count=1
  92. realtime =none extsz=4096 blocks=0, rtextents=0
  93. [root@test ~]#
  94. [root@test ~]#
  95. [root@test ~]# ls
  96. 2.sh anaconda-ks.cfg date file2 init.sh nginx-1.8.0 nginx-1.8.0.tar.gz passwd
  97. [root@test ~]# mkdir /test123
  98. [root@test ~]#
  99. [root@test ~]#
  100. [root@test ~]# mount /dev/vg1/1v1_from_vg1 /test1/
  101. mount: mount point /test1/ does not exist
  102. [root@test ~]# mount /dev/vg1/1v1_from_vg1 /test123/
  103. [root@test ~]#
  104. [root@test ~]#
  105. [root@test ~]#
  106. [root@test ~]# df -h
  107. Filesystem Size Used Avail Use% Mounted on
  108. devtmpfs 979M 0 979M 0% /dev
  109. tmpfs 991M 0 991M 0% /dev/shm
  110. tmpfs 991M 18M 973M 2% /run
  111. tmpfs 991M 0 991M 0% /sys/fs/cgroup
  112. /dev/mapper/centos-root 99G 2.8G 97G 3% /
  113. /dev/sda1 509M 157M 353M 31% /boot
  114. tmpfs 199M 0 199M 0% /run/user/0
  115. /dev/mapper/vg1-1v1_from_vg1 97M 5.3M 92M 6% /test123

动态在线扩容:

再不用卸载的情况下完成扩容

  1. lvextend -L [+]MGT /dev/VG_NAME/VL_NAME
  2. # 注意:-L 100M 与 -L +100M不是一个意思,或者代表在原有的基础上扩容
  3. # 1、新增一块盘或者一个分区
  4. fdisk /dev/sdb ......
  5. partprobe
  6. ls /dev/sdb4
  7. # 2、新增一个pv
  8. [root@egon ~]# pvcreate /dev/sdb4
  9. # 3、把新增的pv扩到vg2里
  10. [root@egon ~]# vgextend vg2 /dev/sdb4
  11. [root@egon ~]# vgs # 可以看到vg2扩容了
  12. # 4、接下来对lv1_from_vg2扩容
  13. [root@egon ~]# lvextend -L +1000M /dev/vg2/lv1_from_vg2
  14. [root@egon ~]# xfs_growfs /dev/vg2/lv1_from_vg2 # 扩展逻辑卷后需要更新fs文件系统

动态缩容:

(不要缩容,容易出问题。数据无法找回)

删除:

  1. # 删除lv之前需要先卸载挂载点
  2. [root@egon ~]# umount /test3
  3. [root@egon ~]# lvremove /dev/vg2/lv1_from_vg2
  4. # 删vg
  5. [root@egon ~]# vgremove vg2
  6. # 删pv:只能删掉那些不属于任何vg的pv
  7. [root@egon ~]# pvremove /dev/sdb2
  8. [root@egon ~]# pvremove /dev/sdb3

将新的磁盘添加到CentOS中的LVM存储池中的步骤:

  1. 打开终端并运行lsblk命令以查看所有可用的磁盘和分区。

  2. 插入新的磁盘并运行以下命令来查看新的磁盘和其分区:

  1. sudo fdisk -l
  1. 运行以下命令来创建一个新的物理卷(PV):
  1. sudo pvcreate /dev/[新磁盘]

例如,如果新的磁盘是/dev/sdb,那么命令将是:

  1. sudo pvcreate /dev/sdb
  1. 运行以下命令来查看当前的物理卷:
  1. sudo pvs

确认新创建的物理卷是正确的。

  1. 运行以下命令来将新的物理卷添加到现有的卷组(VG):
  1. sudo vgextend [现有VG的名称] /dev/[新物理卷名称]

例如,如果现有VG的名称为vg01,而新的物理卷名称为/dev/sdb,那么命令将是:

  1. sudo vgextend vg01 /dev/sdb
  1. 运行以下命令来查看当前的卷组:
  1. sudo vgs

确认卷组扩展成功。

  1. 运行以下命令来将卷组中新的物理卷添加到现有的逻辑卷(LV):
  1. sudo lvextend -l +100%FREE [现有LV的名称]

例如,如果您要将新的磁盘添加到logical_vol卷,则命令将是:

  1. sudo lvextend -l +100%FREE /dev/vg01/logical_vol
  1. 运行以下命令来扩展文件系统以使用新的可用空间:
  1. sudo resize2fs [现有LV的名称]

例如,如果现有LV的名称为/dev/vg01/logical_vol,则命令将是:

  1. sudo resize2fs /dev/vg01/logical_vol

现有的逻辑卷现在应该扩展到包含新的磁盘空间。

其它

linux的磁盘类型和分区简介

linux的磁盘分为IDE和SCSI,目前以后者居多。

1. IDE磁盘的分区:hd+盘号+分区数字

盘号
  |-a:基本盘
  |-b:基本从属盘
  |-c:辅助主盘
  |-d:辅助从属盘

分区数字
  |-1~4:主分区或扩展分区
  |-5+:逻辑分区

例如,hda3表示第一块IDE磁盘的第3个主分区或扩展分区,hdb5表示第二块IDE磁盘的逻辑分区。

2. SCSI磁盘的分区:sd+盘号+分区数字

盘号
  |-a:基本盘
  |-b:基本从属盘
  |-c:辅助主盘
  |-d:辅助从属盘

分区数字
  |-1~4:主分区或扩展分区
  |-5+:逻辑分区

例如,sda1表示第一块SCSI磁盘的第1个主分区,sdc2表示第三块SCSI磁盘的第2个主分区或扩展分区。

linux的挂载和卸载

1. 挂载和卸载的概念

挂载类似于windows系统给U盘分配盘符,是将新磁盘跟已经存在的系统目录之间建立联系,让新磁盘”拥有”根目录/下面的某个目录,以便于在命令行中操作它。例如,新添加了一块磁盘分区sdb1,将它挂载到/home/data1目录,则以后操作/home/data1目录就相当于操作sdb1分区。挂载后,/home/data1目录下的子目录和文件也会保存到sdb1分区,而不是原来的分区。

卸载类似于windows退出U盘,切断磁盘分区与目录之间的联系。卸载后,/home/data1目录下的子目录和文件会重新回到原来的分区。

2. 查看系统的挂载情况

lsblk [-l] [-f]
其中,-l表示列表方式显示,-f可以显示分区的uuid。

3. 挂载

mount equipment path
其中,equipment为设备位置,path为挂载点。例如,mount /dev/sdb1 /home/dubhlinn。

4. 永久挂载

用上述命令只是临时挂载,重启系统后会失效,要想永久生效,需要改一个配置文件:/etc/fstab,加一行:
/dev/sdb /home xfs defaults 0 0

其中,第一项为设备未知,第二项为挂载点,第三项为分区类型,后面固定不变。

5. 卸载

umount equipment
umount path

即卸载时既可以写磁盘分区,也可以写挂载点目录。例如umount /home/dubhlinn。

磁盘管理

产看文件系统类型

df -T

磁盘和目录使用查看

  1. 查询磁盘整体的使用情况
    df -h

  2. 查询指定目录的使用情况
    du [-a] [-c] [-h] [–max-depth=n] path
    其中,-a表示包含文件,-c表示显示汇总值,-h表示显示计量单位,–max-depth=n表示统计子目录的深度,path为要查询的目录路径。

  3. 查询指定目录下的文件,即以-开头的内容
    ls -l [-r] [path] | grep “^-“
    其中,-r表示包含子目录下的,path如果不指定则默认为当前目录。

  4. 查询指定目录下的子目录,即以d开头的内容
    ls -l [-r] [path] | grep “^d”
    其中,-r表示包含子目录的子目录,path如果不指定则默认为当前目录。

  5. 查询指定目录下的文件数量
    ls -l [-r] [path] | grep “^-“ | wc -l
    其中,-r表示包含子目录下的,path如果不指定则默认为当前目录。

  6. 查询指定目录下的子目录数量
    ls -l [-r] [path] | grep “^d” | wc -l
    其中,-r表示包含子目录的子目录,path如果不指定则默认为当前目录。

  7. 以树状结构显示目录下的内容
    tree [path]
    其中,path为要显示的目录路径,如果不指定默认为当前目录。

  1. df -h #查看每个根路径的分区大小;查看硬盘剩余空间
  2. du -sh [目录名] #返回该目录的大小;查看目录占用空间
  3. du -sm [文件夹] #返回该文件夹总M数
  4. du -h [目录名] #查看指定文件夹下的所有文件大小(包含子文件夹)
  5. 查看硬盘的分区 sudo fdisk -l
  6. 查看IDE硬盘信息 sudo hdparm -i /dev/hda
  7. 查看STAT硬盘信息 sudo hdparm -I /dev/sda #sudo apt-get install blktool #sudo blktool /dev/sda id

参考:
参考:

Linux中磁盘的管理(分区、格式化、挂载)、LVM:https://blog.csdn.net/wangxu_190/article/details/119968080

linux(centOS7)的基本操作(五) 磁盘、分区、挂载、卸载


local 2023年11月22日 17:12 收藏文档