引言:冯诺依曼体系中的数据存储器就是我们常说的磁盘或硬盘,它是计算机不可缺少的一个组件,下面来看看Linux中磁盘的基础概念及管理工具fdisk
实验环境CentOS7.2 磁盘概念按磁盘属性分类有机械硬盘跟固态硬盘
(1)
机械硬盘:内部真空 磁盘:正反面含有磁性物质的盘片,由一个马达固定所有磁盘转动,固定角速度 每个盘片正反面各有一个磁头,所有磁头固定在一个机械臂上平均寻道时间:5400rpm, 7200rpm, 10000rpm, 15000rpm转速
track(磁道):每个盘片上出厂格式化
sector(扇区):512bytes单位
cylinder(柱面):不同盘面上同一编号的磁道组合在一起,分区划分按照柱面实现越靠近较外部分区的柱面组成的分区,越快。Windows上c盘在最外面(2)
固态硬盘 类似与多个并行U盘,工作模式上模拟机械硬盘的机制。电器设备,速度个人笔记本是原来的3到5倍,读400个iops(io per second)、写200iops
在正式介绍Linux设备文件前需先了解一个概念:
MBRMBR(Master Boot Record):主引导分区,为一个编号为0的512字节的扇区
446bytes:bootloader,引导加载器程序,主引导记录,引导启动操作系统的程序;
64bytes:分区表,
每16bytes标识一个分区,一共
只能有4个分区; 2bytes:表示MBA是否有效;55AA为有效; 注意: 1) 主分区最多四个,
扩展分区只能一个 2) 扩展分区不能单独使用,要继续分成逻辑分区,逻辑分区可以由多个 3) 一个分区就是一个独立的文件系统 4) 主分区和扩展分区的标识:1-4;逻辑分区:
5+ 其在Linux中的创建新磁盘分区会涉及主分区与扩展分区内容
/dev不管是机械硬盘还是固态硬盘对于Linux看来它都是属于
/dev/下的文件
设备文件名 1)磁盘:IDE: /dev/hd[a-z] SCSI, SATA, USB, SAS: /dev/sd[a-z] 2)分区:/dev/sda#: /dev/sda1, ... 注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]#
/dev设备文件介绍 1)设备文件:关联至设备的驱动程序;设备的访问入口; 2)设备号:
major:主设备号,区分设备类型;用于标明设备所需要的驱动程序;
minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口; 比如/dev/sd# :sd为主设备号,#为次设备号。引用设备的方式:设备文件名,卷标,UUID
磁盘管理工具fdisk:
fdisk: 创建查看分区 (1)查看磁盘的分区信息:命令使用格式:
fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况; (2)管理分区命令使用格式:
fdisk /dev/sd# :创建,删除,保存磁盘分区配置。fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘上;以下命令选项为
m中的常用选项:
n:创建新分区
d:删除已有分区
t:修改分区类型
l:查看所有已经ID
w:保存并退出
q:不保存并退出
m:查看帮助信息
p:显示现有分区信息
命令演示:
1、对已使用的磁盘设备,创建新分区,若没有可用空间则自动退出。
| 1234567891011121314151617181920212223242526272829303132 | [root@localhost ~]欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table 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) 命令(输入 m 获取帮助):n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p 分区号 (3,4,默认 3): No free sectors available 命令(输入 m 获取帮助): |
2、对新添加的磁盘创建新分区。
| 1234567891011121314151617181920212223242526272829303132333435 | [root@localhost ~]欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0xd391e822 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分区号 (1-4,默认 1): 起始 扇区 (2048-10485759,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G 分区 1 已设置为 Linux 类型,大小设为 1 GiB 命令(输入 m 获取帮助):w [root@localhost ~]磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x00036006 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 41943039 20458496 8e Linux LVM 磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xd391e822 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux |
3、创建扩展分区,及删除已存在分区
| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | [root@localhost ~]欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): e 分区号 (2-4,默认 2): 起始 扇区 (2099200-10485759,默认为 2099200): 将使用默认值 2099200 Last 扇区, +扇区 or +size{K,M,G} (2099200-10485759,默认为 10485759):+1G 分区 2 已设置为 Extended 类型,大小设为 1 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xd391e822 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended 扩展分区创建完毕,下面在扩展分区上创建逻辑分区,大家可以看到其标号从5开始 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l 添加逻辑分区 5 起始 扇区 (2101248-4196351,默认为 2101248): 将使用默认值 2101248 Last 扇区, +扇区 or +size{K,M,G} (2101248-4196351,默认为 4196351):+100M 分区 5 已设置为 Linux 类型,大小设为 100 MiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xd391e822 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended /dev/sdb5 2101248 2306047 102400 83 Linux |
保存退出后,将逻辑分区删除
| 1234567891011121314151617181920212223242526272829303132333435363738 | 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]... 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended /dev/sdb5 2101248 2306047 102400 83 Linux ... [root@localhost ~]欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):d 分区号 (1,2,5,默认 5):5 分区 5 已删除 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xd391e822 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]... 设备 Boot Start End Blocks Id System /dev/sdb1 2048 2099199 1048576 83 Linux /dev/sdb2 2099200 4196351 1048576 5 Extended ... |
注意:
在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别; 通知内核强制重读磁盘分区表:查看:cat /proc/partitionsCentOS 5:
partprobe [device]CentOS 6,7:partx, kpartx
partx -a [device]kpartx -af [device]本文永久更新链接地址