相关文章:
【Linux学习笔记16】磁盘的分区、格式化、检验与挂载(blkid、lsblk、UUID、parted查看分区的格式、lvm命令)
1. 用 gdisk 新增分区
如果你是按照鸟哥建议的方式去安装你的 CentOS 7,那么你的磁盘应该会预留一块容量来做练习的。如果没有的话, 那么你可能需要找另外一颗磁盘来让你练习才行呦!而经过上面的观察,我们也确认系统还有剩下的容量可以来操作练习分区! 假设我需要有如下的分区需求:
-
1GB 的 xfs 文件系统 (Linux)
-
1GB 的 vfat 文件系统 (Windows)
-
0.5GB 的 swap (Linux swap)(这个分区等一下会被删除喔!)
那就来处理处理!
[root@study ~]# gdisk /dev/vda //进入对某个磁盘进行分区操作入口
Command (? for help): p //查看当前磁盘的分区概况
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 65026047 30.0 GiB 8E00 //最后一个分区编号,后续需要在此进行递增 ,找出最后一个 sector 的号码是很重要的!
Command (? for help): ? // 查一下增加分区的指令选项
Command (? for help): n //就是这个!所以开始新增的行为!
Partition number (4-128, default 4): 4 //新的分区的编号,默认就是 4 号,所以也能 enter 即可!
First sector (34-83886046, default = 65026048) or {+-}size{KMGTP}: 65026048 // 也能直接 enter,表示起始点,一般是接之前的末尾
Last sector (65026048-83886046, default = 83886046) or {+-}size{KMGTP}: +1G // **** 决不能 enter
注意设置 Last sector,是设置结束的地方,这样 和 这个地方和 First sector直接的值,就是新分区的大小。可有趣了!我们不需要自己去计算扇区号码,通过 +容量 的这个方式, 就可以让 gdisk 主动去帮你算出最接近你需要的容量的扇区号码喔!
我们设置了 +1G,就表示仅占1G空间。
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): // 使用默认值即可,直接按 enter !
//这里在让你选择未来这个分区预计使用的文件系统!默认都是 Linux 文件系统的 8300 啰!
Command (? for help): p //再次查看当前的分区情况
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 65026047 30.0 GiB 8E00
4 65026048 67123199 1024.0 MiB 8300 Linux filesystem //发现新增加了一个分区 ,注意:你此时另开一个窗口,lsblk命令时是看不到的
注意:你此时另开一个窗口,lsblk命令时是看不到的,因为还没写到分区表中,暂时查不到。
重点在“ Last sector ”那一行,那行绝对不要使用默认值!因为默认值会将所有的容量用光!因此它默认选择最大的扇区号码! 因为我们仅要 1GB 而已,所以你得要加上 +1G 这样即可!不需要计算 sector 的数量,gdisk 会根据你填写的数值, 直接计算出最接近该容量的扇区数!每次新增完毕后,请立即“ p ”查看一下结果喔!
请继续处理后续的两个分区! 最终出现的画面会有点像下面这样才对!
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 65026047 30.0 GiB 8E00
4 65026048 67123199 1024.0 MiB 8300 Linux filesystem
5 67123200 69220351 1024.0 MiB 0700 Microsoft basic data //注意这个类型是 0700,不能直接按回车键
6 69220352 70244351 500.0 MiB 8200 Linux swap 注意这个类型是 8200,不能直接按回车键
基本上,几乎都用默认值,然后通过 +1G, +500M 来创建所需要的另外两个分区!比较有趣的是文件系统的 ID 啦!一般来说, Linux
大概都是 8200/8300/8e00
等三种格式, Windows
几乎都用 0700
这样,如果忘记这些数字,可以在 gdisk 内按下:“ L ”来显示喔! 如果一切的分区状态都正常的话,那么就直接写入磁盘分区表吧!
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y //上面有个警告,选择Y
OK; writing new GUID partition table (GPT) to /dev/vda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
gdisk 会先警告你可能的问题,我们确定分区是对的,这时才按下 y !不过怎么还有警告?
这是因为这颗磁盘目前正在使用当中,因此系统无法立即载入新的分区表~
使用下面的命令 或者 lsblk,此时看不到新加的分区:
[root@study ~]# cat /proc/partitions
major minor #blocks name
252 0 41943040 vda
252 1 2048 vda1
252 2 1048576 vda2
252 3 31461376 vda3
253 0 10485760 dm-0
253 1 1048576 dm-1
253 2 5242880 dm-2
# 你可以发现,并没有 vda4, vda5, vda6 喔!因为核心还没有更新!
因为 Linux 此时还在使用这颗磁盘,为了担心系统出问题,所以分区表并没有被更新喔!这个时候我们有两个方式可以来处理! 其中一个是重新开机,不过很讨厌!另外一个则是通过partprobe 这个指令来处理即可!
2. partprobe 更新 Linux 核心的分区表信息
partprobe [-s] // s可选参数,打印详细信息, 你可以不要加 -s !那么屏幕不会出现讯息!
[root@study ~]# partprobe -s # 不过还是建议加上 -s 比较清晰!
/dev/vda: gpt partitions 1 2 3 4 5 6
[root@study ~]# lsblk /dev/vda # 实际的磁盘分区状态
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 40G 0 disk
|-vda1 252:1 0 2M 0 part
|-vda2 252:2 0 1G 0 part /boot
|-vda3 252:3 0 30G 0 part
| |-centos-root 253:0 0 10G 0 lvm /
| |-centos-swap 253:1 0 1G 0 lvm [SWAP]
| `-centos-home 253:2 0 5G 0 lvm /home
|-vda4 252:4 0 1G 0 part //能被看到了
|-vda5 252:5 0 1G 0 part //能被看到了
`-vda6 252:6 0 500M 0 part //能被看到了
[root@study ~]# cat /proc/partitions # 核心的分区纪录
major minor #blocks name
252 0 41943040 vda
252 1 2048 vda1
252 2 1048576 vda2
252 3 31461376 vda3
252 4 1048576 vda4
252 5 1048576 vda5
252 6 512000 vda6
# 现在核心也正确的抓到了分区参数了!
3. 用 gdisk 删除一个分区
已经学会了新增分区,那么删除分区呢?好!现在让我们将刚刚创建的 /dev/vda6 删除!你该如何进行呢?鸟哥下面很快的处理一遍, 大家赶紧来瞧一瞧先!
[root@study ~]# gdisk /dev/vda
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 65026047 30.0 GiB 8E00
4 65026048 67123199 1024.0 MiB 8300 Linux filesystem
5 67123200 69220351 1024.0 MiB 0700 Microsoft basic data
6 69220352 70244351 500.0 MiB 8200 Linux swap
Command (? for help): d //表示删除操作
Partition number (1-6): 6 //输入分区序号
Command (? for help): p //你会发现 /dev/vda6 不见了!
非常棒!没问题就写入吧!
Command (? for help): w //同样会有一堆讯息!鸟哥就不重复输出了!自己选择 y 来处理吧!
[root@study ~]# lsblk // 你会发现!怪了!怎么还是有 /dev/vda6 呢?没办法!还没有更新核心的分区表啊!所以当然有错!
[root@study ~]# partprobe -s //刷新
[root@study ~]# lsblk 这个时候,那个 /dev/vda6 才真的消失不见了!了解吧!
4. 观察新分区
新加的卷,没有被mount,并且显示的type 为 part
[root@study ~]# lsblk /dev/vda # 实际的磁盘分区状态
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 40G 0 disk
|-vda1 252:1 0 2M 0 part
|-vda2 252:2 0 1G 0 part /boot
|-vda3 252:3 0 30G 0 part
| |-centos-root 253:0 0 10G 0 lvm /
| |-centos-swap 253:1 0 1G 0 lvm [SWAP]
| `-centos-home 253:2 0 5G 0 lvm /home
|-vda4 252:4 0 1G 0 part //能被看到了
|-vda5 252:5 0 1G 0 part //能被看到了
`-vda6 252:6 0 500M 0 part //能被看到了