Linux 磁盘管理

来自CloudWiki
跳转至: 导航搜索

磁盘分区表示

Linux中将硬盘、分区等设备均表示为文件

Linux4-1.png

硬盘和分区的结构

Linux4-2.png

硬盘和分区

  • MBR:主引导记录 ,存在于驱动器开始部分的一个特殊的启动扇区。
  • 主分区:一个硬盘最多能被分成四个主分区。(是不是不太够用?)
  • 扩展分区:如果分区数目不够用,可以把一个主分区定义为一个扩展分区。
  • 逻辑分区:然后再把这个这个扩展分区分为一个或多个逻辑分区。这样分区数就可以随心设置了。
  • 命名:/dev/vda5,/dev/sda1

一个硬盘允许4个主分区,扩展分区是从5开始的,所以sda5就是扩展分区,sda1、sda2是主分区。

文件系统类型

Linux中默认使用的文件系统类型

  • EXT4, 第4代扩展(Extended)文件系统
  • SWAP,交换文件系统

Linux支持的其它文件系统类型

  • FAT16、FAT32、NTFS
  • XFS、JFS

……

参考文档:

[1] https://www.linuxidc.com/Linux/2017-10/147456.htm

[2]

确认系统中的磁盘设备

fdisk命令

用途:在交互式的操作环境中管理磁盘分区

格式:fdisk [磁盘设备]

交互模式中的常用指令

m:查看操作指令的帮助信息
p:列表查看分区信息
n:新建分区
d:删除分区
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出

查看硬盘

fdisk命令

格式:fdisk -l [磁盘设备]

命令输出:(以下放置代码)

Linux4-3.png

可以看到当前系统中有两块磁盘,/dev/sda和/dev/sdb.分区信息:

Device : 设备名称
Boot: 是否为系统引导分区,如果是则显示为“*”号
Start:分区的起始柱面
End:分区的结束柱面
blocks:分区块的数量
Id:分区的id号,一般普通系统分区为83,swap分区为82,lvm为83,扩展分区为5

[root@localhost ~]# fdisk -l

Disk /dev/sda: 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: 0x000afd9c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1275    10240000   83  Linux
/dev/sda2            1275        1785     4096000   83  Linux
/dev/sda3            1785        2295     4096000   82  Linux swap / Solaris

如果装系统时选择自动分区,则执行此命令时会出现如下输出,这样是正常的:

[root@cloud17 ~]# fdisk -l

Disk /dev/sda: 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: 0x0000246b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2611    20458496   8e  Linux LVM

Disk /dev/dm-0: 16.8 GB, 16752050176 bytes
255 heads, 63 sectors/track, 2036 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

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 4194 MB, 4194304000 bytes
255 heads, 63 sectors/track, 509 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

Disk /dev/dm-1 doesn't contain a valid partition table

lvm会把每个lv连接到一个/dev/dm-x的设备档,这个设备档并不是一个真正的磁盘,当然不会有分区表存在了,所以这也不算是错误信息。其实用lvm挺方面的,fedora的安装手册就建议分出boot和swap后把剩下的空间全分到lvm,这样以后就不用担心分区会分小或分大的问题,很方面的。

添加硬盘

以VMware虚拟机为例,添加硬盘进行如下操作即可:

Linux4-5.png


Linux4-6.png


Linux4-7.png


Linux4-8.png


Linux4-9.png

添加硬盘之后可在命令行上输入fdisk -l 看硬盘是否发生变化(如果虚拟机正在运行,需要把它关闭之后重启再输入这条命令)

[root@localhost ~]# fdisk -l

Disk /dev/sda: 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: 0x000afd9c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1275    10240000   83  Linux
/dev/sda2            1275        1785     4096000   83  Linux
/dev/sda3            1785        2295     4096000   82  Linux swap / Solaris

Disk /dev/sdb: 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: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

显示已添加硬盘sdb,但还没有分区,下面我们就对它进行分区

创建磁盘分区

创建磁盘分区

fdisk命令

  • 用途:在交互式的操作环境中管理磁盘分区
  • 格式:fdisk [磁盘设备]

交互模式中的常用指令

*m:查看操作指令的帮助信息
*p:列表查看分区信息
*n:新建分区
*d:删除分区
*t:变更分区类型
*w:保存分区设置并退出
*q:放弃分区设置并退出

分区操作:

fdisk /dev/sdb

[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x4d79e771.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

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):

根据提示输入m ,展开帮助

Command (m for help): 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,建立分区

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)

根据提示输入p建立主分区(p表示主分区,e表示扩展分区)

根据提示输入1 ,选择创建1号主分区

Partition number (1-4): 1

输入起始柱面号,直接回车:

Partition number (1-4): 1

输入分区结束柱面号,输入+500M(指定整个分区的大小为500M):

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +500M

输入t,指定分区类型:

Command (m for help): t

输入L ,查看各种分区的类型号:

Selected partition 1
Hex code (type L to list codes): L

输入83, 选择Linux分区类型

Hex code (type L to list codes): 83

输入p ,查看现在的分区表 ?

输入w ,存盘退出:

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

格式化分区

对硬盘分完区后,我们输入fdisk -l命令可显示如下信息:

Disk /dev/sda: 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: 0x000afd9c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1275    10240000   83  Linux
/dev/sda2            1275        1785     4096000   83  Linux
/dev/sda3            1785        2295     4096000   82  Linux swap / Solaris

Disk /dev/sdb: 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: 0x4d79e771

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         130     1044193+  83  Linux

接下来,我们可以用mkfs命令为其刚刚分的区创建文件系统(格式化)

mkfs命令

用途:Make Filesystem,创建文件系统(格式化) 格式:mkfs -t 文件系统类型 分区设备

 [root@localhost ~]# mkfs -t ext4 /dev/sdb1

管理交换空间(选学)

如果刚才创建的分区是交换空间(swap),则需要对其进行管理。

交换分区是磁盘驱动器上的空间,用作当前未使用部分内存的溢出。

系统就能在内存中留出空间用于存储当前正在处理的数据,并在系统面临主内存空间不足的风险时提供应急溢出。


交换空间大小

系统RAM 建议的最小交换空间

最大4GB	至少2GB
4GB到16GB	至少4GB
16GB到64GB	至少8GB
64GB到256GB	至少16GB


mkswap命令

用途:Make Swap,创建交换文件系统 格式:mkswap 分区设备


查看交换空间:

[root@localhost ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       4095992 0       -1

格式化交换分区:

mkswap /dev/sdb5

启用交换分区

 swapon /dev/sdb6
 free | grep -i swap

停用交换分区:

 swapoff /dev/sdb6

删除分区

输入键盘d键:

Command (m for help): d
Selected partition 1

Command (m for help): w
The partition table has been altered!