1 磁盘分区工具和挂载

1.1 硬盘分区符认识

MBR概述:全称为Master Boot Record,即硬盘的主引导记录。

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和分区有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。

分区编号:主分区1-4 ,逻辑分区5……

LINUX规定:逻辑分区必须建立在扩展分区之上,而不是建立在主分区上


分区作用:

主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上

扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中

如果你用的是GPT的分区方式,那么它没有限制主分区个数

注意:使用分区工具fdisk对磁盘进行操作,分区,格式化(重点)

12Linux基础-操盘分区与挂载教程

命名方式: /dev/sd[a-z]n

其中:a-z 表示设备的序号,如sda表示第一块scsi硬盘,sdb就是第二块......

n 表示每块磁盘上划分的磁盘分区编号

12Linux基础-操盘分区与挂载教程

1.2 使用fdisk管理分区

fdisk:磁盘分区,是Linux发行版本中最常用的分区工具

用法:fdisk [选项] device

常用的选项 : -l 查看硬盘分区表

案例:在sdb盘上建一个分区,大小为100M

在虚拟机上添加一块硬盘

12Linux基础-操盘分区与挂载教程

例:对sdb这块盘划分一个100M的分区出来

[root@test ~]# fdisk /dev/sdb

...

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)

Command (m for help): p -----打印分区表

Command (m for help): n ----新建一个分区

Partition type:

p primary (2 primary, 0 extended, 2 free) p:主分区

e extended e:扩展分区

Select (default p): --直接默认

Using default response p

Partition number (1,4, default 1): ---直接默认

First sector (1230848-41943039, default 1230848): ---直接默认

Using default value 1230848

Last sector, +sectors or +size{K,M,G} (1230848-41943039, default 41943039): +1G 输入分区大小

Partition 3 of type Linux and of size 1 GiB is set

Command (m for help): w 保存退出

[root@test ~]# ls /dev/sdb*

/dev/sdb /dev/sdb1

例2:对已经在使用的磁盘进行分区,分区让新生成的分区生效。如果对sda再做一个sda4主分区

[root@test ~]# fdisk /dev/sda

命令(输入 m 获取帮助):p

磁盘标识符:0x0005c80e

设备 Boot Start End Blocks Id System

/dev/sda1 * 2048 411647 204800 83 Linux

/dev/sda2 411648 2508799 1048576 82 Linux swap / Solaris

/dev/sda3 2508800 23480319 10485760 83 Linux

命令(输入 m 获取帮助):n

Partition type:

p primary (3 primary, 0 extended, 1 free)

e extended

Select (default e): p

已选择分区 4

起始 扇区 (23480320-41943039,默认为 23480320):

将使用默认值 23480320

Last 扇区, +扇区 or +size{K,M,G} (23480320-41943039,默认为 41943039):+1G

分区 4 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.

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)

解决:让新生成的分区生效:

[root@test ~]#reboot #这个是最好的方法

[root@test ~]# partx -a /dev/sda #获得新分区表

使用sdb1新分区:

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

[root@test ~]# mkfs.xfs /dev/sdb1 #格式化,-f 对已经存在文件系统的分区,强制格式化

[root@test ~]# mkdir /sdb1 #创建挂载点

[root@test ~]# mount /dev/sdb1 /sdb1/ #挂载

[root@test ~]# df -h #查看

文件系统 容量 已用 可用 已用% 挂载点

/dev/sda3 10G 4.3G 5.8G 43% /

devtmpfs 982M 0 982M 0% /dev

tmpfs 997M 0 997M 0% /dev/shm

tmpfs 997M 9.0M 988M 1% /run

tmpfs 997M 0 997M 0% /sys/fs/cgroup

/dev/sr0 4.3G 4.3G 0 100% /mnt

/dev/sda1 197M 172M 25M 88% /boot

tmpfs 200M 24K 200M 1% /run/user/0

/dev/sdb1 1014M 33M 982M 4% /sdb1

[root@test ~]# cd /sdb1/ #使用新分区

[root@test sdb1]# ls

[root@test sdb1]# cp /etc/passwd ./

例3:解决卸载不了的问题

root@test ~]# cd /sdb1/

[root@test sdb1]# umount /sdb1

umount: /sdb1:目标忙。

(有些情况下通过 lsof(8) 或 fuser(1) 可以

找到有关使用该设备的进程的有用信息)

[root@test sdb1]# lsof /sdb1

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 2823 root cwd DIR 8,17 20 64 /sdb1

lsof 2952 root cwd DIR 8,17 20 64 /sdb1

lsof 2953 root cwd DIR 8,17 20 64 /sdb1

方法1:[root@test sdb1]# kill -9 2823

方法2:[root@test sdb1]# cd #退出目录,这个最合适

[root@test ~]# umount /dev/sdb1

注:umount 挂载点 //卸载方式1 或 umount 设备路径 //卸载方式2

例4:写入配置文件,让它开机自动挂载

[root@test /]# vim /etc/fstab #在文件最后写入

/dev/sdb1 /sdb1 xfs defaults 0 0

注释:

/dev/sdb1

/sdb1

xfs

defaults

0

0

要挂载的分区设备

挂载点

文件系统类型

挂载选项

是否备份

是否检测

[root@test ~]# mount -a #自动挂载/etc/fstab中没有挂载上的文件

[root@test ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

/dev/sda3 10G 4.3G 5.8G 43% /

devtmpfs 982M 0 982M 0% /dev

tmpfs 997M 0 997M 0% /dev/shm

tmpfs 997M 9.0M 988M 1% /run

tmpfs 997M 0 997M 0% /sys/fs/cgroup

/dev/sr0 4.3G 4.3G 0 100% /mnt

/dev/sda1 197M 172M 25M 88% /boot

tmpfs 200M 24K 200M 1% /run/user/0

/dev/sdb1 1014M 33M 982M 4% /sdb1

\#发现已经挂载上,说明配置没有问题。 然后再重启,看看挂载

方法2: 使用UUID挂载

[root@test ~]# blkid

/dev/sda1: UUID="a635d4d2-a21e-4d9b-b199-4c8d5cfed808" TYPE="xfs"

/dev/sda2: UUID="46f139f8-fd5c-4e51-8d5c-b33f6c7aa38e" TYPE="swap"

/dev/sda3: UUID="4bcb433e-10e6-464d-a40b-00d018950149" TYPE="xfs"

/dev/sdb1: UUID="5e3a580a-e5b4-448c-88bf-d22fb3d1d9e2" TYPE="xfs"

[root@test /]# echo "UUID=5e3a580a-e5b4-448c-88bf-d22fb3d1d9e2 /sdb1 xfs defaults 0 0" >> /etc/fstab

扩展:了解

/dev/sdb1

/sdb1

xfs

defaults

0

0

要挂载的分区设备

挂载点

文件系统类型

挂载选项

是否备份

是否检测

其中第四列:parameters-文件系统的参数

Async/sync

设置是否为同步方式运行,默认为async

auto/noauto

当执行mount -a 的命令时,此文件系统是否被主动挂载。默认为auto

rw/ro

是否以以只读或者读写模式挂载

exec/noexe

限制此文件系统内是否能够进行"执行"的操作

user/nouser

是否允许用户使用mount命令挂载

suid/nosuid

是否允许SUID的存在

Usrquota

启动文件系统支持磁盘配额模式

Grpquota

启动文件系统对群组磁盘配额模式的支持

Defaults

同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置 samba nfs

第五列:是否进行备份。通常这个参数的值为0或者1

0

代表不要做备份

1

代表要每天进行操作

2

代表不定日期的进行操作

第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整

0

不要检验

1

最早检验(一般根目录会选择)

2

1级别检验完成之后进行检验

1.3 gdisk 磁盘分区工具

gdisk主要是用来划分容量大于2T的硬盘,大于2T fdisk搞不定

两种类型的分区表:GPT和MBR ; MBR不支持4T以上

GPT分区:GPT,全局唯一标识分区表(GUID Partition Table),它使用128位GUID来唯一标识每个磁盘和分区,与MBR存在单一故障点不同,GPT提供分区表信息的冗余,一个在磁盘头部一个在磁盘尾部;它通过CRC校验和来检测GPT头和分区表中的错误与损坏;默认一个硬盘支持128个分区

例:对sdb做gpt分区,创建一个sdb1

[root@test ~]# gdisk /dev/sdb

。。。

Command (? for help): ? # 查看帮助

bback up GPT data to a file

cchange a partition's name

ddelete a partition #删除分区

ishow detailed information on a partition

llist known partition types

nadd a new partition # 添加一个分区

ocreate a new empty GUID partition table (GPT)

pprint the partition table # 打印分区表

qquit without saving changes # 退出不保存

rrecovery and transformation options (experts only)

ssort partitions

tchange a partition's type code

vverify disk

wwrite table to disk and exit # # 写入分区表并退出

xextra functionality (experts only)

?print this menu

Command (? for help): n #新建分区表

Partition number (1-128, default 1): #直接回车

First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: #直接回车, 从头开始划分空间

Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G #给1G空间

Current type is 'Linux filesystem'

Hex code or GUID (L to show codes, Enter = 8300): #分区类型直接回车

注:8300 Linux filesystem ;8e00 Linux LVM 想查看,可以按L 来显示

Changed type of partition to 'Linux filesystem'

Command (? for help): p #查看

。。。

Number Start (sector) End (sector) Size Code Name

1 2048 2099199 1024.0 MiB 8300 Linux filesystem

Command (? for help): w #保存

Do you want to proceed? (Y/N): y #确定写入

OK; writing new GUID partition table (GPT) to /dev/sdb.

The operation has completed successfully.

[root@test ~]# mkfs.xfs /dev/sdb1 #格式化

例2: 修改fstab重启系统后,系统报错:

重启后报错:

12Linux基础-操盘分区与挂载教程

输入root密码: 123456

把fstab中新添加开机自动加载项目删除:

12Linux基础-操盘分区与挂载教程

然后reboot

2 实战扩展swap分区

Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。

mkswap /devices (格式化成swap格式)

swapon /swap (激活/swap,加入到swap分区中)

vim /etc/fstab (开机自启动新添加的swap分区) ,在最后追加:

/devices swap swap defaults 0 0

如果不想使用需要删除,只需要执行#swapoff /swap

2.1 先分个区

[root@test ~]# gdisk /dev/sdb

...

Command (? for help): n #新建分区

Partition number (2-128, default 2): #回车

First sector (34-41943006, default = 2099200) or {+-}size{KMGTP}: #回车

Last sector (2099200-41943006, default = 41943006) or {+-}size{KMGTP}: +1G #给1G

Current type is 'Linux filesystem'

Hex code or GUID (L to show codes, Enter = 8300): #回车

Changed type of partition to 'Linux filesystem'

Command (? for help): w #保存

Do you want to proceed? (Y/N): y

格式化swap

[root@test ~]# mkswap /dev/sdb2

正在设置交换空间版本 1,大小 = 2097148 KiB

无标签,UUID=dc41b5ef-bcf1-477c-902e-c5bb00d41c1e

验证:

[root@test ~]# free -m

total used free shared buff/cache available

Mem: 977 557 75 16 345 168

Swap: 2047 234 1813

[root@test ~]# swapon /dev/sdb2 ---开启

[root@test ~]# free -m

total used free shared buff/cache available

Mem: 977 556 75 16 345 169

Swap: 3071 234 2837

[root@test ~]# swapoff /dev/sdb2 ---关闭

[root@test ~]# free -m

total used free shared buff/cache available

Mem: 977 556 75 16 345 169

Swap: 2047 234 1813

[root@test ~]# swapon -s

FilenameTypeSizeUsedPriority

/dev/dm-1 partition2097148240532-1

[root@test ~]# swapon /dev/sdb2

[root@test ~]# swapon -s #查看

FilenameTypeSizeUsedPriority

/dev/dm-1 partition2097148240532-1

/dev/sdb2 partition10485720-2

12.3.2 通过文件增加SWAP空间

[root@test ~]# dd if=/dev/zero of=swap\_file bs=1M count=500

[root@test ~]# ll /root/swap\_file

[root@test ~]# chmod 0600 /root/swap\_file

[root@test ~]# mkswap -f /root/swap\_file

[root@test ~]# swapon /root/swap\_file

[root@test ~]# free -m

标签: root, 分区, 挂载, dev, partition, sdb1, 操盘

相关文章推荐

添加新评论,含*的栏目为必填