磁盘及磁盘管理
1、磁盘介绍
SAS硬盘
SAS:串行连接SCSI接口
SAS:serial attached scsi,串行李拦截scsi接口,串行连接小型计算机系统接口
SAS是新一代的SCSI技术,SATA硬盘相同,都是采用串行技术获取高速,
SAS的接口是可以兼容SATA
硬盘尺寸
3.5寸涉及
2.5寸涉及
问题:并口硬盘和串口硬盘,哪个块?
由于8通道之间的互相干扰,传输速度就会收到了影响,当传输出错的时候要同时重新传8位的数据,速度越快,干扰越多;
串行没有干扰,如果传输出问题,重发最后一位即可;
磁盘种类
- 希捷、西数、日历、HP、DELL、EMC、IBM
- 固态:价格相对贵,寿命长、读取速度快
- 机械:怕摔、怕磁、磁道寻址man
- SATA:
- SAS、SCSI
- PCIE M.2
常见的磁盘
dell:sas 300g 15k 3.5英寸、128MB 6Gbp/S
- SAS 2T 4T
- 希捷 SEAGATE 2TB 7200转 128M SAS 企业级硬盘 6Gbp/S
- 假SAS=SATA盘身+SAS接口)支持热插拔)
- 硬盘:容量大+便宜
- 提速度,假SAS做raid5 raid10 做分布式存储mfs、HDFS、GFS、
西部数据:
- 黑盘、红盘、紫盘、蓝盘、金盘
ST是希捷
WD是西数
2、磁盘分区工具
硬盘分区标识
MBR概述:就是Master Boot Record 就是磁盘的主引导分区;
- 磁盘的0柱面、0磁头、1扇区称为主引导分区(MBR分区);
- 组成:主引导程序、硬盘分区表(DPT)和分区有效标志
- 主引导程序:占446个字节
- 分区表:64个字节
- Magic number 占2个字节
分区编号:
- 主分区:1~4
- 扩展分区:不能使用的
- 逻辑分区:5以上,而且建立在扩展分区之上
分区作用:
- 主分区:主要用来启动操作系统,boot分区放到主分区上
- 扩展分区:不能直接使用;
MBR分区操作
GPT的分区方式,没有限制主分区的个数
fdisk命令
- 作用:帮助硬盘分区
- 语法:fdisk+选项+硬盘路径
- 选项:
- -l:查看硬盘分区
- 硬盘的命名方式:/dev/sd[a…z]n
- /sda表示第一块硬盘,/sdb是第二块硬盘
- n:代表分区
- /dev是设备目录存放的位置
增加一块sdb硬盘
操作:
- 虚拟机–>关机–>“编辑虚拟机”–>添加–>选择硬盘–>全部默认下一步
对sdb硬盘进行分区
具体的fdisk操作如下,解释如下
#查看一下sdb硬盘信息
[root@Node0 ~]# fdisk -l /dev/sdb
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
#对硬盘进行分区
[root@Node0 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x2d01abdc 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m #获取帮助
#获取帮助后有如下的操作信息
命令操作
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)
#对sdb进行分区,分出一个sdb1
命令(输入 m 获取帮助):n #对sdb硬盘进行分区
Partition type:
p primary (0 primary, 0 extended, 4 free) #主分区
e extended #拓展分区
Select (default p): p #选择分区的是主分区
分区号 (1-4,默认 1):1 #分区号为1,即sdb1
起始 扇区 (2048-41943039,默认为 2048): #起始的扇区-->选择默认
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G #分区的大小
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p #分区的查看
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2d01abdc
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
命令(输入 m 获取帮助):w #保存所做的分区
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
#进入系统查看分区是否成功
[root@Node0 ~]# ls /dev/sdb* #能看到信息就是成功了
/dev/sdb /dev/sdb1
分区已经做出来了,但是还是不能使用的,需要格式化以及挂载才能使用
mkfs.ext4:创建文件格式命令
语法:mkfs.ext4或者mkfs.按两下tab键,多种格式选择
选项:
- -f:强制分区
[root@Node0 ~]# mkfs.【接着按两下tab键】
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
#创建文件系统
[root@Node0 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
#创建挂载点
[root@Node0 ~]# mkdir -p /sdb1
[root@Node0 ~]# mount /dev/sdb1 /sdb1
#挂载
[root@Node0 ~]# df -h | grep sdb
/dev/sdb1 2.0G 33M 2.0G 2% /sdb1
对已存在的sda硬盘进行分区,分出一个sda4
#查看一下硬盘的情况
[root@Node0 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be3b4
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 5220351 2097152 82 Linux swap / Solaris
/dev/sda3 5220352 41943039 18361344 83 Linux
命令(输入 m 获取帮助):n #这里我们发现我的系统无法分区,sda已经没有空间了;
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已选择分区 4
No free sectors available
#如果成功分区;当保存的时候会有这个报错提示
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)
#大概的意思就是如果想使用就使用reboot命令
#另外一个就是使用
[root@Node0 ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
#还有一个命令特别管用partx -a 重新获得新分区
[root@Node0 ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partition 1
解决无法卸载问题
#这里故意制造报错信息
[root@Node0 ~]# cd /sdb1/
[root@Node0 sdb1]# touch aaaa
#我们卸载一下分区 #--->这里就是直接报错了
[root@Node0 sdb1]# umount /dev/sdb1
umount: /sdb1:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
#其实原因也是很简单,因为我们在这个分区中,会有这个报错;如果英文报错怎么办????
#看不懂??看懂了也不明白-->怎么办?
#这里我们根据提示看看
[root@Node0 sdb1]# lsof /sdb1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 7463 root cwd DIR 8,17 18 64 /sdb1 #看着这bash,代表有个进程在使用
lsof 7558 root cwd DIR 8,17 18 64 /sdb1
lsof 7559 root cwd DIR 8,17 18 64 /sdb1
[root@Node0 sdb1]# fuser /sdb1 #使用这个命令也能看到
/sdb1: 7463c
[root@Node0 ~]# lsof /sdb1 #再退出这个目录看看,啥啥都没有
[root@Node0 ~]# fuser /sdb1 #同样的是啥啥都没有
#这时候直接卸载就可以了
[root@Node0 ~]# umount /dev/sdb1
开机自启动配置
–>重要文件/etc/fstab
#这里以sr0作为例子操作
[root@Node0 ~]# vim /etc/fstab
...........
UUID=bf38a86c-e409-47ed-aacb-27635c9c4adc swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0
需要挂载的设备分区 挂载点 文件系统类型 挂载选项 是否备份 是否检测
我们可以看到一串那个啥UUID;
那么我们可以理解为在linux中,它是设备的唯一标识符
如果使用uuid挂载那么绝对没有问题,前提下不要复制错
#如何查看uuid
[root@Node0 ~]# blkid /dev/sr0
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
#通常我们经常遇到查看硬盘的数量
[root@Node0 ~]# fdisk -l
[root@Node0 ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17.5G 0 part /
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 2G 0 part
sr0 11:0 1 4.3G 0 rom /mnt/cdrom
/etc/fstabl文件系统类型分析
[root@Node0 ~]# vim /etc/fstab
............
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0
文件系统:
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
GPT分区模式
这种分区模式是使用大于2TB的硬盘的,
MBR分区不支持超过2TB的硬盘,因此我们也使用了GPT格式
那么什么是GPT分区
GPT,全局唯一标识分区表(GUID Partition Table),它使用128位GUID来唯一标识每个磁盘和分区,与MBR存在单一故障点不同,GPT提供分区表信息的冗余,一个在磁盘头部一个在磁盘尾部;它通过CRC校验和来检测GPT头和分区表中的错误与损坏;默认一个硬盘支持128个分区
对GTP格式进行分区
gdisk命令
作用:可以对GPT文件系统分区
用法和fdisk差不了多少
#直接使用命令gdisk
[root@Node0 ~]# gdisk /dev/sdb #这里我们看到之前/sdb的分区是MBR文件格式就是dos还是什么的
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present #明显的没有-->也有提示,如果强制分区就会删除原有的MBR文件系统
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Command (? for 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
#添加sdb2分区
Command (? for help): n #添加分区
Partition number (2-128, default 2): 2 #扇区从2开始
First sector (34-41943006, default = 4196352) or {+-}size{KMGTP}:
Last sector (4196352-41943006, default = 41943006) or {+-}size{KMGTP}: +2G #分区大小
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 #保存退出
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y #这里就是直接改掉了文件系统了
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
#查看一下
[root@Node0 ~]# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective #这里也有
BSD: not present
APM: not present
GPT: present #这里能够看到
Found valid GPT with protective MBR; using GPT. #Using GPT
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2E90DFAB-5A13-4F08-85F3-2B49AD0A9B99
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 33554365 sectors (16.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4196351 2.0 GiB 8300 Linux filesystem
2 4196352 8390655 2.0 GiB 8300 Linux filesystem
GPT格式的另外一个命令
parted命令
[root@Node0 ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
#实际操作
(parted) mklabel
New disk label type? gpt (我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车)
(parted) mkpart
分区名称? []? sdb5
文件系统类型? [ext2]? ext4
起始点? 0
结束点? 5
警告: You requested a partition from 0.00B to 5000kB (sectors 0..9765).
The closest location we can manage is 17.4kB to 1048kB (sectors 34..2047).
Is this still acceptable to you?
是/Yes/否/No? yes
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? ignore
(parted) print
/etc/fstab修改错误直接造成ctrond+d报错
常见的报错;绝大部分原因就是fstab文件修改错误
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jqHE4UG1-1641049849280)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1630544180801.png)]
解决办法:
进单用户:修改fstab
或者直接使用密码登陆再修改fstab文件
3、拓展swap分区
swap分区的作用:在物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,当做内存使用
- 分区需要格式化成swap格式
- 使用swapon命令开启或者swapoff命令关闭
实验:
#首先查看一下内存空间
[root@node0 ~]# free -m
total used free shared buff/cache available
Mem: 1980 133 1723 9 123 1695
Swap: 2047 0 2047
#创建一个分区
[root@node0 ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):w
#格式化成swap
[root@node0 ~]# mkswap /dev/sdb1
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=db9e8de3-5b07-4a03-99e1-f0163716a23a
#增加到内存
[root@node0 ~]# swapon /dev/sdb1
[root@node0 ~]# free -m
total used free shared buff/cache available
Mem: 1980 133 1722 9 123 1695
Swap: 3071 0 3071
#关闭
[root@node0 ~]# swapoff /dev/sdb1
[root@node0 ~]# free -m
total used free shared buff/cache available
Mem: 1980 133 1723 9 124 1695
Swap: 2047 0 2047
使用文件形式来扩容swap分区
- 当物理内存不够用,然后又没有多余的空间腾出来,可以使用文件的形式来拓展swap分区
#形成一个1G的文件
[root@node0 ~]# dd if=/dev/zero of=/root/swap.txt bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB)已复制,6.69355 秒,157 MB/秒
#修改权限
[root@node0 ~]# ll /root/swap.txt
-rw-r--r-- 1 root root 1048576000 9月 3 06:19 /root/swap.txt
[root@node0 ~]# chmod 0600 /root/swap.txt
#把文件指定成swap分区
[root@node0 ~]# mkswap -f /root/swap.txt
正在设置交换空间版本 1,大小 = 1023996 KiB
无标签,UUID=4e2aec65-85af-4494-a239-d3664caff9cd
#启用查看
[root@node0 ~]# swapon /root/swap.txt
[root@node0 ~]# free -m
total used free shared buff/cache available
Mem: 1980 133 694 9 1152 1663
Swap: 3047 0 3047