Linux磁盘管理——分区+挂载(fdisk+gdisk+mount+lsblk+df)

Posted 何翰宇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux磁盘管理——分区+挂载(fdisk+gdisk+mount+lsblk+df)相关的知识,希望对你有一定的参考价值。

文章目录


一、硬盘基础知识

IDE ——> SATA I/II/III 个人pc机 SCSI ——> SAS 服务器上

1. 硬盘命名方式

OSIDE(并口)SATA(串口)SCSI
RHEL5/dev/hda/dev/sda/dev/sda
RHEL6/dev/sda/dev/sda/dev/sda
RHEL7/dev/sda/dev/sda/dev/sda

2. 磁盘设备的命名

/dev/sda2

  • s:硬件接口类型(sata/scsi)
  • d:disk(硬盘)
  • a:第1块硬盘(b,第二块),
  • 2:第几个分区
  • /dev/hd: h=IDE硬盘
  • /dev/hdd3
  • /dev/vd: v=虚拟硬盘

3. 硬盘的分区方式

MBR <2TB fdisk 4个主分区或者3个主分区+1个扩展分区(N个逻辑分区)

  • 分区表中保存的分区信息都是主分区与扩展分区的分区信息,扩展分区不能直接使用,需要在扩展分区内
    划分一个或多个逻辑分区后才能使用
  • 辑分区的分区信息保存在扩展分区内而不是保存在MBR分区表内,这样,就可以突破MBR分区表只能保
    存4个分区的限制

GPT >2TB gdisk(parted) 128个主分区

详细了解链接

注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

二、基本分区管理

1. 磁盘划分思路

  1. 进入分区表,新建分区
  2. 刷新分区表
  3. 格式化分区(不格式化没法挂载)
  4. 挂载使用

注意:

  • 最多只能分4个主分区,主分区编号1-4
  • 逻辑分区大小总和不能超过扩展分区大小,逻辑分区分区编号从5开始
  • 如果删除扩展分区,下面的逻辑卷分区也被删除
  • 扩展分区的分区编号(1-4)

2.lsblk命令

命令:lsblk
作用:查看当前设备的挂载情况

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk 
sr0              11:0    1  4.3G  0 rom 

MOUNTPOINT:挂载点

3. df 命令

命令:df -h
作用:查看单前设备的挂载情况

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.1G   16G   6% /
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.5M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
tmpfs                    182M     0  182M   0% /run/user/0

4. fdisk

fdisk适用于MBR 分区方式
命令:fdisk [选项]
常用选项:

  • -l:查看当前系统的所有设置的分区情况

1)进入分区

通过fdisk [磁盘路径]进行分区

设备文件一般都在/dev目录下
fdisk /dev/sdb进入分区选项
输入m获取帮助

Command(m for help): m 输出帮助信息
Commandaction
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 创建一个新的空白DOS分区表
p print the partition table 打印分区表
q quit without saving changes 退出不保存设置
s createa new empty Sun disklabel 创建一个新的空的SUN标示
t changea partition's system id 改变分区的类型
u changedisplay/entry units 改变显示的单位
v verifythe partition table 检查验证分区表
w write table to disk and exit 保存分区表

2)新建分区

新建拓展分区

Command (m for help): n         # 输入n新建分区
Partition type: 
   p   primary #主分区
   e   extended # 扩展分区
Select (default p): p
Partition number (1-4, default 1): 1 # 选择主分区编号
First sector (2048-20971519, default 2048): #起始柱面默认回车即可
Using default value 2048
Last sector, +sectors or +sizeK,M,G (2048-20971519, default 20971519): +2G # 分区大小2G
Partition 1 of type Linux and of size 2 GiB is se

新建扩展分区

Command (m for help): n #新建分区
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e # 扩展分区
Partition number (2-4, default 2): 
First sector (4196352-20971519, default 4196352): 
Using default value 4196352
Last sector, +sectors or +sizeK,M,G (4196352-20971519, default 20971519): +4G #4G的扩展分区分区
Partition 2 of type Extended and of size 4 GiB is set

在扩展分区下建立逻辑分区
注意:逻辑分区时基于扩展分区的,所以所有逻辑分区的大小不能超过扩展分区,

Command (m for help): n # 新建分区
Partition type:
   p   primary # 主分区
   l   logical # 逻辑分区
Select (default p): l #选择逻辑分区
Adding logical partition 5 #逻辑分区默认从5号开始
First sector (4198400-12584959, default 4198400): # 其实柱面默认直接回车
Using default value 4198400
Last sector, +sectors or +sizeK,M,G (4198400-12584959, default 12584959): +1G # 逻辑分区大小
Partition 5 of type Linux and of size 1 GiB is set

保存退出
输入w即可

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

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

3)查看分区信息

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    12584959     4194304    5  Extended
/dev/sdb5         4198400     6295551     1048576   83  Linux

4)查看分区情况

通过lsblk命令

[root@localhost ~]# lsblk
sdb               8:16   0   10G  0 disk 
├─sdb1            8:17   0    2G  0 part  # 主分区
├─sdb2            8:18   0    1K  0 part # 扩展分区
└─sdb5            8:21   0    1G  0 part # 逻辑分区

注意:扩展分区时不能使用的,它里面保存的是它是其下的逻辑分区的信息

5)刷新分区表信息

命令:partx -a [磁盘路径]

[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partition 5

6)格式化分区

分区需要格式化后才能使用
查看可以格式化的文件系统

[root@localhost ~]# mkfs.
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.xfs     
mkfs.cramfs  mkfs.ext3    mkfs.minix

std1分区格式化成ext4格式

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

std5格式或成xfs格式

[root@localhost ~]# mkfs.xfs /dev/sdb5

6)创建挂载点

注意:挂载点一定要是空目录

[root@localhost ~]# mkdir /u1
[root@localhost ~]# mkdir /u2

7)挂载使用

[root@localhost ~]# mount /dev/sdb1 /u1
[root@localhost ~]# mount /dev/sdb5 /u2

8)小结

  1. 扩展分区的大小决定了所有逻辑分区的大小
  2. 删除扩展分区后下面的逻辑分区都被删除
  3. 分完区后需要手动刷新分区表,如果刷新不成功需要重启操作系统
  4. 创建分区的时候尽可能注意分区序号的连续性

5. gdisk

如果一个磁盘大于2TB,就不适合采用MBR分区了,就得采用GPT分区。
gdisk命令就是用于针对GPT方式分区方式。

下面用fdisk对4.3TB的磁盘sdb分区,就做出了警告

[root@localhost ~]# lsblk
sdb               8:16   0  3.9T  0 disk 
[root@localhost ~]# fdisk /dev/sdb

WARNING: The size of this disk is 4.3 TB (4294967296000 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

1)基本使用

安装:yum -y install gdisk
使用命令:gdisk [磁盘路径]

[root@localhost ~]# lsblk
sdb               8:16   0  3.9T  0 disk 

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

2)获取帮助

通过help或者?获取命令帮助

Command (? for help): help
b	back up GPT data to a file
c	change a partition's name
d	delete a partition
i	show detailed information on a partition
l	list known partition types
n	add a new partition
o	create a new empty GUID partition table (GPT)
p	print the partition table
q	quit without saving changes
r	recovery and transformation options (experts only)
s	sort partitions
t	change a partition's type code
v	verify disk
w	write table to disk and exit
x	extra functionality (experts only)
?	print this menu

3)新建分区

输入n新建分区

Command (? for help): n #新建分区
Partition number (1-128, default 1): 1 # 可建立128个分区
First sector (34-8388607966, default = 2048) or +-sizeKMGTP:  #其实柱面,直接回车
Last sector (2048-8388607966, default = 8388607966) or +-sizeKMGTP: +20G #结束柱面,也就是分区大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): # 直接回车
Changed type of partition to 'Linux filesystem'

4)查看分区

通过p查看分区

Command (? for help): p
Disk /dev/sdb: 8388608000 sectors, 3.9 TiB


Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        41945087   20.0 GiB    8300  Linux filesystem
   2        41945088        73402367   15.0 GiB    8300  Linux filesystem
   3        73402368       136316927   30.0 GiB    8300  Linux filesystem


5)删除分区

输入d删除分区,要指定分区编号,建议从后往前删

Command (? for help): p   #查看分区

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        41945087   20.0 GiB    8300  Linux filesystem
   2        41945088        73402367   15.0 GiB    8300  Linux filesystem
   3        73402368       136316927   30.0 GiB    8300  Linux filesystem

Command (? for help): d # 删除
Partition number (1-3): 3 # 分区编号

Command (? for help): p #查看分区

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        41945087   20.0 GiB    8300  Linux filesystem
   2        41945088 

6)保存分区并退出

w保存分区退出,q是直接退出不保存

Command (? for help): w # 保存退出

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

通过lsblk查看分区

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0  3.9T  0 disk 
├─sdb1            8:17   0   20G  0 part 
└─sdb2            8:18   0   15G  0 part 

三、手动挂载和自动挂载

1. 手动挂载

使用mount命令进行手动挂载,系统重启后就需要重新挂载
命令:mount [选项] [需要挂载的设备] [挂载点]

常用选项:

  • -o:挂载选项 ro,sync,rw,remount
  • -t:文件系统类型

注意:

mount -t nfs 等价于 mount.nfs
mount -t cifs 等价于 mount.cifs(SAMBA)

NFS详解
SAMBA

1)blkid命令

作用:查看设备的UUID和文件系统类型

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4"

2)重新挂载设备

remount:重新挂载一个设备(针对已经挂载的设备)

[root@localhost ~]# lsblk
sdb               8:16   0   10G  0 disk 
├─sdb1            8:17   0    2G  0 part /u1
├─sdb2            8:18   0    1K  0 part 
└─sdb5            8:21   0    1G  0 part

我们发现sdb1已经被挂载到了,/u1目录下

重新挂载:把ro重新挂载成rw

[root@localhost ~]# mount
/dev/sdb1 on /u1 type ext4 (ro,relatime,seclabel,data=ordered)

[root@localhost ~]# mount -o remount,rw /dev/sdb1
/dev/sdb1 on /u1 type ext4 (rw,relatime,seclabel,data=ordered)

注意:重新挂载,既可以写设备文件本身,也可以写挂载路径

# mount -o remount,ro /dev/sdb1
# mount -o remount,ro /u01

3)挂载设备方式(e2label 命令)

挂载设备方式可以通过

  • 真实设备
  • 设备UUID
  • 设备的卷标

通过设备的UUID挂载

[root@localhost ~]# blkid /dev/sdb5
/dev/sdb5: UUID="cf856a04-47e6-4b50-bed7-23e98d517ab6" TYPE="xfs" 
[root@localhost ~]# mount UUID="cf856a04-47e6-4b50-bed7-23e98d517ab6" /u2
[root@localhost ~]# lsblk

sdb               8:16   0   10G  0 disk 
├─sdb1            8:17   0    2G  0 part /u1
├─sdb2            8:18   0    1K  0 part 
└─sdb5            8:21   0    1G  0 part /u2

设置卷标命令:e2label [设备路径] [要设置的卷标名称]

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4" 
[root@localhost ~]# e2label /dev/sdb1 test_db
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="test_db" UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4" 

通过卷标挂载

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="test_db" UUID="c28261f4-97b3-474f-bbe8-efe1d8b6c87d" TYPE="ext4" 

[root@localhost ~]# mount LABEL="test_db" /u1
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sdb               8:16   0   10G  0 disk 
├─sdb1            8:17   0    2G  0 part /u1
├─sdb2            8:18   0    1K  0 part 
└─sdb5            8:21   0    1G  0 part  

4)卸载设备:umount

命令:umount [挂载路径]umount [设备路径]

[root@localhost ~]# lsblk
sdb               8:16   0   10G  0 disk 
├─sdb1            8:17   0    2G  0 part /u1
├─sdb2            8:18   0    1K  0 part 
└─sdb5            8:21   0    1G  0 part 
[root@localhost ~]# umount /u1

[root@localhost ~]# lsblk
sdb               8:16   0   10G  0 disk 
├─sdb1            8:17   0    2G  0 part 
├─sdb2            8:18   0    1K  0 part 
└─sdb5            8:21   0    1G  0 part 

2. 开机自动挂载

1)挂载选项

挂载选项:
async/sync 异步/同步:
auto/noauto 自动/非自动:
rw/ro 读写/只读:
exec/noexec 可被执行/不可被执行:
remount 重新挂在一个已经挂载的文件系统,常用于修改挂载参数
user/nouser 允许/不允许其他普通用户挂载:
suid/nosuid 具有/不具有suid权限:该文件系统是否允许SUID的存在。
usrquota 这个是在启动文件系统的时候,让其支持磁盘配额,这个是针对用户的。
grpquota 支持用户组的磁盘配额。

2)设置开机自动挂载

修改/etc/rc.local配置文件
因为配置文件里的命令要写查看挂载命令的完整路径,通过which查看命令的查看挂载命令的完整路径。

# 查看挂载命令的完整路径
[root@localhost ~]# which mount
/usr/bin/mount

修改配置文件vim /etc/rc.local
示例:开机以只读同步的方式自动挂载/etc/sdb1/u1目录下

/usr/bin/mount -o sync,ro /dev/sdb1 /u1

重启机器看看是否自动挂载

3.自动挂载(autofs)

示例:让系统自动挂载/dev/sdb5设备,如果2分钟没有被用自动卸载
先格式化/dev/sdb5分区
命令:mkfs.ext4 /dev/sdb5

1)autofs

特点:挂载是由访问产生;卸载是由超时产生;依赖于后台的autofs服务

安装命令:yum -y install autofs

2)修改配置文件

修改/etc/auto.master定义一级挂载点和子配置文件

定义一级挂载点/u1和子配置文件vim /etc/auto.master

# 在8行添加
# -t 120等价于 --timeout 120 表示120秒(两分中没有使用自动卸载)
/u1     /etc/auto.test  -t 120

注意:子配置文件一定要是auto.开头
手动创建子配置文件,定义二级挂载点和需要挂载的设备

命令:vim /etc/auto.test

test -fstype=ext4,ro :/dev/sdb5

3)重启服务

命令:systemctl restart autofs

4)验证自动挂载

只要一访问就能自动挂载/dev/sdb5

[root@localhost ~]# df -h
[root@localhost ~]# cd /u2
[root@localhost u2]# ll
total 0
[root@localhost u2]# cd test
[root@localhost test]# cd ~
[root@localhost ~]# df -h
# 自动挂载
/dev/sdb5                3.9G   16M  3.7G   1% /u2/test

发现只要一访问到指定的test目录,就会自动创建test目录并自动挂载。
马上退出该目录后,只要不使用,过120秒回自动解挂该分区

4. NFS自动挂载

将(NFS)主机上的共享目录/share/nfs挂载到(server)本地的/nfstmp下面

1) 环境准备

主机名ip作用
nfs192.168.44.160搭建NFS服务共享目录
auto192.168.44.200使用autofs自动挂载nfs主机上的目录

关闭防火墙和SELInux

2)nfs主机

安装NFS:yum -y install rpcbind nfs-utils

创建/share/nfs 目录,并创建测试文件

[root@nfs~]# mkdir -p /share/nfs
[root@nfs~]# touch /share/nfs/test1..5

修改配置文件
vim /etc/exports

# 共享/share/nfs目录给auto主机
/share/nfs      192.168.44.200/24(rw)

重启nfs服务

[root@nfs~]# systemctl restart rpcbind
[root@nfs~]# systemctl restart nfs

3)auto主机

创建挂载目录/nfstmp

# mkdir /nfstmp

安装:yum -y install nfs-utils
使用autofs方式自动挂载

编写/etc/auto.master配置文件,定义一级挂载点/nfstmp和自配置文件

/nfstmp /etc/auto.nfstest --timeout 60

手动创建auto.nfstest子配置文件,定义二级挂载点和需要挂载的目录
vim /etc/auto.nfstest

/test -nfs,ro 192.168.44.160:/share/nfs

4)重启服务

命令:systemctl restart autofs

5)测试验证

访问 定义的挂载目录(注意这个目录并没有创建)/nfstmp/test,只要一访问旧会自动挂载nfs主机下/share/nfs目录

[root@localhost ~]# ls /nfstmp/test
test1  test2  test3  test4  test5
[root@localhost ~]# df -h
192.168.44.160:/share/nfs   17G   11G  6.8G  61% /nfstmp/test
[root@localhost ~]# 

四、总结挂载设备的三种方式

注意:想要挂载磁盘分区,一定要先格式化分区!

  1. 设备要被挂载,必须要有文件系统类型(mkfs.类型)
  2. 手动挂载mount mount -o 挂载选项(ro,rw,auto,noexec…) 需要挂载设备 挂载点
    重启需要再次重新挂载
  3. 开机自动挂载
    修改/etc/rc.local文件 启动后最后读取文件,执行该文件必须要有可执行权限
  4. autofs自动挂载
    使用时触发自动挂载
    超时自动卸载
    如何配置设备的autofs自动挂载
    1)安装autofs软件
    2)修改/etc/auto.master文件 定义1级挂载点和超时时间,子配置文件
    3)创建刚刚定义的子配置文件 二级挂载点和需要挂载设备以及文件系统类型及挂载方式
    4)启动服务,测试验证

以上是关于Linux磁盘管理——分区+挂载(fdisk+gdisk+mount+lsblk+df)的主要内容,如果未能解决你的问题,请参考以下文章

Linux磁盘管理----分区格式化挂载fdiskmkfsmount

linux磁盘管理相关命令

linux磁盘管理相关命令

20磁盘管理—linux磁盘管理详解(分区)

linux 磁盘挂载

Linux新磁盘分区格式化及挂载-fdisk命令