• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Linux磁盘管理

武飞扬头像
西瓜投手爱吃西瓜
帮助1

Linux磁盘管理

1.磁盘的基本概念

什么是磁盘

每个硬盘中心都是一摞高速运转的圆盘,在圆盘上附着的一圈金属颗粒,每个金属颗粒都有自己的磁化程度,用于储存0和1。

当记录数据时,硬盘的磁头开始通电,形成强磁场,数据在磁场的作用下转变成电流,使颗粒磁化,从而将信息记录在圆盘上。

由海量颗粒组成的信息,就是我们存在硬盘里的数据.

2.磁盘的基本结构

盘片>磁道>柱面>扇区

柱面:处于同一个垂直区域的磁道称为 柱面 ,即各盘面上面相同位置磁道的集合)

每一个扇区固定512字节,第一个扇区001,也称之为MBR扇区 466B的MBR 64B的分区表 2B固定的表结尾 55AA

前4个扇区称之为超级块superblock 2048字节

1.什么是盘片?

硬盘一般有一个或多个盘片,每个盘片可以有两面,即第一个盘片的正面为0面,反面为1面然后依次类推。

2.什么是磁道?

每个盘片的盘面在出厂的时候被划分出了多个同心圆环,数据就存储在这样的同心圆环上面,我们将这样的圆环称为磁道(Track),每个盘面可以划分多个磁道。但肉眼不可见。

3.什么是扇区?

在硬盘出厂时会对磁盘进行一次低格,其实就是再每个磁道划分为若干个弧段,每个弧段就是一个扇区(Sector)。扇区是硬盘上存储的物理单位,现在每个扇区可存储512字节数据已经成了业界的约定。

4.什么是柱面?

柱面实际上就是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为 柱面 ,即各盘面上面相同位置磁道的集合。这样数据如果存储到相同半径磁道上的同一扇区,这样可以实现并行读取,主要是减少磁头寻道时间。

5.什么是磁头?

读取磁盘磁道上面金属块,主要负责读或写入数据。

3.磁盘的预备知识

1.磁盘的接口类型

IDE , Scsi (已经被淘汰) , SATA |||与SAS (企业使用较多)

2.磁盘的基本术语

尺寸: 2.5英寸 3.5英寸

容量:KB MB GB TB PB EB

转速:5400 7200 10000 15000

IOPS:每秒能够发生IO的次数

3.磁盘在系统上的命名方式

linux磁盘的命名规则

dev/[接口类型][磁盘序号][分区序号]

接口类型 sd 物理磁盘 vd 虚拟磁盘 序号有 a-z [第1块-第26块]

分区序号有
1-n
1-4为主分区
4-n 逻辑分区

设备名称 分区信息 设备类型

/dev/sda /dev/sda1 第一块物理硬盘的第一个分区

/dev/sdb /dev/sdb2 第二块物理硬盘的第二个分区

/dev/vdd /dev/vdd4 第四块虚拟磁盘的第四个分区

PS1:系统中分区由数字编号表示,1~4留给主分区使用和扩展分区,逻辑分区从5开始,为什么分区还有限制?不应该是随意分配?因为MBR分区表只能分配4个主分区?why?

MBR为什么只能划分4个主分区?

PS2: 前面我们已经提到过MBR分区表只能分配4个主分区,但现在还有一种新型的分区表GPT,GPT支持分配128个主分区。注意MBR与GPT之间不能互转,会导致数据丢失。

MBR与GPT之间又有什么区别?

4.磁盘分区工具fdisk

案例.添加一块小于2TB的磁盘进行使用,步骤如下:

1)给虚拟机添加一块新的硬盘

2)查看磁盘情况

fdisk-l 或 lsblk (推荐) df -Th

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   20G  0 disk 
sdc               8:32   0    5G  0 disk 
sdd               8:48   0    5G  0 disk 
sde               8:64   0    5G  0 disk 
sdf               8:80   0    5G  0 disk 
sr0              11:0    1  4.5G  0 rom  
注释:NAME 磁盘的设备名,在/dev/
MAJ:MIN 磁盘的系统描述 
SIZE 磁盘或分区大小
TYPE 类型
disk 磁盘
part 分区
rom 只读存储器
ram 随机存储器
MOUNTPOINT 挂载点(访问目录路径)
学新通

学新通

2)使用fdisk进行分区

fdisk和gdisk的区别:
    fidsk:fdisk只能用于MBR分区,最大限制磁盘容量 2T
    gdisk:是fdisk的升级版,主要使用的是GPT分区类型,用来划分容量大于2T的硬盘
用法一样,但是gdisk需要安装
[root@caiwendi ~]# yum install -y gdisk
    安装gdisk分区工具
    -y  免交互

PS: 生产分区建议,如无特殊需求直接使用整个磁盘即可,无需分区.

# fdisk -l
# fdisk /dev/sdb
Command (m for help): m                     #输入m 列出常用的命令
Command action  
 a toggle a bootable flag                   #切换分区启动标记
 b edit bsd disklabel                       #编辑sdb磁盘标签
 c toggle the dos compatibility flag        #切换dos兼容模式
 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         #创建新的Sun磁盘标签
 t change a partitions system id            #修改分区ID,可以通过l查看id
 u change display/entry units               #修改容量单位,磁柱或扇区
 v verify the partition table               #检验分区表
 w write table to disk and exit             #保存退出
 x extra functionality (experts only)       #拓展功能
学新通

扩展:分区类型编号

5 扩展分区 82 swap分区 83 常规分区 8e 动态分区

1.fdisk创建主分区

fdisk /dev/sdb n 新增一个分区 p 主分区号 回车 默认创建第一个主分区 回车 再默认扇区回车 5G 分配5G大小

学新通

P 显示分区表的信息

学新通

2.fdisk创建扩展分区

学新通

3.fdisk创建逻辑分区

学新通

4.fdisk查看分区情况,并保存

P 显示分区表的信息

 学新通

3)使用mkfs进行格式化

格式化工具 mkfs 格式化分区 mkswap 格式化交换分区

mkfs -t ext4 设备名
mkfs.ext4 设备名
mkfs -t xfs 设备名
mkfs.xfs 设备名
mkswap 设备名
ext4和xfs的区别:
    ext4:单个文件的大小,ext4可以是16GB到16TB,最大文件系统大小,ext4可以是1EB,ext4受限制于磁盘结构和兼容问题,可扩展性不如xfs
    xfs:单个文件的大小,XFS可以是16TB到16EB,最大文件系统大小,xfs是8EB

格式化分区

mkfs格式化磁盘,实质创建文件系统,文件系统类似于将房子装修成3室一厅,还是2室一厅。

选项: 
# -b 设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块。
# -t 用来指定什么类型的文件系统,可以是ext4, xfs
# -i 设定inode的大小
# -N 设定inode数量,防止Inode数量不够导致磁盘不足
1.格式化整个磁盘
# mkfs.ext4 /dev/sdb 
2.格式化磁盘的某个分区
# mkfs.xfs /dev/sdb1

案例:

1)/dev/sdb1、/dev/sdb2是xfs文件系统

mkfs -t xfs /dev/sdb1
mkfs.xfs /dev/sdb2

学新通

2)/dev/sdb3、/dev/sdb6、/dev/sdb7是ext4文件系统

mkfs -t ext4 /dev/sdb3 
mkfs.ext4 /dev/sdb6
mkfs.ext4 /dev/sdb7 

学新通

 学新通

 学新通

3)/dev/sdb5是swap文件系统

    mkswap /dev/sdb5

学新通

4)使用mount进行挂载

我们只是对磁盘进行了分区格式化,但是你看不到的,你必须要挂载到文件夹下 它才能使用。

如果需要使用改磁盘的空间,需要准备一个空的目录作为挂载点,与该设备进行关联。

mount主要是为文件系统指定一个访问入口。

1.通过mount进行挂载,但重启将会失效,我们称为临时生效

mount [选项] 设备名 挂载目录

-t 指定文件系统挂载分区 -a 读取/etc/fstab文件里所有内容,并按照格式实现挂载 -o 指定挂载参数, remount 重新挂载的参数 umount -l 强制卸载

-a 挂载/etc/fstab中的配置文件 -o 指定挂载参数

     mkdir /data   创建目录 /data
     mount /dev/sdb1 /data/   挂载/dev/sdb1至/data目录

2.挂载的磁盘,如果不想使用可以使用umount进行卸载#选项: -l 强制卸载

1.卸载目录方式

[root@server ~]# umount /data

2.卸载设备方式

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

3.umount不能卸载的情况

[root@server db1]# umount /db1 
umount: /db1: device is busy.
 (In some cases useful info about processes that use
 the device is found by lsof(8) or fuser(1)
PS: 如上情况解决办法有两种, 1.切换至其他目录 2.使用'-l'选项强制卸载
[root@server db1]# umount -l /db1

3.如果需要实现永久挂载则需要将挂载信息写入/etc/fstab配置文件中实现。(通过blkid 查看他的uuid 写入/etc/fstab文件内)

blkid 命令:可以查看块设备(包括交换分区)的文件系统类型、LABEL、UUID、挂载目录等信息
1.使用blkid命令获取各设备的UUID
[root@server ~]# blkid |grep "sdb1"
/dev/sdb1: UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" TYPE="xfs"

2.使用UUID挂载磁盘sdb1分区至于db1, 测试挂载
[root@server ~]# mount UUID="e271b5b2-b1ba-4b18-bde5-66e394fb02d9" /db1

3.写入/etc/fstab中,实现开机自动挂载
[root@server ~]# tail -1 /etc/fstab 
UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db1 xfs defaults 0 0

4.加载fstab配置文件, 同时检测语法是否有错误
[root@server ~]# mount –a

5)虚拟磁盘 swap

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

PS: 当物理内存不够时会随机kill占用内存的进程,从而产生oom,临时使用swap可以解决。

(1)创建分区,并格式化为swap分区

# fdisk /dev/sdb    #分1个G大小
# mkswap /dev/sdb1  #格式化为swap

(2)查看当前swap分区大小,然后进行扩展和缩小

查看当前swap分区大小(mem 内存  swap 虚拟磁盘)
#free -m
     total   used   free    shared  buff/cache  available
Mem: 1980   1475     80      10         424       242
Swap: 2047    4      2043

    swapon 设备名 开启swap分区 
    swapoff 设备名 关闭swap分区
1.扩展swap分区大小
# swapon /dev/sdb2    开启swap分区
# free -m
     total   used   free    shared  buff/cache  available
Mem:  1980   1475     80      10         424       242
Swap: 3047     4      2043
# swapon -a #代表激活所有的swap

2.缩小swap分区大小
# swapoff /dev/sdb1    关闭swap分区
# free -m
     total   used   free    shared  buff/cache  available
Mem: 1980   1475     80      10         424       242
Swap: 2047    4      2043
# swapoff -a #代表关闭所有的swap
学新通

3.检查当前swap分区有哪些设备

#swapon -s
文件名         类型      大小   已用  权限
/dev/dm-1 partition 2097148 4616   -2
/dev/sdb1 partition 1048572   0    -2

4.如果磁盘没过多的分区可用,也可以通过文件增加SWAP空间,本质上还是磁盘

# dd if=/dev/zero of=/opt/swap_file bs=1M count=500
# chmod 0600 /opt/swap_file
# mkswap -f /opt/swap_file 
# swapon /opt/swap_file
# free -m

5.案例

企业案例1:

当前服务器的/home需要单独定义一个分区,如何实现 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]

首先一定要进行备份,将文件放置备份目录后,对home目录进行挂载,在对/home*目录进行还原*(把文件进行备份,新建一个目录,把文件备份到目录中 通过mount进行挂载,把/dev/sdb1挂载至/home目录下。然后再还原源数据。/bak目录下面的文件还原至/home目录下。实际bak目录没有用,bak目录是起中转作用。bak目录是一个媒介。) 1.先将home目录内的文件备份至/bak

mkdir /bak 创建目录/bak touch {01..10}.txt 在home目录下创建01到10文件

mv /home/* /bak 把home下的所有文件备份至/bak目录下

2.挂载给他一个分区 /dev/sdb1 mount /dev/sdb1 /home 挂载/dev/sdb1至/home目录

3.将数据内容还原至/home目录下

mv /bak/* /home 把/bak目录下面的文件还原至/home目录下

企业案例2:

当前服务器的/data分区空间不够用了,需要本地扩容 比如按上述案例的分区,原先/data分区在/dev/sdb2,空间不够,需要本地扩容 实现思路: 1.先对/data目录下的内容进行备份至/bak,增加一块磁盘重新给他1.分区2.格式化3.挂载 (扩容就是新增一个磁盘,重新分配空间 把新增的磁盘进行分区、格式化、挂载。创建一个新目录data,把data里面的文件备份至bak目录下。新增一个磁盘,对磁盘进行分区,格式化,挂载。把新增的磁盘挂载到新创建的目录 data下。再把原文件 bak下面的文件还原至新建目录 data目录下。)

资源准备 1./data分区在/dev/sdb2 mkdir -p /data 创建目录 /data mount /dev/sdb2 /data 把/dev/sdb2 挂载至/data目录下 touch /data/file{1..10}.txt 在/data目录下创建文件1到10.txt

操作过程 1.对data目录进行备份 mv /data/* /bak 把目录/data下的所有文件移动至/bak目录下

  1. 新增一块磁盘,将他分区、格式化、再进行挂载 fdisk /dev/sdc 使用fdisk命令对/dev/sdc进行分区 mkfs.xfs /dev/sdc1 格式化 /dev/sdc1 mount /dev/sdc1 /data4 把/dev/sdc1挂载至/data目录下

  2. .将/data目录下元数据放回去

mv /bak/* /data 把/bak目录下面的文件还原至/data目录下

企业案例3:

虚拟内存扩容 最好的方案: 1.增加一个2G左右的分区 2.mkswap格式化 3.swapon生效

临时解决方案: 1.使用dd生成一个临时文件 (使用dd在swap_file下创建一个2G的文件) dd if=/dev/zero of=/tmp/swap_file bs=2G count=1

2.格式化 (使用mkswap格式化swap_file文件) mkswap /tmp/swap_file

3.开启 (开启swap分区) chmod 600 /tmp/swap_file swapon /tmp/swap_file

永久挂载 将内容写入/etc/fstab /dev/mapper/centos-root / xfs defaults 0 0 UUID=2b447ba4-d59e-450e-bf11-e97130e6a83e /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 UUID="a040b247-01e1-4098-bc84-9b28709c5e23" /test2 xfs defaults 0 0

设备uuid 挂载到的目录 磁盘的格式 挂载参数 自动备份默认 0 开机检查 默认0

查看uuid命令是 blkid /dev/sdb1 [root@localhost ~]# blkid /dev/sdb1 /dev/sdb1: UUID="5c988a1d-7a6b-4fa6-bbbb-346fba829ca4" TYPE="xfs"

一条命令写入永久挂载/etc/fstab echo $(blkid /dev/sdb1|awk '{print $2}') /test1 xfs defaults 0 0 >> /etc/fstab

6.磁盘的操作:三步走

一、分区

查询

fdisk -l

lsblk

df -Th

free -m

分区

fdisk

gdisk

刷新

partprobe

二、格式化

mkfs

mkfs.ext4

mkfs.xfs

mkswap

三、挂载

临时

mount

-a 读取/etc/fstab文件里所有内容,并按照格式实现挂载

-o 指定挂载参数,

重新挂载的参数 remount

umount

-l 强制卸载

swapon

swapoff

blkid (查看挂载目录)

永久

/etc/fstab配置格式

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhehkjc
系列文章
更多 icon
同类精品
更多 icon
继续加载