linux磁盘分区

linux分区的过程由三步组成:

1、将磁盘硬件进行分区

2、创建文件系统

3、将目录挂载到分区上

例如我们将磁盘分区为sda1,然后将sda1挂载到/usr/local/目录上,那么/usr/local/ 目录的文件将会保存在sda1磁盘分区中。

 

磁盘硬件分区

linux所有设备都会以文件方式映射在系统中。一般情况设备驱动存放于/dev目录下,所以我们可以在dev目录下找到我们的设备。磁盘设备主要有以下几种

xvd[*][*]

Xen虚拟磁盘。阿里云ECS云盘是这种类型。

 

sd[*][*]

SCSI 总线磁盘包括,ISCSI、SAS、SATA、SSD、U盘等

hd[*][*]IDE 磁盘
mmcblk[*][*]SD卡。

 

设备编码

上表列举了几种磁盘类型,其中后面的第一组[*]代表设备编码。也就是说一种类型的磁盘可能存在多个,比如说一个主机上添加两块硬盘。

xvd、sd、hd类型的磁盘设备编码按照a、b、c、d...的顺序排列。列如第一块硬盘就是sda,第二块就是sdb以此类推。

mmcblk类型的磁盘设备编码按照0、1、2、3、4...的顺序排列。列如第张SD卡就是mmcblk0,第张SD卡就是mmcblk1以此类推。

 

分区编码

linux规定磁盘上最多拥有四个主分区,如果我们还想拥有更多的分区就要创建扩展分区和逻辑分区。

主分区按照1、2、3、4...的顺序排列。例如第一块硬盘的主分区也就是sda1、sda2、sda3、sda4。逻辑分区同样使用数字排列从5开始。也就是sda5、sda6、sda7......sda无穷大。

主分区最多只能有4个。
扩展分区最多只能有一个,并且占用一个主分区编号。扩展分区并不是真实的分区,只是用于包含逻辑分区使用。
逻辑分区在扩展分区下创建的实际分区。编号从5开始,不限制数量。

特殊的mmcblk类型磁盘的分区编码形式为p1、p2、p3、p4...。例如mmcblk0p1

 

示例

下面提供一个分区示例

我们可以使用 df -h命令查看主机当前分区情况

[root@centos-rpi3 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  781M  1.1G  43% /
devtmpfs        460M     0  460M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M   12M  452M   3% /run
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/mmcblk0p1  500M   45M  455M   9% /boot
tmpfs            93M     0   93M   0% /run/user/0

显然系统默认的分区并没有完全使用我的磁盘容量

下面我们将使用fdisk工具进行分区

查看目前磁盘分区情况fdisk -l

[root@centos-rpi3 dev]# fdisk -l
Disk /dev/mmcblk0: 31.8 GB, 31812747264 bytes, 62134272 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c3c9b

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     1026047      512000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2         1026048     2074623      524288   82  Linux swap / Solaris
/dev/mmcblk0p3         2074624     6268927     2097152   83  Linux

使用 fdisk /dev/mmcblk0  命令对磁盘进行分区操作(在这里我们可以使用m参数查看命令帮助)

[root@centos-rpi3 dev]# fdisk /dev/mmcblk0          
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


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

使用 n创建分区

Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e
Selected partition 4
First sector (6268928-62134271, default 6268928): 
Using default value 6268928
Last sector, +sectors or +size{K,M,G} (6268928-62134271, default 62134271): 
Using default value 62134271
Partition 4 of type Extended and of size 26.7 GiB is set

由于主分区已经存在3个了所以我们创建一个扩展分区,才能容纳下更多的分区。我们创建了一个26.7G大小的扩展分区。

扩展分区不能够存储数据,所以我们还要在扩展分区中创建逻辑分区。

Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (6270976-62134271, default 6270976): 
Using default value 6270976
Last sector, +sectors or +size{K,M,G} (6270976-62134271, default 62134271): 27242496
Partition 5 of type Linux and of size 10 GiB is set

Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (27244545-62134271, default 27246592): 
Using default value 27246592
Last sector, +sectors or +size{K,M,G} (27246592-62134271, default 62134271): 
Using default value 62134271
Partition 6 of type Linux and of size 16.7 GiB is set

我们创建了两个逻辑分区5和6分别是10G和16.7G。

结束扇区计算:开始扇区 + 2097152(1G扇区数) * n

使用 p 命令查看当前创建好的分区

Command (m for help): p

Disk /dev/mmcblk0: 31.8 GB, 31812747264 bytes, 62134272 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c3c9b

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     1026047      512000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2         1026048     2074623      524288   82  Linux swap / Solaris
/dev/mmcblk0p3         2074624     6268927     2097152   83  Linux
/dev/mmcblk0p4         6268928    62134271    27932672    5  Extended
/dev/mmcblk0p5         6270976    27242496    10485760+  83  Linux
/dev/mmcblk0p6        27246592    62134271    17443840   83  Linux

这里需要注意如果现在退出,分区是没有创建成功的。还要执行w 命令进行保存并退出。

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

重新启动(reboot)启用新的分区。

 

修改分区类型

如果我们对分区类型有要求,比如移动硬盘希望使用exFAT类型。那么我么可以使用fdisk修改分区类型。

查看分区类型及对应的编码

Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor      
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary  
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE 
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT 

修改分区类型

Command (m for help): t
Selected partition 1
Partition type (type L to list all types): 7
Changed type of partition 'HPFS/NTFS/exFAT' to 'HPFS/NTFS/exFAT'.

 

 

创建文件系统

完成分区后我们还要为新的分区创建文件系统

linux支持的文件系统有几十种,下面列举一些常用的文件系统类型。

ext专门为Linux设计的,为linux核心所做的第一个文件系统。单个文件最大限制:未知;该文件系统最大支持2GB的容量。
ext2由Rémy Card设计,用以代替ext,是LINUX内核所用的文件系统。单个文件最大限制2TB;该文件系统最大支持32TB的容量。
ext3一个日志文件系统。单个文件最大限制16TB,该文件系统最大支持32TB的容量。
ext4Theodore Tso领导的开发团队实现,Linux系统下的日志文件系统。单个文件最大限制16TB,该文件系统最大支持1EB的容量。
JFS2一种字节级日志文件系统,该文件系统主要是为满足服务器的高吞吐量和可靠性需求而设计、开发的。单个文件最大限制16TB,该文件系统最大支持1PB的容量。
xfsXfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。

 

示例

我们使用mkfs命令在设备上(通常为硬盘)创建Linux文件系统。

mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。

[root@centos-rpi3 dev]# mkfs.xfs /dev/mmcblk0p6 
meta-data=/dev/mmcblk0p6         isize=512    agcount=4, agsize=1090240 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=4360960, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

 

分区挂载

创建好的分区需要挂载到目录上才能够使用,存储到该目录的文件也就存放在了对应的磁盘分区中。

一般情况下我们需要挂载的目录主要有

/根目录    是必须单独分区的,称之为跟分区
swap交换分区,相当于虚拟内存。当内存小的时候(4G以下)可以分内存的两倍,当内存大的时候,swap跟内存一样大就可以了。
/boot 启动分区(200MB足以)。不是必须,但强烈建议。若不单独分区,当磁盘存放文件满的时候,占用了启动空间,系统就起不来了,单独分区后,其它分区存满,不会影响此分区的空间。

 

示例

我们使用mount命令将分区/dev/mmcblk0p6挂载到/self目录

[root@centos-rpi3 dev]# mount /dev/mmcblk0p6 /self/

最后我们使用df -h查看磁盘分区时就多了一个17G的分区

[root@centos-rpi3 dev]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  782M  1.1G  43% /
devtmpfs        460M     0  460M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M   12M  452M   3% /run
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/mmcblk0p1  500M   45M  455M   9% /boot
tmpfs            93M     0   93M   0% /run/user/0
/dev/mmcblk0p6   17G   33M   17G   1% /self

这里了有一个问题mount命令挂载的目录重启后就会消失

所以我们要将挂载配置加入到/etx/fstab文件中才会永久有效

[root@centos-rpi3 self]# vi /etc/fstab 
#Generated by RootFS Build Factory
LABEL=4644C237 /boot vfat noatime 0 0
UUID=0980ad33-0130-4c75-98e0-b03975a1d929 swap swap noatime 0 0
UUID=fe41dacc-3232-43fc-a020-16d3c27b0390 / ext4 noatime 0 0
/dev/mmcblk0p5 /root ext4 defaults 0 0
/dev/mmcblk0p6 /self ext4 defaults 0 0

我们再重启一次,查看是否挂载成功

 

转载于:https://my.oschina.net/u/3452433/blog/1813446

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值