赞
踩
每个硬盘中心都是一摞高速运转的圆盘,在圆盘上附着的一圈金属颗粒,每个金属颗粒都有自己的磁化程度,用于储存0和1。
当记录数据时,硬盘的磁头开始通电,形成强磁场,数据在磁场的作用下转变成电流,使颗粒磁化,从而将信息记录在圆盘上。
由海量颗粒组成的信息,就是我们存在硬盘里的数据.
盘片>磁道>柱面>扇区
(柱面:处于同一个垂直区域的磁道称为 柱面 ,即各盘面上面相同位置磁道的集合)
每一个扇区固定512字节,第一个扇区001,也称之为MBR扇区 466B的MBR 64B的分区表 2B固定的表结尾 55AA
前4个扇区称之为超级块superblock 2048字节
硬盘一般有一个或多个盘片,每个盘片可以有两面,即第一个盘片的正面为0面,反面为1面然后依次类推。
每个盘片的盘面在出厂的时候被划分出了多个同心圆环,数据就存储在这样的同心圆环上面,我们将这样的圆环称为磁道(Track),每个盘面可以划分多个磁道。但肉眼不可见。
在硬盘出厂时会对磁盘进行一次低格,其实就是再每个磁道划分为若干个弧段,每个弧段就是一个扇区(Sector)。扇区是硬盘上存储的物理单位,现在每个扇区可存储512字节数据已经成了业界的约定。
柱面实际上就是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为 柱面 ,即各盘面上面相同位置磁道的集合。这样数据如果存储到相同半径磁道上的同一扇区,这样可以实现并行读取,主要是减少磁头寻道时间。
读取磁盘磁道上面金属块,主要负责读或写入数据。
IDE , Scsi (已经被淘汰) , SATA |||与SAS (企业使用较多)
尺寸: 2.5英寸 3.5英寸
容量:KB MB GB TB PB EB
转速:5400 7200 10000 15000
IOPS:每秒能够发生IO的次数
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之间又有什么区别?
案例.添加一块小于2TB的磁盘进行使用,步骤如下:
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 挂载点(访问目录路径)
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 显示分区表的信息
格式化工具 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
我们只是对磁盘进行了分区格式化,但是你看不到的,你必须要挂载到文件夹下 它才能使用。
如果需要使用改磁盘的空间,需要准备一个空的目录作为挂载点,与该设备进行关联。
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
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
当前服务器的/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目录下
当前服务器的/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目录下
新增一块磁盘,将他分区、格式化、再进行挂载 fdisk /dev/sdc 使用fdisk命令对/dev/sdc进行分区 mkfs.xfs /dev/sdc1 格式化 /dev/sdc1 mount /dev/sdc1 /data4 把/dev/sdc1挂载至/data目录下
.将/data目录下元数据放回去
mv /bak/* /data 把/bak目录下面的文件还原至/data目录下
虚拟内存扩容 最好的方案: 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
一、分区
查询
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配置格式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。