交互式fdisk分区工具 VS 非交互式parted分区工具
linux中磁盘资源是如何管理?
在windows系统中,我们对磁盘管理或是分区,C盘D盘E盘,打开"磁盘管理器",以设备的形式管理.
而linux哲学"一切皆文本"的思想,无论是设备也好,在linux中都是以文件的形式,来管理磁盘资源的.
设备文件,用于关联至一个设备驱动程序,能够跟与之对应设备产生关联,与硬件设备进行交互使用.
每个设备都有,设备号,用于内核标识识别设备:
主设备号:major number :设备类型
次设备号:minor number :同一设备类型下的不同设备
[root ~]#ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sdb
磁盘有哪些类型?
磁盘接口分类:
并行:
IDE: 133MB/s
SCSI: 640MB/s
串口:
SATA: 6Gbps
SAS: 6Gbps
USB: 480MB/s
描述机械式磁盘的参数:rpm: rotations per minute 转速(转/分钟)
磁盘设备的设备文件怎样命名?
设备文件的命名一般格式:/dev/DEV_FILE
IDE: /dev/hd (centos6,7不在区分hd和sd统称为sd)
SCSI, SATA, SAS, USB: /dev/sd
一般情况下内核识别到设备后自动为其命名.
[root ~]#ll /dev/sd* brw-rw----. 1 root disk 8, 0 Apr 27 01:40 /dev/sda 设备 权限 硬链接数 属主 属组 主设备号 次设备号 修改时间 设备名;
如何自行创建设备文件?
mknod [OPTION] NAME TYPE [MAJOR MINOR] mknod 设备文件 类型 主设备号 次设备号 mknod /dev/sde b 8 92 [root ~]#ll /dev/sde brw-r--r--. 1 root root 8, 92 Apr 27 03:35 /dev/sde 创建成功
磁盘有哪些需要了解的概念?
head:磁头:位于机械臂的前端,带有磁性,用于读取和写入磁盘,其数量等于磁盘面数
track:磁道:盘面由外而内划分为多个同心圆环,称为磁道
cylinder: 柱面:如果将磁道进行编号,处于多个盘面上的同一编号的磁道称为柱面(8M)
secotr: 扇区, 512bytes 一个磁道划分为多个扇区 早期的磁盘内外磁道的扇区数相同,造成了外道扇区排列松散,内道拥挤,后期出现了等分 磁道的,区位记录磁盘扇区结构:(内外磁道扇区数不同):zoned bit recording.使得内外道 的扇区大小相同,外道排列更多的扇区.
分区有哪些优点?
1.提升I/O性能
2.可以对分区进行配置磁盘配额,便于磁盘资源的合理化利用
3.提高文件系统的修复速度
4.有效的隔离系统与应用程序,使得程序运行在与系统不同的分区
5.可以在不同的分区上安装不同的操作系统
6.在不同的分区上格式化为不同文件系统
...
分区有哪些类型?
分区类型:MBR,GPT MBR:master boot record 32位表示扇区数分区不超过2T MBR的结构:位于磁盘的零磁道零扇区,512Bytes, 446Bytes:boot loader 64Bytes:磁盘分区表,每个分区16Bytes 一般4个扇区,3个主扇区一个扩展扇区,扩展分区中可分多个逻辑分区 2Bytes:魔数,磁盘分区表有效性的校验,16进制:55aa GPT:GUID Partition Table (即GUID分区表) 源自EFI标准的一种较新的磁盘分区表结构的标准,将成为磁盘分区将来的主流形式。 与MBR分区方式相比,具有以下优点。 突破MBR,4个主分区限制,每个磁盘最多支持128个分区。 支持大于2T的分区,最大卷可达18EB
如何查看内核已经识别到哪些磁盘设备?
lsblk [options] device...
常用选项:
-f 显示文件系统及uuid等信息
-p 显示设备的全路径
-s 显示磁盘的分区及挂载
[root ~]#lsblk -s NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom sda1 8:1 0 1G 0 part /boot └─sda 8:0 0 20G 0 disk
如何进行分区?交互式fdisk工具 VS 非交互式parted工具
针对MBR和GPT类型的分区,有不同的交互式分区工具
fdisk工具:擅长MBR格式的分区
fdisk [option] [device...] 常用选项: -l <device>:列出磁盘分区信息列表
交互式用法:
fdisk <device> #进入交互式模式,有许多的子命令 m 查看所有支持的子命令 n 添加一个分区 d 删除分区 l 列出所有磁盘可支持分区类型 o 创建一个空的dos分区类型 p 显示磁盘分区表 w 将磁盘分区表写入磁盘,并退出分区工具 q 退出分区工具
实例演示:
[root ~]#fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel ... Command (m for help):m #m命令查看所有可用菜单 Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition‘s system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): n #子命令n创建一个新的分区 Command action e extended #提示需要选择主分区还是扩展分区 p primary partition (1-4) #主分区最多4个,扩展分区只可创建一个 p #我这里选择主分区,如果分4个主分区,将无法创建扩展分区 Partition number (1-4): 1 #指定分区编号 First cylinder (1-2610, default 1): #起始柱面,按照柱面划分一个柱面8M Using default value 1 #提示不指定则使用默认值 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G #指定结束柱面,可用+size{K,M,G}.我这里+2G直接指定2G容量
修改分区的标签,以标明不同的分区类型便于管理磁盘资源
Command (m for help): t Selected partition 1 Hex code (type L to list codes): l #l命令显示分区标签编号 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 Hex code (type L to list codes): 83 #指定分区标签 Command (m for help): w #将分区保存在MBR分区表 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. #提示已将磁盘分区表同步至内核
如果w保存退出时,未提示同步磁盘,或出现其他未同步磁盘报错信息
centos6可执行: partx -a /dev/sdc #通知内核重读分区表 partx -d /dev/sdc -nr 1-2 #如果不想内核读到1到2分区可执行 centos5或7可执行: partprobe
如果发现容量分错误,或这其他原因反悔了,可不执行w,执行q不保存退出
接下来在扩展分区的基础上分一个逻辑分区:
[root ~]#fdisk /dev/sdc Command (m for help): p #p显示分区情况 Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0xa1367dc5 Device Boot Start End Blocks Id System /dev/sdc1 1 262 2104483+ 83 Linux #上一步的分区 #这83就是标签 Command (m for help): n Command action e extended p primary partition (1-4) e #这里选择创建扩展分区,逻辑分区不能总大小不得超过该分区大小 Partition number (1-4): 4 First cylinder (263-2610, default 263): Using default value 263 Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +10G Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l #创建完e扩展之后这里是l创建逻辑分区, #值得注意的是逻辑分区随扩展分区删除而删除,并且逻辑分区编号必须连续 First cylinder (263-1568, default 263): Using default value 263 Last cylinder, +cylinders or +size{K,M,G} (263-1568, default 1568): +1G Command (m for help): p #查看一下分区情况 Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0xa1367dc5 Device Boot Start End Blocks Id System /dev/sdc1 1 262 2104483+ 83 Linux /dev/sdc4 263 1568 10490445 5 Extended /dev/sdc5 263 394 1060258+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. #已将磁盘分区表同步
分区完成看是否被内核识别?
[root ~]#lsblk sdc 8:32 0 20G 0 disk ├─sdc1 8:33 0 2G 0 part ├─sdc4 8:36 0 1K 0 part └─sdc5 8:37 0 1G 0 part
如何删除一个分区?
[root ~]#fdisk /dev/sdc Command (m for help): p #查看分区 Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0xa1367dc5 Device Boot Start End Blocks Id System /dev/sdc1 1 262 2104483+ 83 Linux /dev/sdc4 263 1568 10490445 5 Extended /dev/sdc5 263 394 1060258+ 83 Linux Command (m for help): d #d命令删除分区 Partition number (1-5): 1 #指定要删除的分区号1 Command (m for help): p #再次查看分区情况 Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0xa1367dc5 Device Boot Start End Blocks Id System /dev/sdc4 263 1568 10490445 5 Extended /dev/sdc5 263 394 1060258+ 83 Linux
gdisk分区工具:擅长GPT分区
gdisk [option] [device...] 常用选项: -l <device>:列出磁盘分区信息列表
交互式用法:
gdisk #进入交互式模式,有许多的子命令,用法基本类似fdisk
? 查看所有支持的子命令
n 添加一个分区
d 删除分区
l 列出所有磁盘可支持分区类型
o 创建一个空的dos分区类型
p 显示磁盘分区表
w 将磁盘分区表写入磁盘,并退出分区工具
q 退出分区工具
[root ~]#gdisk /dev/sdc GPT fdisk (gdisk) version 0.8.10 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): ? #与fdisk区别,?为帮助菜单 b back up GPT data to a file c change a partition‘s name d delete a partition i show detailed information on a partition l list known partition types n add a new partition o create a new empty GUID partition table (GPT) p print the partition table q quit without saving changes r recovery and transformation options (experts only) s sort partitions t change a partition‘s type code v verify disk w write table to disk and exit x extra functionality (experts only) ? print this menu
如何创建一个GPT分区?
Command (? for help): n #n创建一个GPT分区 Partition number (1-128, default 1): 1 #与fdisk区别,GTP只有主分区不分逻辑区 First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +2G Current type is ‘Linux filesystem‘ Hex code or GUID (L to show codes, Enter = 8300): l #输入l可查看分区标签代号 0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE 3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS 7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap 8300 Linux filesystem 8301 Linux reserved 8302 Linux /home 8400 Intel Rapid Start 8e00 Linux LVM a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+ af01 Apple RAID af02 Apple RAID offline af03 Apple label af04 AppleTV recovery af05 Apple Core Storage be00 Solaris boot bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2 bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5 c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit Hex code or GUID (L to show codes, Enter = 8300): 8300 #这里是指定分区的标签 Changed type of partition to ‘Linux filesystem‘ Command (? for help): p #显示GPT分区情况 Disk /dev/sdc: 41943040 sectors, 20.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): E03DD1C3-CB8F-458F-AE7F-48382115B856 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 41943006 Partitions will be aligned on 2048-sector boundaries Total free space is 37748669 sectors (18.0 GiB) Number Start (sector) End (sector) Size Code Name 1 2048 4196351 2.0 GiB 8300 Linux filesystem Command (? for help): w #w保存退出 Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y #这里与fdisk区别,需要y/n确认一下 OK; writing new GUID partition table (GPT) to /dev/sdc. The operation has completed successfully.
看一下如何删除一个GPT分区?
[root ~]#gdisk /dev/sdc Command (? for help): d #输入d删除一个GPT分区 Using 1 #这里我只创建了一个,所以默认了,多则输入指定编号 Command (? for help): p Disk /dev/sdc: 41943040 sectors, 20.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): E03DD1C3-CB8F-458F-AE7F-48382115B856 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 41943006 Partitions will be aligned on 2048-sector boundaries Total free space is 41942973 sectors (20.0 GiB) Number Start (sector) End (sector) Size Code Name 删除成功,w保存退出,y确认一下
非交互式:
parted:一个GNU的磁盘维护工具,并非交互式,命令敲完回车立即生效,无确认机制,适用于脚本自动化.平时慎用.
用法格式:
parted [options] [device [command [options...]...]] parted 选项 设备 子命令 子选项 参数
常用选项:
parted -l 列出所有的磁盘信息
非交互式如何对msdos(MBT)或者GPT分区表进行操作?
parted /dev/sdc mklabel gpt|msdos|extended|logical #创建空分区表 parted /dev/sdc print #显示磁盘分区的详细信息 parted /dev/sdc mkpart FILE_TYPE|primary start end #创建分区(默认M为单位) #FILE_TYPE这里可以指定ext4但不建议 parted /dev/sdc rm n 删除第n个分区
实例演示:
创建空的分区表:
[root ~/bin]#parted /dev/sdc mklabel msdos #创建一个空的MBR分区表 Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No?y #如果磁盘以前做过操作,提示确认数据丢失 Information: You may need to update /etc/fstab.
创建完成后,看一下刚才创建的是否是MBR类型?
[root ~/bin]#parted /dev/sdc print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos #这里可以看出MBR类型
创建一个新的磁盘分区?
Number Start End Size Type File system Flags parted /dev/sdc mkpart primary 1 5G # mkpart 创建一个主分区开始为1 结束为5G 可以指定其他单位,创建了一个5G的分区 [root ~/bin]#parted /dev/sdc print #显示磁盘分区情况 Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 5000MB 4999MB primary #可看到刚才分区情况 分区编号 其实 结束 大小 分区类型
如何创建一个扩展分区?如果是GPT类型,无需创建扩展分区,逻辑分区(只建立扩展分区的基础上)
[root ~/bin]#parted /dev/sdc mkpart extended 4G 100% 这里使用剩余的空间给扩展分区 Information: You may need to update /etc/fstab. [root ~/bin]#parted /dev/sdc print #查看一下分区 Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 3000MB 2999MB primary 2 3000MB 4000MB 1000MB primary 3 4000MB 21.5GB 17.5GB extended lba #可看到扩展分区占据了剩余空间
创建逻辑分区,仅扩展分区是不可用的,如何建立逻辑分区?
[root ~/bin]#parted /dev/sdc mkpart logic 4.01 5G Warning: You requested a partition from 4010kB to 5000MB. ... Is this still acceptable to you? Yes/No? y #确认 Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel? i Information: You may need to update /etc/fstab. 创建完成,看一下逻辑分区情况. [root ~/bin]#parted /dev/sdc print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 3000MB 2999MB primary 2 3000MB 4000MB 1000MB primary 3 4000MB 21.5GB 17.5GB extended lba 5 4000MB 5000MB 1000MB logical #可见逻辑分区类型,逻辑区编号从5开始
如何删除一个分区? --以删除刚刚建立的扩展分区为例,并查看逻辑分区的反应.
[root ~/bin]#parted /dev/sdc rm 3 #指定要删除的分区编号 Information: You may need to update /etc/fstab. [root ~/bin]#parted /dev/sdc print #查看一下分区信息 Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 3000MB 2999MB primary 2 3000MB 4000MB 1000MB primary #这里看出逻辑分区随着扩展分区的消失,悄无声息的消逝了.所以删除分区时(慎重)
关于分区就先到这了,如有错误,还请多多指教!愿每一位linuxer学习愉快~
我的51cto博客:cityx.blog.51cto.com