Linux运维基础-磁盘管理

设备文件
一切皆文件:open(),read(),write(),close()
设备类型:
字符文件:char,c,存取单位字符,键盘
块设备:block,b,存取单位块,磁盘
设备文件:/dev/下关联至一个设备驱动程序,进而能够与之对应的硬件设备进行通信
设备号码:主设备号(标识设备类型),次设备号(标识同一类型下的不同设备)
硬盘接口类型:
并行:IDE,SCSI
串口:SATA,SAS,USB

复制设备文件cp -a
例如:在/data下创建字符设备:mknod /data/zerofile c 1 5
创建10M的test文件:dd if=/data/zero of=test bs=1M count=10
hexdump -C test查看二进制,里面全是0

CHS 磁盘三维
sector 扇区
head 磁头 track磁道
cylinder 柱面(柱面数等于磁道数)
6bit sector 8bit head 10bit track
采用24bit位寻址
最大寻址空间8GB

LBA(逻辑块寻址)
LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
LBA采用48个 bit位寻址
最大寻址空间128PB

使用磁盘
1.分区
2.创建文件系统,格式化
3,挂载:分配目录名

磁盘分区:
为什么分区:
优化I/O性能
实现磁盘空间配额限制
提高修复速度
隔离系统和程序(如数据库数据和日志分开存放不同分区)
安装多个OS
采用不同文件系统

两种分区:MBR ,GPT
MBR(主引导记录):master Boot Record,32位表示扇区数,分区不超过2T
0磁道0扇区:512bytes
446bytes:boot loader 引导系统使用
64bytes:分区表,16bytes标识一个分区
2bytes:55AA,硬盘分区标识位(hexdump -C /dev/sda -n 512 -v)
4个分区,3个主分区+1个扩展分区(N个逻辑分区)

GPT
GPI:GUID(Globals Unique Identifiers),partition table 支持128个分区,使用64位,支持8Z(512Byte/block)和64Z(4096Byte/block)
使用128位UUID(univeersally Unique Identifier)表示磁盘和分区GPT分区表,自动备份在头和尾两份,并有CRC校验位
UEFI(统一扩展固件接口)硬件支持GPT,使操作系统启动
磁盘上有文件调用uuid:cat /etc/fstab
图形界面下直观查看磁盘管理功能工具:gnome-disk

BIOS+MBR与UEFI+GPT
开机---bios初始化--bios自检---引导操作系统---进入系统
开机----UEFI初始化----引导操作系统---进入系统

管理分区
列出块设备:lsblk -f可以列出文件系统类型
创建分区使用:
fdisk创建MBR分区
centos6分逻辑分区应注意缝隙问题,centos6是以柱面为单位,centos7是以扇区为单位
gdisk创建GPT分区
parted高级分区操作
echo -e "n\n\n+2G\nw" | fdisk /dev/sda &>/dev/null

partprobe-重新设置内存中的内核分区表版本
centos7同步内存分区表:partprobe
centos6同步内存分区表:partx -a /dev/sda (只适合于新增分区使用)
centos6同步内存删除分区:partx -d --nr 6-8 /dev/sda(6-8是分区号)

parted高级分区操作(交互式执行),操作都是实时生效,小心使用
parted /dev/sda print显示磁盘信息
parted /dev/sdb mklabel msdos创建MBR分区
parted /dev/sdb mklabel gpt创建GPT分区
创建分区:parted /dev/sdb mkpart primary 1 1000(以MB为单位)
查看分区:parted /dev/sdb print 或 parted -l /dev/sdb
删除分区:parted /dev/sdb rm 1
删除磁盘上分区操作:dd if=/dev/zero of=/dev/sdb bs=1 count=512
查看确认:hexdump -C /dev/sdb -n 512

fdisk -l是读取硬盘上的分区表,lsblk是内存中读取的分区表

备份64字节分区表:dd if=/dev/sdb of=/data/partition bs=1 count64 skip=446
破坏64字节分区表:dd if=/dev/zero of=/dev/sdd bs=1 count=64 seek=446

备份分区表:dd if=/dev/sda of=/data/mbr_bak bs=1 count=512
hexdump -C /data/mbr_bak或者hexdump -C /dev/sda -n512 -v
把文件拷贝到其他地方:scp /data/mbr_bak 192.168.30.233:/data/
破坏分区表:dd if=/dev/zero of=/dev/sda bs=1 count=512
破坏分区表后可以查看:ls /dev/sda*,cat /proc/partitions
破坏最后分区标识位2位:dd if=/dev/zero of=/dev/sdd bs=1 count=2 skip=510 seek=510
跟破坏分区表效果一样
设备未重启的情况下:dd if=/data/centos7_mbr_bak of=/dev/sda bs=1 count=512
重启的话有两种办法修复:
一、拆下硬盘到其他设备上修复,恢复分区表
二、进入救援模式恢复:
手动给网卡配地址:ifconfig ens33 192.168.33.6/24

文件系统:

操作系统中负责管理和存储文件信息的软件结构称为文件管理系统
从系统角度看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统,具体来说,为用户建立文件,存入,读出,修改,转储文件,控制文件的存取,安全控制,日志功能,压缩,加密等
查看当前系统支持的文件系统:ls /lib/modules/uname -r/kernel/fs
Linux文件系统:ext2(Extended file system),ext3,ext4,xfs(SGI),btrfs(Oracle),reiserfs,jfs(AIX),swap
光盘:iso9960
windows:FAT32,exFAT,NTFS
网络文件系统:NFS,CIFS
集群文件系统:GFS2,OCFS2(oracle)
分布式文件系统:fastdfs,moosefs,mogilefs,Lustre
RAW:未经处理或者未经格式化产生的文件系统

文件系统的分类
根据其是否支持journal功能:
日志型文件系统:ext3,ext4,xfs...
非日志型文件系统:ext2,vfat
文件系统的组成部分:
内核中的模块:ext4,xfs,vfat
通过vfs传给内核
用户空间管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat

free命令里面的buffers和cached,
buffer(缓冲)一般是内存中做写缓冲用的,cache是磁盘上读缓存用的

查看文件系统:
blkid /dev/sdb1
-U uuid,-L 卷标名
通过UUID查对应的分区:
blkid -U cat /etc/fstab|grep -E /data|grep -oE "[a-z0-9-]+"|head -1
blkid -U sed -nr ‘/data/[email protected]^(.*)=([0-9a-z-]+).*@\[email protected]‘ /etc/fstab
df -T查看当前系统用的文件系统,只能显示已挂载的
创建文件系统自动生成uuid,uuidgen可以生成uuid(128位)
改UUID:tune2fs -U ‘uuid= ‘(或·uuidgen·) /dev/sdb2
建议以后脚本用uuid表示分区

创建文件系统:mkfs.ext4或mkfs -t ext4
-b{ 1024 | 2048 |4096 }指定块大小
-i #:为数据空间中每多少字节创建一个inode;此大小不应该小于block的大小
-N #:指定分区中创建多少个inode
-l 一个inode占用空间大小(123---4096)
-O指定特性
-m #;默认5%为管理人预留空间占总空间的百分比,-m 0.1(1/1000)
或mkfs.ext4 /dev/sdb2 -b 1024 -m 0.1
mke2fs /dev/sdb1 创建ext2文件系统或mke2fs -t ext2 | ext3 |ext4 /dev/sdb2创建ext4文件系统
mkfs -t ext4 /dev/sdb1等价于mkfs.ext4 /dev/sdb1
mkfs.ext4 -L /data/mysql /dev/sdb1创建带/data/mysql标签的分区
mkfs -t ext4 /dev/sdb1 -b 1024指定文件系统时指定块大小
mkfs命令会有提示
通过脚本方式创建分区:echo -e "n\np\n\n\n+2G\nw\n" |fdisk dev/sdbc
多行重定向:fdisk -l /dev/sdc<<EOF

tune2fs:重新设定ext系列文件系统可调整参数的值
Centos6查看ext系列文件系统元数据(只能查看ext系列):tune2fs -l /dev/sdb2
-L ‘LABEL’:修改卷标
或e2label修改ext系列卷标:e2label /dev/sb2 /data/mysql 改为/data/mysql
-O文件系统属性启用或禁用,-O ^has_journal
-o调整文件系统的默认挂载选项,-o ^acl
-m #:修改预留给管理员的空间百分比
-U指定UUID:tune2fs -U uuidgen /dev/sdb2
tune2fs -c # /dev/sdb2,更改最大挂载次数触发fsck
tune2fs -C # /dev/sdb2 ,更改当前挂载次数
Centos6 改变默认挂载选项:tune2fs -o acl /dev/sdb1
Centos6系统默认分区有acl功能,手工创建的没有
tune2fs -o acl /dev/sdb2 执行后必须取消挂载再重新挂载才能生效,
取消acl:tune2fs -o ^acl /dev/sdb2
或者mount -o acl /dev/sdb1 /data/sdb1
不取消挂载的情况下取消acl:mount -o noacl,remount /dev/sdb1 /data/sdb1
Centos7文件系统默认都有acl功能
findfs:查找分区
查找已知UUID对应的设备:
findfs UUID=8e8e4838-15c0-400d-8349-e203659c41c5
blkid -U 8e8e4838-15c0-400d-8349-e203659c41c5

Centos6查看块设备(超级块):dumpe2fs /dev/sda1,适合ext系列,0-10的奇数块有备份块
Centos7查看块设备:xfs_info /dev/sda1
分页显示块信息:dumpe2fs /dev/sdb2 |less
dumpe2fs -h /dev/sdb2

修复文件系统
fsck可以修复文件系统-a 自动修复,-r交互式修复,实际是调用e2fsck
clean表示文件系统正常,noclean文件系统有问题

破坏性操作:dd if=/dev/zero of=/dev/sdb1 bs=1M count=20
tune2fs -l /dev/sdb2查看情况,
修复分区一定要确保文件系统未处于挂载状态,fsck和e2fsck是ext文件系统修复,
xfs文件系统修复用fsck也行,会自动调用xfs_repair命令
fsck /dev/sdb1 -y可以修复文件系统损坏
e2fsck /dev/sdb1 -f强制修复

挂载mount
把设备关联到文件夹上才能使用
一个挂载点(目录)同个时间点只能挂载一个设备
一个分区可以挂载多个文件夹目录,看到的东西是一样的,避免循环挂载
挂载点文件夹最好是空文件夹,否则之前的文件则无法访问,造成垃圾文件
挂载点目录必须存在,挂载可以写设备名,也可以写卷标,也可以写uuid
普通用户不能挂载

查看挂载:
df ,mount, cat /etc/mtab(会根据挂载情况自动更新),cat /proc/mounts内核记录挂载的设备
查看ext4文件系统元数据:tune2fs -l /dev/sdb2,有挂载次数
tune2fs -c # /dev/sdb2,更改最大挂载次数触发fsck
tune2fs -C # /dev/sdb2 ,更改当前挂载次数
mount 命令
-a自动挂载,读取/etc/fstab配置文件
-r只读挂载,-w读写挂载(默认rw),
-n:不更新/etc/mtab,mount不可见,隐藏挂载,centos7不起作用(指向了proc下的文件)
-L ‘LABEL’:以卷标指定挂载设备
-B(--bind)绑定目录到另一个目录上
-o 后跟挂载属性:
async:异步模式,默认
sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件,网站中的文件可以设置
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载
ro:只读 ,rw:读写
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
acl:启用此文件系统上的acl功能
loop:使用loop设备
_netdev当网络可用时才对网络设备挂载,如NFS系统
defaults:相当于rw,suid,dev,exec,auto,nouser,async

更改分区的卷标名:e2label /ev/sdb2 / /data/sdb2
mount /dev/sdb2 /data/sdb2或者mount LABEL=/data/sdb2 /data/sdb2
mount命令可以查看挂载点,或者cat /etc/mtab(该文件会自动更新,记录当前设备挂载情况)

查看目录谁在用:lsof /data/html 或fuser -v /data/html
强行踢出:fuser -km /data/html,终止前先发公告通知
取消挂载 umount /data/sdb2(写卷标名,挂载点都行)

只读挂载:mount -r /ev/sdb1 /data/sdb1
不取消挂载的情况下重新挂载更改设置:mount -o remount,ro /data/sdb1
Centos6有用,7没用隐藏挂载:mount -n /ev/sdb1 /data/sdb1,只能通过cat /proc/mounts查看

目录挂载目录:mount -B(--bind)/data/sdb1 /mnt/sdb1
查看文件夹目录是否是挂载状态:findmnt /data/sdb2
※查看目录是否是挂载状态
findmnt /data/sdb2 &> /dev/null || mount /dev/sdb2 /data/sdb2

自己创建的块设备挂载目录:
dd if=/dev/zero of=/root/p1 bs=1M count=100,mkfs.ext4 p1,blkid p1
mount -o loop /root/p1 /mnt,Centos7不需要加-o loop
想要永久保存,需要写入/etc/fstab里面,不能用uuid添加,需要用设备名:
/root/p1 /mnt/p1 ext4 loop 0 0

loop
losetup -a 可以查看文件设备和系统自动分配的loop#的映射关系
centos6最多可以挂载8个块设备,其他的需要自己添加,
mknod /dev/loop8 b 7 8,自己创建loop8设备
指定loop8需要人为关联,losetup /dev/loop8 p2
如果需要很多,需要改kernel文件,vim /boot/grub/grub.conf,在kernel那行尾加 max_loop=100
生效需要重启设备

文件夹挂载文件夹保存到文件:
/etc/fstab应该这样写:/boot /mnt/boot none bind 0 0,然后mount -a
※想要永久挂载光盘,只能写设备名:
如:/dev/sr0 /mnt/cdrom iso9660 defaults 0 0,然后mount -a挂载/etc/fstab下的所有文件系统
※/etc/fstab
可以把分区挂到文件夹,可以把文件夹挂到文件夹,可以文件挂文件夹
也可以把网络资源挂载到目录,挂载即关联
挂载重启后会失效,mount命令是临时挂载
要是生效必须存文件:/etc/fstab
改配置文件之前一定先备份:cp /etc/fstab{,.bak}
最后的两个数字第一个1表示1天备份一次,第二个是开机是否检查0不检查,其他是检查次序
如果最后一个是非0,uuid对应设备不存在会导致系统无法正常启动,挂载点不存在不影响
文件编辑保存后,运行mount -a后会自动挂载
如果修改fstab里面的参数,例如添加acl,需要取消挂载重新挂
不取消挂载生效:mount -o remount /data/sdb2

※实验:centos6上修改/etc/fstab下的文件导致系统无法启动,输入root口令
修改文件,由于文件系统是只读的,需要输入命令修改:
mount -o rw,remount /,可以修改uuid或者直接用分区名,或者把最后一个数字改为0
※利用光盘制作iso镜像(centos6):(dvd1,dvd2和二为1)
1、先把两个光盘分别挂到目录dvd1,dvd2下,先拷贝第一个光盘内容到新建目录(dvd)下,然后拷贝第二张光盘中Packages中*.rpm到dvd目录的Packages目录中;
2、合并TRANS.TBL,cat dvd1/TRANS.TBL dvd2/TRANS.TBL|sort >dvd/TRANS.TBL
3、制作iso文件:mkiso -r -o Centos-6.10-x86_64.iso dvd/,然后把iso文件挂载(-r是全部文件读取权限)mount -o loop Centos-6.10-x86_64.iso mnt/cdrom,centos7不需要加-o loop
4、备份原来的yum配置文件,新建配置文件指向iso文件
5、更新yum源:yum clean all ,yum repolist
※把根下的home文件夹挂到单独分区
把之前挂在根下的/home挂到单独分区上
1、备份数据
2、磁盘分区,要足够大
3、创建文件系统:mkfs.ext4 /dev/sdb1 -L /home
4、创建临时目录/mnt/home,把分区挂载到mount /dev/sdb1 /mnt/home
5、init 1 切换到单用户模式,runlevel可以查看确认,或通知用户停止使用文件,以免文件丢失
6、复制/home下的文件,cp -av /home/** /mnt/home
7、确保目录已经全部迁移,然后删除原home目录
8、vim /etc/fstab,(!blkid /dev/sdb1生成uuid),添加到文件,然后保存生效mount -a
9、init 3切换到正常模式,可以切换账号测试
10、取消挂载临时目录,umount /mnt/home,rm -rf /mnt/home

swap

查看swap使用情况:free 默认是kb单位,free -m,以MB为单位,或者free -g,-h(易读方式)
swap和实际内存的比例为:如果实际内存是4G以内:2:1,4个G以上配8个G
swapon -s(cat /proc/swaps)可以查看正在使用的swap分区,并且查看优先级,priority,
需要改/etc/fstab 里面想要调高的swap分区,在defaults后面添加pri=100,例如defaults,pri=100
需要先swapoff /dev/sdb1然后再swapon -a生效
buffer(缓冲)一般是内存中做写缓冲用的,cache是磁盘上读缓存用的
测试:dd if=/dev/zero of=/dev/null bs=2G count=1

增加swap分区,最好是有独立的磁盘
1.fdisk /dev/sdb,分区后需要改ID,选t,然后选L,选82,然后w保存退出
2.创建文件系统:mkswap /dev/sdb1 -L swap_sdb1
3,挂载并永久保存,/etc/fstab,
UUID=XXX swap swap defaults,pri=100 0 0
4,生效需要运行:swapon -a

增加swap分区,用文件来实现
dd if=/dev/zero of=/swapfile bs=2024M/2G count=1
2.创建文件系统:mkswap /swapfile -L swap_file,查看blkid /swapfile
3,挂载并永久保存,/etc/fstab,
/swapfile swap swap defaults 0 0
4,生效需要运行:swapon -a

取消操作:
1、取消swap分区:swapoff /dev/sdb1 ,swapon -s 等同于cat /proc/swaps
取消swap文件:swapoff /swapfile, swapon -s查看
2、/etc/fstab里面的增加的两行删掉
3、rm -f /swapfile 或删除分区,fdisk /dev/sdb,d,w

df 查看文件系统占用等信息(默认以K为单位)
-H 以10为单位
-h 以易读的方式
-T 显示文件系统
-i 显示节点编号
-P以POSTIX标准格式输出
du 查看某目录总体占用空间状态(默认以K为单位)
-s 是显示总大小,不加是分别显示
-h 是以人类易读的方式显示
--max-depth=#指定最大目录层级
dd:convert and copy a file
if=file 从所命名文件读取而不是从标准输入
of=file 写到命名的文件,而不是标准输出
ibs=size 一次读size个byte
obs=size 一次写size个byte
bs=size block size,指定块大小
cbs=size 一次转化size个byte
skip=blocks从开头忽略bolcks个ibs大小的块
seek=blocks从开头忽略blocks个obs大小的快
count=n 复制n个bs

备份/dev/sdx全盘数据,并利用gzip压缩,保存的指定路径
dd if=/dev/sdx | gzip > /path/to/image.gz

原文地址:https://blog.51cto.com/14451011/2429155

时间: 2024-08-03 13:33:45

Linux运维基础-磁盘管理的相关文章

linux运维基础知识-CentOS7系统安装配置及健康检查

linux运维基础知识 1.完成一台CentOS7.X操作系统安装,分区并配置逻辑卷:2.完成LVM分区扩容20GB存储:3.检查系统CPU/内存/网络/存储性能检查:4.检查操作系统版本:5.检查系统是否有非法账号:6.检查系统日志是否有相关报错:7.检查系统后台是否有非法应用运行: 一:系统安装及配置LVM逻辑卷 1:系统安装(略) 2:分区及配置逻辑卷 LVM简介:逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的

写给自己看的Linux运维基础(四) - python环境

pip - Python包管理工具 https://pip.pypa.io/en/latest/installing.html wget https://bootstrap.pypa.io/get-pip.py python get-pip.py Redis (NoSQL) http://www.redis.io/download wget http://download.redis.io/releases/redis-2.8.13.tar.gz tar xzf redis-2.8.13.tar

Linux运维基础命令笔试题--看看你会多少?

老男孩Linux运维基础2728期课后学习效果上机闭卷考试题详解 http://edu.51cto.com/course/course_id-5577.html 如果你觉得不错,请为他点赞和评价.这样可以激发他更强的回报小伙伴的欲望!   老男孩教育linux运维就业班第一周课后学习效果能力上机大考察 (每题10分共130分,过100即可,请给出详细步骤) 1.创建目录/data/oldboy ,并且在该目录下创建文件oldboy.txt,然后在文件oldboy.txt里写入内容"inet ad

网络配置——Linux运维基础

今天把Linux的网络配置总结了一下,尽管并不难可是是个比較重要的基础.然后我也不知到自己以后是否会做运维,可是我知道自己比較喜欢刨根问底.还有就是我很珍惜我以前掌握过的这些运维的技能.今天突然间问自己,Linux网络配置的那个文件路径是什么.突然间小心脏又绷紧了,我发现记忆已经開始模糊了.尽管陆续有把之前运维的笔记整理上来,可是每次都有种写遗书的淡淡地忧伤在里面.突然间又想暴粗口了..... 一.网络基本配置 首先就是/etc/sysconfig/network-scripts/ifcfg-e

Linux 运维基础

运维基础主要包括linux入门.文件管理和重定向.用户组权限.文本处理和软件管理等. linux入门:这方面比较简单,主要介绍Linux发展历史.获取方法.Bash和一些简单的命令等.这里就不过多赘述了. 文件管理和重定向:linux的系统结构和Windows有很大差别,在Linux系统中,可以说一切皆文件.包括:普通文件,目录文件,字符设备文件,块设备文件,符号链接文件等等.文件系统的常用操作:cd, pwd, ls, stat, touch, cp, mv, rm文件系统中文件的常用操作:c

[转帖] Linux运维基础知识学习内容

原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell python 还是没有掌握 这一点需要继续学习... 很多东西仅仅是学会了搭建  非常不够 运维监控的内容会的非常少. Linux系统如果是学习可以选用Redhat或CentOS,特别是CentOS在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,

Linux运维基础-系统管理之权限管理

用户和组 用户userLinux用户:username/uid管理员:root,0普通用户:1-65535系统用户:1-499(cetnos6)1-999(centos7)组groupLinux组:groupname/gid管理组:root,0系统组:1-499(centos6)1-999(centos7)普通组:500+(centos6),1000+(centos7) 组的类别主要组:一个用户只允许一个主组附加组:一个用户可以属于零个或多个附加组命令:id 后跟用户名可以查看用户id和组 用户

Linux运维基础原理汇总

01. 前言介绍 初始运维的小伙伴,有些技术概念原理还是需要掌握的.有些原理概念一旦理解透彻,首先, 对运维技术工作大有帮助:其次,在遇到一些技术交流会上,也可以装一装,不会显得没话说, 最重要的是,在面试环节是吴悠面试官的最好手段. 下面就向技术小白白们,介绍一下到底有哪些原理需要你们进行掌握~~ 02. 技术原理 DNS系统架构与解析原理 HTTP协议通信原理 TCP/IP协议三次握手和四次断开原理 MySQL主从同步原理 Nginx配合PHP工作Fastcgi工作原理 LVS的4种模式工作

从零开始学习linux运维基础总结

时间2019年8月28日到8月30日 运维人的基本职责: 1:及时备份.不丢失数据. 2:  7*21小时不宕机 3:给用户更好的体验 服务器硬件: CPU:处理运算,发送控制命令控制各硬件.CPU用(路)位单位,显示的是最大可以用几颗CPU.颗数越大的,可以处理的程序的能力就越强. 电源:供电 风扇:散热 主板:所有硬件的载体/母更 网卡:信息的传输 硬盘:永久储存信息 内存:暂时储存信息 阵列卡:整合跟多的磁盘统一管理,写入的速度更快.安全性更高. 远程控制卡:远程控制服务器(包括开关机/重