linux运维笔记:Linux磁盘分区

1-Linux里面的分区工具

fdisk   主要是给磁盘小于2T(只能出来分区表是mbr的)

parted  主要是给磁盘大于2T(gpt)

2-磁盘分区重点

1) 给磁盘分区的实质就是针对 0 磁头 0 磁道 1 扇区后面接下来的 64bytes 的区分表进行设置,

即主要是划分起始以及结束磁头号、扇区号及柱面号

2) 给磁盘分区的工具有 fdisk(适合个小于 2T 的磁盘分区), parted(擅长给大于 2T 的磁盘分区,

也可以对于小于 2T 的磁盘分区),实际中小于 2T 的是首选 fdisk28

3) 一块磁盘的分区表仅有 64 个 bytes 大小,每个分区表要占用 16 个字节,因此一块磁盘仅支

持 4 个分区表信息,即主分区+扩展分区总量不超过 4 个

4) 磁盘分区是按照柱面( cyinder)来划分的

5) 扩展分区不能直接使用的,还要在扩展分区的基础上创建逻辑分区才行

6) 扩展分区有自己的分区表,因此,扩展分区下面的逻辑分区可以有多个

3-主分区 Primary

一般来说, 主分区是磁盘上必须存在的分区,一般为磁盘的第一个分区,我们可以在主分区上安装操作系统。

1p+1e,2p+1e,3p+1e

我们前面装系统:

/boot 主分区(系统分区)

Swap 主分区(交换分区)

/ 主分区(根分区)

4-扩展分区 Extended

扩展分区不能算是一个正常的分区,而是一个链接,起到一个指向作用。由于扩展分区没有 MBR以及 64bytes 限制, 所以我们可以在扩展分区内再建立多个逻辑分区一块硬盘只能存在一个扩展分区,并且扩展分区不能直接存放数据,扩展分区受限于操作系统。

5-逻辑分区 logical

不能在磁盘中单独直接划分逻辑分区,逻辑分区必须存在于扩展分区内,在扩展分区内可以划分多个逻辑分区,逻辑分区的编号是从数字 5 开始的。

IDE 磁盘大概编号可以是 5-63

STAT 编号 5-15

实际运用:主分区和逻辑分区都可以用。一般系统安装用主分区,存放数据也可以。

6-磁盘分区注意事项要点

一块磁盘的分区方式只能为如下组合之一:

1)任意多主分区,但要求 1≤主分区数量≤4

2) 扩展分区可以和主分区组合,但要求 2≤(主分区+扩展分区)数量≤4

3) 如果要分成四个磁盘分区的话,那么最多就是可以:

P+P+P+P

P+P+P+E

其中的 P 为 Primary,E 为 Extended

说明:

1) 扩展分区不是一个真正的可用分区,建立完扩展分区后,还需要在扩展分区上面建立逻辑分区才可以使用。

2) 对于主分区和逻辑分区在一般的数据存储使用上是没有区别的(对于大多数的数据存储),在安装操作系统时第一个分区要选主分区。

3) 分区数字编号 1~4 留给主分区或扩展分区使用,逻辑分区编号只能从 5 开始,即时 1~4 分区号有剩余,也不会分配给逻辑分区。

4) 对硬盘分区,实际上就是在修改硬盘分区表,也就是说我们通过 fdisk 分区实际上就是在改64 字节分区表,分区和对应的数据没有关系。因此,理论上,调整分区大小,不会删除分区数据。

特殊说明:磁盘也可以不分区,字节格式化使用,但是不推荐。

7-硬盘分区的设备名

在 linux 系统中,是通过设备名来访问设备的,设备名存放在“ /dev”目录中

设备名的定义规则如下,其他的分区可以以此类推:

系统的第一块 IDE 接口的硬盘称为/dev/hda

系统的第二块 IDE 接口的硬盘称为/dev/hdb

系统的第一块 SCSI 接口的硬盘称为/dev/sda

系统的第二块 SCSI 接口的硬盘称为/dev/sdb

STAT,SAS 都是 sd 开头

每个分区则使用磁盘名称加对应的数字编号表示:

系统第一块 IDE 接口硬盘的第 1 个分区称为/dev/hda1

系统第一块 IDE 接口硬盘的第 5 个分区称为/dev/hda5

系统第一块 SCSI 接口硬盘的第 1 个分区称为/dev/sda1

系统第一块 SCSI 接口硬盘的第 5 个分区称为/dev/sda5

注意事项:

1) 分区数字编号 1~4 留给主分区或扩展分区使用,逻辑分区编号只能从 5 开始

2) IDE 硬盘设备名均以/dev/hd 开头,不同硬盘编号一次为/dev/hda、 /dev/hdb、 /dev/hdc...

3) SCSI/SAS/STAT/USB 接口硬盘的设备名均以/dev/sd 开头,不同硬盘编号依次为/dev/sda、/dev/sdb、 /dev/sdc ...

4) 特别强调: SAS/STAT 为当前互联网生产环境主流硬盘接口,SSD 固态硬盘,由于是电子设备,性能很高,也逐渐被运用

5) Linux 环境下没有盘符概念,要对磁盘设备进行操作,需要使用磁盘设备名;读取磁盘设备内容,需要把创建在分区或逻辑卷上的文件系统挂载到指定目录上

8-企业面试题。

企业面试题1:

我有一块 SAS 硬盘,我想把磁盘分成 6 个可以使用的磁盘分区,那么每个磁盘分区在 linux系统下的数字编号是多少?

说明:

由于硬盘主分区+扩展分区最多可以有 4 个,因此,在 linux 系统下,会默认将 1~4 的分区编号和扩展分区不可以占用 1~4 分区编号。

如果是 1p+1e,则分区编号为:

/dev/sda1,/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8,/dev/sda9

如果是 2p+1e,则分区编号为:

/dev/sda1, /dev/sda2, /dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8

如果是 3p+1e,则分区编号为:

/dev/sda1,/dev/sda2, /dev/sda3, /dev/sda5, /dev/sda6, /dev/sda7

企业面试题2:

一台服务器 6 块 600G 的磁盘, RAID 5 后,总大小 3T,此时无法装系统?请问为什么?

解决方法:

1) 做 RAID 5 后,不要重启装系统,而是在 RAID 界面,继续分 1 个小的虚拟磁盘 VD 200G,用这个 200G 的虚拟磁盘装系统,装完系统后再把剩余的 2.8T 分区通过 parted

2) 先拿 1 块盘做 RAID 0,剩下的 5 块再做 RAID 5,在 RAID 0 装系统

3) 装系统时,选下 gpt 分区个事,即可安装系统

9-分区方式介绍

1-fdisk

传统的 MBR(Master Boot Record)分区方式,有一个局限: 无法支持超过 2TB 的硬盘分区(或单个分区超过 2TB)

2-parted

如果大于 2TB 就用 GPT(Globally Unique Identifier Partition Table Format)分区概念。 GPT分区表很好的解决了传统 MBR 无法逾越 2TB 的限制。但是在 linux 系统中,传统的 fdisk 命令无法支持 gpt 分区方式。

parted 的操作都是实时的,也就是说你执行了一个分区的命令,他就实实在在的分区了。而不是像fdisk 那样,需要执行 w 命令写入所做的修改,所以进行 parted 的测试千万注意不能在生产环境中。

Parted 特性简述:

1) 是一个磁盘分区管理工具,他比 fdisk 更加灵活,功能也更加丰富,同时还支持 GUID 分区表(GUID Partition Table),这在 IA64 平台管理磁盘是非常有用,它同时支持交互模式和非交互模式。

2) 它除了能够进行分区的添加、删除等常见操作作外,还可以移动分区,制作文件系统,调整文件系统大小,复制文件系统。

10-mbr是什么

mbr引导:主引导记录

mbr在哪里:磁盘的0磁头 0磁道 1扇区 前446字节

一个扇区的大小为512字节:

前446字节    mbr

中间64字节   分区表

最后2字节    分区结束表示55AA

分区表:

在分区表的64字节里,划分为4个格子 16*4

每个格子里存放的是分区的信息(主分区 扩展分区)

11-通过fdisk给磁盘分区(创建一个10M主分区和一个40M逻辑分区)

1-使用fdisk会提示一个错误

[root@znix ~]# 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 0x31dcd35a.

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)

警告 : 可以关闭dos的兼容模式,使用扇区作为分区的默认单位  -cu ↓

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

2-fdisk添加上了 -cu 参数

-cu 参数是在分区的时候,能够以扇区的方式进行。

[root@znix ~]# fdisk -cu /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk identifier 0xb9f506a4.

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)

Command (m for help):

3-查看fdisk的帮助信息

Command (m for help): m                      

Command action

   d   delete a partition            删除一个分区

   m   print this menu               显示帮助菜单

   n   add a new partition           创建一个分区

   p   print the partition table     显示分区表

   q   quit without saving changes   退出不保存

   w   write table to disk and exit  保存并退出

4-创建一个主分区

Command (m for help): n

Command action

   e   extended       扩展分区

   p   primary partition (1-4)  主分区

p

Partition number (1-4): 1    第一个分区

First sector (2048-208895, default 2048): 直接回车为默认

Using default value 2048  默认选择第一个扇区

Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): +10M

5-显示一下分出来的分区

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes

64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0xb9f506a4

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83

6-创建一个扩展分区

扩展分区的分区原则是:剩多少给多少

Command (m for help): n

Command action

   e   extended  扩展分区

   p   primary partition (1-4)

e

Partition number (1-4): 2

First sector (22528-208895, default 22528):

Using default value 22528

Last sector, +sectors or +size{K,M,G} (22528-208895, default 208895):

Using default value 208895

7-显示现在的分区表信息

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes

64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0xb9f506a4

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83  Linux

/dev/sdb2           22528      208895       93184    5  Extended

8-在拓展分区下创建逻辑分区

Command (m for help): n

Command action

   l   logical (5 or over)  逻辑分区,创建完扩展分区后只能创建逻辑分区

   p   primary partition (1-4)

l

First sector (24576-208895, default 24576):

Using default value 24576

Last sector, +sectors or +size{K,M,G} (24576-208895, default 208895): +40M

9-显示一下当前的分区表

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes

64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0xb9f506a4

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83  Linux

/dev/sdb2           22528      208895       93184    5  Extended

/dev/sdb5           24576      106495       40960   83  Linux

10-保存并退出

fdisk 必须保存以后才能生效,w为保存并退出

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

12-添加一块硬盘sdb 100m划分一个分区,挂载到/mnt目录

1-创建一个主分区

[root@znix ~]# fdisk -cu /dev/sdb

Command (m for help): n  

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First sector (2048-208895, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895):

Using default value 208895

都选择默认就是使用整块盘的空间创建一个分区

显示当前的分区表

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes

64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0xb9f506a4

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048      208895      103424   83  Linux

保存并退出

fdisk 必须保存以后才能生效,w为保存并退出

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

2-格式化创建文件系统

mkfs ==make filesystem即创建文件系统。

[root@znix ~]# mkfs.ext4 /dev/sdb1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)  #block的大小

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

25896 inodes, 103424 blocks   #inode与block的数量

5171 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=67371008

13 block groups

8192 blocks per group, 8192 fragments per group

1992 inodes per group

Superblock backups stored on blocks:

    8193, 24577, 40961, 57345, 73729

Writing inode tables: done                           

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

3-关闭分区的自我检查

tune2fs 命令

-c 挂载多少次 0 为关闭

-i 隔多长时间 0 为关闭

[root@znix ~]# tune2fs -c 0 -i 0 /dev/sdb1

tune2fs 1.41.12 (17-May-2010)

Setting maximal mount count to -1

Setting interval between checks to 0 seconds

4-挂载磁盘

[root@znix ~]# mount /dev/sdb1 /mnt/

[root@znix ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  1.9G  6.5G  23% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

/dev/sdb1        94M  1.6M   88M   2% /mnt

5-让磁盘永久挂载,开机自动挂载

两个文件可以实现:

    /etc/rc.local

    /etc/fstab

在/etc/rc.local文件中,写入什么命令都可以执行。

/etc/fstab 文件的内容

[root@znix ~]# cat /etc/fstab

#

# /etc/fstab

# Created by anaconda on Thu Aug 10 18:33:48 2017

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=49bad9e9-cf33-4a15-ba84-4fd28e70bd29 /                       ext4    defaults        1 1

UUID=7426d0f3-56d6-4fa6-a1c3-f2c8632bfbb8 /boot                   ext4    defaults        1 2

UUID=46bc0a52-b13f-4845-8baa-90207849d5c5 swap                    swap    defaults        0 0

tmpfs           /dev/shm    tmpfs            defaults         0                0

devpts          /dev/pts    devpts           gid=5,mode=620   0                0

sysfs           /sys        sysfs            defaults         0                0

proc            /proc       proc             defaults         0                0

磁盘分区设备    挂载点      文件系统的类型   挂载参数   是否进行dump备份 是否进行fsk磁盘检查

将挂载信息写入配置文件

[root@znix ~]# tail -1 /etc/fstab

/dev/sdb1              /mnt                    ext4    defaults        0 0

13-显示系统中的uuid

使用blkid命令可以查看系统磁盘的uuid。

[root@znix ~]# blkid

/dev/sda3: UUID="49bad9e9-cf33-4a15-ba84-4fd28e70bd29" TYPE="ext4"

/dev/sda1: UUID="7426d0f3-56d6-4fa6-a1c3-f2c8632bfbb8" TYPE="ext4"

/dev/sda2: UUID="46bc0a52-b13f-4845-8baa-90207849d5c5" TYPE="swap"

/dev/sdb1: UUID="7101630b-b325-49d1-92b9-0a500c2a07f6" TYPE="ext4"

14-磁盘分区之parted + gpt

fdisk 与 parted 的区别

fdisk    mbr 分区表   硬盘容量小于2TB

parted   gpt  分区表   硬盘容量大于2TB

⚠注意:parted 创建分区实时生效,比较危险。

1-查看下帮助信息

[root@znix ~]# parted /dev/sdc

GNU Parted 2.1

Using /dev/sdc

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted)    h

  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)

 创建分区表

  mkpart PART-TYPE [FS-TYPE] START END     make a partition

 创建一个分区

  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system

 创建一个分区 分区带着文件系统

  print [devices|free|list,all|NUMBER]     display the partition table, available

        devices, free space, all found partitions, or a particular partition

 显示分区信息

  rm NUMBER                                delete partition NUMBER

 删除一个分区

2-创建分区表

[root@znix ~]# parted /dev/sdc

GNU Parted 2.1

Using /dev/sdc

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel gpt   #创建GPT分区表                                                  

(parted) p                                                                

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

mkpart 可以使用的PART-TYPE类型

GPT 格式可以创建N个主分区,所以类型都选为主分区即可。

(parted) help mkpart                                                     

  mkpart PART-TYPE [FS-TYPE] START END     make a partition

    PART-TYPE is one of: primary, logical, extended

                        主分区 ,逻辑分区 ,扩展分区

3-对磁盘进行分区

(parted) mkpart primary 0 10

Warning: The resulting partition is not properly aligned for best performance.

        提示分区没有对齐,这个错误无视即可。

Ignore/Cancel? I       忽略/取消                                                  

(parted) p                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags

 1      17.4kB  10.0MB  9983kB               primary

4-再创建一个分区

(parted) mkpart primary 10 20

(parted) p                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags

 1      17.4kB  10.0MB  9983kB               primary

 2      10.5MB  19.9MB  9437kB               primary

5-使用parted命令非交互式创建分区

[root@znix ~]# parted /dev/sdc mkpart primary 50 100

Information: You may need to update /etc/fstab.                          

[root@znix ~]# parted /dev/sdc print #显示磁盘的格式

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 107MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags

 1      17.4kB  50.0MB  50.0MB               primary

 2      50.3MB  99.6MB  49.3MB               primary

6-创建swap分区及使用

【JAVA环境常见】linux内存不够用,会使用swap分区。

1.4.1 手动添加swap空间,创建一个文件

使用dd 命令创建一个块文件。

[root@znix ~]# dd if=/dev/zero of=/tmp/100M bs=1M count=100

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 2.96654 s, 35.3 MB/s

[root@znix ~]# ll -h /tmp/100M

-rw-r--r-- 1 root root 100M Sep 18 10:01 /tmp/100M

查看创建出来的文件的类型

现在的类型为data 数据块。

[root@znix ~]# file /tmp/100M

/tmp/100M: data

7-将这个文件变成swap

mkswap命令将文件类型格式化成swap格式

[root@znix ~]# mkswap /tmp/100M

mkswap: /tmp/100M: warning: don't erase bootbits sectors

        on whole disk. Use -f to force.

Setting up swapspace version 1, size = 102396 KiB

no label, UUID=81fa08be-a18f-4bc6-b950-fa3d90f969a1

修改之后的文件类型:

[root@znix ~]# file /tmp/100M

/tmp/100M: Linux/i386 swap file (new style) 1 (4K pages) size 25599 pages

8-让这个文件起作用,将swap空间添加到系统中

实例1查看swap的所使用情况

[root@znix ~]# free -h

             total       used       free     shared    buffers     cached

Mem:          474M       465M       8.8M       252K        15M       357M

-/+ buffers/cache:        93M       381M

Swap:         767M         0B       767M

实例2 使用swap命令将swap文件,添加到系统中。

[root@znix ~]# swapon  /tmp/100M

实例3 现在查看 swap的使用情况

[root@znix ~]# free -h

             total       used       free     shared    buffers     cached

Mem:          474M       465M       8.7M       252K        15M       357M

-/+ buffers/cache:        93M       381M

Swap:         867M         0B       867M

实例4 查看swap的详细信息,使用 swap  -s 。

[root@znix ~]# swapon  -s

Filename                Type        Size    Used    Priority

/dev/sda2                               partition   786428  0   -1

/tmp/100M                               file        102396  0   -2

9-如何让添加的swap文件永久生效

1)把命令放入/etc/rc.local 开机自启动文件中。

a)       swapon  /tmp/100M 命令

2)写入/etc/fstab 文件中

/tmp/100M    swap   swap   defaults    0 0

第5列 dump备份

第6列 磁盘检查

你可能感兴趣的:(linux,运维)