parted命令分区--(GPT分区)
MBR分区表(主引导记录分区表):2.1TB(1TB=1024GB).
①最多支持4个主分区.
②扩展分区只能有一个,并且扩展分区与主分区之和不超过4,扩展分区内不能写数据,只 能写入逻辑分区.
③逻辑分区可以有10个.
GPT分区表(也叫GUID分区表,全局唯一标示分区表):9.4ZB(GB-TB-EB-PB-ZB 1024进制),最多支持128个分区.其中1个作为系统保留分区,剩余127个为用户自定义分区.
parted命令直接建立的分区是ext2格式,并且,如果通过mkfs格式化为ext4,parted进行resize动态调整分区大小会失败.parted命令能够识别MBR分区表,显示为msdos.
[root@localhost ~]# parted #进入parted命令
GNU Parted 2.1
使用 /dev/sda #一定要看清楚,这是主磁盘,不能在这里做分区和格式 化,不然系统将会无法开机
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) quit #这是输入命令的位置,立马使用quit退出
[root@localhost ~]# parted /dev/sdb #使用parted命令必须加入参数
GNU Parted 2.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
接下来进行如下几个实验:
①建立GPT分区
②已经建立分区进行扩容
③mount挂载
④自动加载GPT分区
1.建立GPT分区:
[root@localhost ~]# parted
GNU Parted 2.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
接下来会显示一堆的命令列表和命令内容概括,主要有一下几个需要知道:
①help #显示命令帮助文档,特别是命令的输入格式
②mklabel mktable #2个都是建立新的分区表(硬盘标签),感觉还是mktable更加习惯,好记
③mkfs #为分区写入文件系统
④mkpart #创建新的分区
⑤print #打印分区信息(已经创建的分区使用这个命令查看)
⑥quit #退出parted命令
⑦rm #删除分区
⑧select #选择分区设备,可以切换磁盘
(parted) mktable #新建分区表
新的磁盘标签类型? gpt #GPT分区表
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? #提示"新建分区表会摧毁所有存在磁盘中的数据",是否继续?
是/Yes/否/No? y #当然是啦
(parted) print #显示结果
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt #是不是发现这里由msdos(表示MBR)变成了GPT
(parted) mkpart #新建分区
分区名称? []? nigulasi1 #自己命名,比如说 尼古拉斯 哈哈
文件系统类型? [ext2]? #只能默认ext2
起始点? 1 #起始点 1M
结束点? 1G #结束点1G,注意下一个分区起始点不能小于1000M,也就是说要 从1001M开始,不然会报错,告诉你已经分区了
(parted) print #显示结果
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 1000MB 999MB ext2 nigulasi1
2.已经建立的分区进行动态调整大小
新建一个2G的分区
(parted) resize 2 #重新设置分区大小
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs. We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
起始点? [1001MB]? #起始点默认回车
结束点? [3000MB]? 2000M #结束点从3G改为2G(当前默认1G=1000M,方便计算)
警告: A resize operation on this file system will use EXPERIMENTAL code
that MAY CORRUPT it (although no one has reported any such damage yet).
You should at least backup your data first, and run 'e2fsck -f' afterwards.
确认/OK/放弃/Cancel? ok #输入ok
(parted) print #显示结果已经缩减大小
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 900MB 899MB ext2 nigulasi1
2 1001MB 2000MB 999MB ext2 nigulasi2
(parted) quit #退出
其实resize按理来说可以变小,也可以变大,但是实际上扩容会报错,操作了十几遍只有一遍成功,确实很奇葩,这个parted工具还是不够完善,比如:操作resize后显示Warning:
parted's file system manipulation code is not as robust as what you'll find in dedicated, file-system-specific packages like e2fsprogs.
表示parted工具没有我们想的那么完善......毕竟我们马上要学习LVM逻辑卷组,以后只能用更高级的LVM,这些就当是回忆科技的过往吧.
3.手动挂载
[root@localhost ~]# mkdir /mnt/sdb1 #设置挂载点(挂载点就是已经建立的空目录)
[root@localhost ~]# mkdir /mnt/sdb2 #设置挂载点,新建了2个分区,需要2个挂载点
[root@localhost ~]# mount /dev/sdb1 /mnt/sdb1/ #把第二块SCSI硬盘上的第一个分区挂载 到/mnt/sdb1目录上
[root@localhost ~]# mount /dev/sdb2 /mnt/sdb2/ #把第二块SCSI硬盘上的第二个分区挂载 到/mnt/sdb2目录上
[root@localhost ~]# df -h #显示(只能看已经挂载的)磁盘信息,相当于双击打 开"我的电脑"后的显示效果
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 9.8G 2.4G 7.0G 26% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 190M 33M 147M 19% /boot
/dev/sda3 1.9G 3.5M 1.8G 1% /home
/dev/sdb1 804M 13K 761M 1% /mnt/sdb1
/dev/sdb2 893M 13K 845M 1% /mnt/sdb2
接下来可以cd /mnt/sdb1/进入该分区,挂载点相当于一个进入磁盘对应分区的对应"门",不同分区不同门,进入这个目录(也就是挂载点),也就是进入了分区,新建文件,目录,包括增删改查都是在第二块SCSI硬盘的第一个分区上进行操作!
命令行输入的mount命令是临时生效的,重启后将会失效,因此我们要实现永久生效,那就是把"配置信息"或者命令写入对应文档,那么来看下一小节.
4.自动挂载(/etc/fstab)
Linux开机时查看/etc/fstab这个配置文件,按照配置信息进行自动挂载.
我们需要把新建分区的信息按照对应的格式填入这个文件内,即可达到自动挂载效果.
vi /dec/fstab #进入配置文档
#我们拿出一行来进行学习
UUID=b9008873-894b-4586-bbd9-0690a052c5d6 /home ext4 defaults 1 2
#第一列UUID,相当于硬盘分区的"身份证号码",通过这个号码识别硬盘,命令行模式下输入"ll /dev/disk/by-uuid/"查看对应分区的UUID号码.
#第二列 挂载点
#第三列 文件系统 的格式
#第四列 默认参数配置,defaults就行,如果有其他功能添加,添加",功能名"即可
#第五列 是否备份,1-备份,0-不备份,默认1即可
#第六列 是开机fsck工具自检,0-不检,1-开机时检测,2-开机后检测,只有根分区默认开机自检, 其他分区默认2,有点像360优化开机选项,不然的话拖慢了开机速度.
备注:
这里存在一个很大的问题,导致很多人挂载失败!
首先mount命令默认挂载的时候不需要我们手动配置信息,但是配置文件时需要UUID,这个数据是格式化后生成的,如果只是分区,但是没有格式化,一种可能是命令/"ll /dev/disk/by-uuid/"结果里没有你的设备对应的UUID,比如说/dev/sdb2,还有一种可能是显示的旧UUID,为什么说旧呢?因为你从最近一次文件修改时间可以看出来.
因此你粘贴的UUID绝对是错的,重启后系统开机报错,说找不到UUID对应设备,谨记!
如果开机报错,修复办法在上一篇文档"fdisk创建MBR分区"的末尾.
在文档末尾添加如下内容:
UUID=95988f1e-de1f-47e6-a791-4184a588d7ed /mnt/sdb1 ext2 defaults 1 2
UUID=31f7fdbc-780b-42fd-9d3e-6764edbe68e3 /mnt/sdb2 ext2 defaults 1 2
保存,退出文档.
重启.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 9.8G 2.4G 7.0G 26% /
tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 190M 33M 147M 19% /boot
/dev/sda3 1.9G 3.5M 1.8G 1% /home
/dev/sdb1 804M 13K 761M 1% /mnt/sdb1
/dev/sdb2 893M 13K 845M 1% /mnt/sdb2
可以看到分区已经自动挂载上来了,哇偶.
八.建立swap分区
实验:
①建立swap分区
②挂载至系统swap中
③自动挂载swap分区
在虚拟机里新添加一个空白盘给系统,1G大小足够了,只是做实验加入到swap分区中.
记得添加空白盘后用命令"fdisk -l"如果不显示/dev/sdc,重启.
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes #当前测试Disk /dev/sdc,因此省略显示a/b盘
Disk /dev/sdb: 5368 MB, 5368709120 bytes
Disk /dev/sdc: 1073 MB, 1073741824 bytes #已经识别第三块SCSI硬盘了
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
1.使用fdisk工具创建swape分区:
[root@localhost ~]# fdisk /dev/sdc #配置第三块硬盘,要写命令参数的
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x1becc0ab.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
#上面一大堆的警告意思就是:<你添加的空白盘是个三不像,啥格式都没有,我给你建了个DOS分区表格式,如果你保存,那就这个样写入了,写入后你的数据就没了>空白盘,不用管.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p #显示分区信息,空白盘呗,要啥没啥.
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1becc0ab
Device Boot Start End Blocks Id System
Command (m for help): t #直接改系统格式会报错,因为没有任何分区啊
No partition is defined yet!
Command (m for help): n #新建分区
Command action
e extended
p primary partition (1-4)
p #输入p,选择主分区
Partition number (1-4): 1 #分区号码,挨着顺序来
First cylinder (1-130, default 1): #第一个柱面,默认就是1,直接回车就行
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): #最后一个柱面,默认回车
Using default value 130
Command (m for help): p #显示分区信息
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1becc0ab
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 83 Linux
#最后一列System(系统)的内容是Linux,不行,我们要建swap分区,所以得改!
Command (m for help): l #列举支持的系统格式(主要记swap是哪个号,恩,82)
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Command (m for help): t #这回有分区了,再次修改系统格式
Selected partition 1 #只有一个分区,所以没得选,只能是1
Hex code (type L to list codes): 82 #这里输入82,意思就是改为swap格式
Changed system type of partition 1 to 82 (Linux swap / Solaris)
Command (m for help): p #显示结果
Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1becc0ab
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 82 Linux swap / Solaris
#这里显示的效果就是我们要的swap分区了,仔细核对最后一列系统格式,别搞错了.
#一定一定一定要保存,重要的事情说三遍,输入 w
Command (m for help): w #!!!!重要
The partition table has been altered! #意思就是磁盘的分区表已经改了
Calling ioctl() to re-read partition table. #调用ioctl()函数可以得到磁盘信息,除非你做 开发,不然用不到
Syncing disks. #信息已经同步到了磁盘
-
挂载至swap分区中:
分区后,该做什么? 格式化啊啊啊啊 !
[root@localhost ~]# mkswap /dev/sdc1 #用mkswap格式化/dev/sdc1分区
Setting up swapspace version 1, size = 1044188 KiB
no label, UUID=0ccb15e6-af00-475c-93b6-56cd1f543ccb #说好的格式化后生成UUID,信!
[root@localhost ~]# free -h #记录当前swap分区信息,不然你咋知道增大了没有?
total used free shared buffers cached
Mem: 988M 279M 709M 260K 19M 108M
-/+ buffers/cache: 150M 837M
Swap: 7.8G 0B 7.8G
[root@localhost ~]# swapon /dev/sdc1 #手工把/dev/sdc1加入swap分区,没报错
[root@localhost ~]# free -h #对照下,恩,确实变大了1G,成功!
total used free shared buffers cached
Mem: 988M 279M 708M 260K 19M 108M
-/+ buffers/cache: 151M 836M
Swap: 8.8G 0B 8.8G
-
自动挂载swap
vi /etc/fstab
文档末尾加入下面一行信息:
UUID=0ccb15e6-af00-475c-93b6-56cd1f543ccb swap swap defaults 0 0
保存退出.
重启.
开机后检查是否正常:
Last login: Fri Apr 13 17:12:05 2018 from 192.168.41.1
[root@localhost ~]# free -h
total used free shared buffers cached
Mem: 988M 231M 757M 260K 18M 58M
-/+ buffers/cache: 153M 834M
Swap: 8.8G 0B 8.8G
内存大小直接存7.8G变成了8.8G,不用再手动添加了,哈哈,省事.