Linux_17 MBR和GPT,LVM 及网卡配置
1.两种分区格式
mbr分区格式:使用fdisk进行分区,最多4个主分区,通常用于小于2T的磁盘空间
gpt分区格式:使用gdisk进行分区,最多128个主分区,通常用于大于2T的磁盘空间
命令:
m:查看帮助
q:退出
n:新建分区(p主分区 e扩展分区)
p:
w:保存
d:删除分区
blkid # 显示磁盘分区后的块的UUID,及该块使用的文件系统类型
lsblk # 显示当前主机所有磁盘块分区及挂载信息
/etc/fstab
第四列:
async/sync # 是否同步方式运行,默认async(异步)
user/nouser # 是否允许普通用户使用mount命令挂载,默认nouser。
exec/noexec # 是否允许可执行文件的执行,默认exec。
suid/nosuid # 是否允许存在suid属性的文件,默认suid。
auto/noauto # 执行mount -a 时,此文件系统是否被主动挂载,默认auto
rw/ro # 是否只读或者读写模式进行挂载。默认rw.
defaults # 具有rw,suid,exec,auto,nouser,async等默认参数
第五列:dump:表示该挂载后的文件系统能否被dump备份命令作用;
0:代表不做备份
1:代表要每天进行备份操作
GPT分区格式
在虚拟机上添加一块大于2T的虚拟硬盘,然后重新启动虚拟机,才能加载新的硬盘。ls /dev/sd 按tab键 发现新的添加的硬盘已经被加载出来了。如果是在物理机上插入一块物理磁盘,磁盘是热加载,直接能看到新磁盘的加入,无需重启物理机。
生产环境机器需要长期运行,不能重启,这时我们可以通过命令扫描新添加的磁盘块:
在.bashrc中添加以下别名:
alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan;" # 添加几块磁盘,按照顺序追加一个host#文件
alias scandisk # 查看别名是否已被命名
lsblk # 查看扫描前磁盘块数量信息
scandisk
lsblk # 新的磁盘块已经被加载进来
gdisk # 分区
mkfs.xfs /dev/sdc1 # 格式化成xfs类型的文件系统
mkfs.xfs /dev/sdc2 # 格式化成xfs类型的文件系统
mkdir /test{3,4}
mount /dev/sdc1 /test3
mount /dev/sdc2 /test4
制作交换分区和挂载
# 创建一个新的分区作为交换分区
fdisk/gdisk # gdisk需要yum安装
8200 指定制作成交换分区
partprobe # 让内核重新读取分区表 不然 ls /dev/sd 按tab键 新建的分区可能没加载进来
mkswap /dev/sdc3 # 将sdc3格式化为交换分区
swapon /dev/sdc3 # 激活交分区
# 开机自动挂载
vim /etc/fstab
/dev/sdb6 swap swap defaults 0 0
/dev/sdc3 swap swap defaults 0 0
mount -a # 将/etc/fstab下的分区重新挂载 下次开机就可以自动挂载了
文件系统损坏与修复
重新添加一块硬盘
fdisk /dev/sdb # 分一个1G的分区
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /mnt
echo 111 > /mnt/a.txt
# 模拟损坏
dd if=/dev/zero of=/dev/sdb bs=500M count=1
umount /mnt
mount /dev/sdb1 /mnt # 无法挂载
# 修复
先尝试命令:xfs_repair /dev/sdb
如果失败,加选项 -L 执行强制修复:
xfs_repair -L /dev/sdb
ps:如果是ext文件系统,修复需要用fsck命令 # centos6的系统使用的是ext4
fsck -f -y /dev/sda1
-y 对所有问题都回答"yes"
-f 即使文件系统标记为 clean也强制进行检查
xfs文件系统备份与恢复
rpm -qf `which xfsdump`
rpm -qf `which xfsrestore`
xfsdump 的备份级别有以下两种,默认为0(即完全备份)
0 完全备份
1 <= level <= 增量备份:
ps:增量备份是和第一次的备份(level 0)进行比较,仅备份有差异的文件
xfsdump常用参数:
-L:xfsdump会记录每次备份的session Label,这里可以填写针对此文件系统简要说明;
-M:xfsdump可以记录存储Media Label,这里可以填写此媒体的剪辑说明。
-l: 是L的小写,就是指定level,有0~9共10个等级,默认为0,即完整备份。
-f:后面接产生的文件和destination file 。 例如 /dev/st0 设备文件名或其他一般文件名
-I:大写的"i",从/var/lib/xfsdump/inbentory 列出目前备份的信息状态。
xfsdump使用限制:
1.必须用root权限
2.只能备份已挂载的文件系统
3.只能备份XFS文件系统
4.只能用xfsrestore解释
5.透过文件系统的UUID来分辨备份档,因此不能备份相同UUID的文件系统
xfsdump备份与xfsrestore恢复
# 1.数据备份
# 1.1 先做全量备份,切记“备份的源路径”末尾不要加左斜杠/
xfsdump -l 0 -L sdb3_bak -M sdb3_bak -f 全量备份的成果路径1 备份的源路径
echo 111>/test1/1.txt
xfsdump -l 0 -L sdb1_bak -M sd5_bak -f /sdb1_bak_all /test1
# 1.2 再做增量备份
xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f 增量备份的成果路径2 备份的源路径
echo 333333333 > /test1/3.txt
echo 22222 >> /test1/1.txt
xfsdump -l 1 -L sdb1_bak -M sd5_bak -f /sdb1_bak_add1 /test1
xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f 增量备份的成果路径3 备份的源路径
echo 444 >> /test1/3.txt
xfsdump -l 1 -L sdb1_bak -M sd5_bak -f /sdb1_bak_add2 /test1
xfsdump -l 1 -L sdb3_bak -M sdb3_bak -f 增量备份的成果路径4 备份的源路径
# 2.数据恢复
# 2.1 先恢复全量备份
xfsrestore -f 全量备份的成果路径1 数据恢复的路径
xfsrestore -f /sdb1_bak_all /test1
# 2.2 再依次恢复增量
xfsrestore -f 增量备份的成果路径2 数据恢复的路径
xfsrestore -f /sdb1_bak_add1 /test1
ls /test1
1.txt
cat /test1/1.txt
xfsrestore -f 增量备份的成果路径2 数据恢复的路径
xfsrestore -f /sdb1_bak_add2 /test1
ls /test1
1.txt 3.txt
cat /test1/1.txt
cat /test1/3.txt
LVM
为何要用lvm
我们在对磁盘分区的大小进行规划时,往往不能确定每个分区使用的空间大小,只能凭经验分配一个大小,而我们通常使用的fdisk、gdisk等工具对磁盘分区后,每个分区的大小就固定死了,这么做的问题是:
# 如果分区设置的过大,就会白白浪费了磁盘空间
# 如果分区设置的过小,就会导致空间不够用的情况出现
对于分区过小的问题,我们可以重新划分磁盘的分区,或者通过软连接的方式将此分区的目录链接到另外一个分区
上述问题可以通过LVM来解决
什么是lvm
逻辑卷管理LVM是硬盘的一个系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理"逻辑卷",而不是直接使用物理磁盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。
通过LVM技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后子啊这些卷上建立相应的文件系统。下面是LVM中主要设计的一些概念。
物理卷(physical volume),把常规的磁盘设备通过pvcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区。
卷组(VG,volume group):把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体。
基本单元(PE,physical extend):分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25个PE)
LVM优缺点总结:
# 优点:
1. 可以在系统运行的状态下动态的扩展文件系统的大小。
2.文件系统可以跨多个磁盘,因此文件系统的大小不会受物理磁盘的限制。
3.可以增加新的磁盘到LVM的存储池中。
4.可以以镜像的方式冗余重要的数据到多个物理磁盘。
5.可以方便的导出整个卷组到另外一台机器。
# 缺点:
1.因为加入了额外的操作,存取性能收到影响。
2.当卷组中的一个磁盘损坏时,整个卷组都会收到影响。
解释:LVM如果有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用,
方案:底层用RAID+上层LVM=既有冗余又有动态扩展
2.在从卷组中移除一个磁盘的时候必须使用reducevg命令(该命令要求root权限,并且不允许在快照卷组中使用)
LVM的使用
yum install -y lvm2
准备一个硬盘空间(分区,一整块盘)
1.制作pv:可以对分区做、也可以对整块盘
pvcreate /dev/sdb1
pvcreate /dev/sdc
pvs # 查看
pvscan
PV /dev/sdb1
PV /dev/sdc
vgcreate -L 10G -n lv1_from_vg1 vg1
mkfs.xfs /dev/vg1/lv1_from_vg1
mount /dev/vg1/lv1_from_vg1 /test1
网卡
网卡名字
# 网卡名称规则
Centos6之前基于传统的命名方式如:eth1,eth0...
CentOS7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名时全自动的、可预知的,缺点是比eth0更难读。比如ens33
# 了解网卡命名的策略:
规则1:如果Fireware或者BIOS提供的设备索引信息可用就用此命名。比如eno1.否则使用规则2
规则2:如果Fireware或Bios的PCI-E扩展插槽可用就用此命名。比如ens1,否则使用规则3
规则3:如果硬件接口的位置信息可用就用此命名。比如enp2s0
规则4:根据MAC地址命名,比如enx7d3e9f。默认不开启
规则5:上述均不可用时回归传统命名方式
上面的 所有命名 规则需要依赖一个安装包:biosdevname
biosdevname和net.ifnames属于两种不同的命名规范
CentOS-7中默认biosdevname的值为0,net.ifnames的值为1。
配置回归传统命名方式:
cd /etc/sysconfig/network-scripts/
mv ifcfg-ens33 ifcfg-eth0
# 修改网卡配置文件设备名称
sed -i "s#ens33#eht0g" ifcfg-eth0
# GRUB添加kernel参数
vim /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="rhgb quiet 'net.ifnames=0 biosdevname=0'"
# 加载到引导分区
grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统生效
reboot
基本网络配置
查看网卡信息
# 查看当前系统所连接的所有网卡
lspci | grep -i eth
# 确认网线已经连接好,以eth0为例
mii-tool eth0
eth0: negotiated 1000baseT-FD flow-control, link ok # link ok 网卡能够别识别,并且接了有效的网线
mii-tool eth1
SIOCGMIIPHY on 'eth1' failed:Invalid argument
网卡虽然能够被识别(网卡已经被驱动了,但不能用:网卡配置错误,网线没接等)
ifconfig eth1 up # 启动网卡
ifconfig eth1 172.16.10.11/24 # 临时生效,重启机器IP需要重新配置,要想长久有效,必须在/etc/sysconfig/network-scripts/目录中重新添加一份ifcfg-ethX格式的文件。这样每次开机都会加载这个文件,给ethX网卡配置IP
ifconfig命令:
ifconfig -a # 查看所有网卡信息
ifconfig eth0 # 查看单个网卡信息
ifconfig eth0 192.168.1.122 netmask 255.255.255.0 临时设定IP和掩码(重启服务或系统都失效)
ifconfig eth0 192.168.1.122/24
ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0 # 配置子接口实际这张网卡是虚的,流量还是走eth0
# 删除:下属两种方式都可以
ifconfig eth0:0 down
ifconfig eth0:1 del 192.168.0.2 # 删除,不必加掩码
# 开启与关闭
ifconfig eth0 down | up # 不加载网卡配置文件
ifconfig eth0 | ifup eth0 # 加载网卡配置文件
ping 命令
ping 目标IP地址 # ctrl+c结束,测试是否两台主机网络是否通
ping -c 次数 目标IP地址
# 在自己的机器上执行,则禁用别人ping自己
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
NetworkManager 服务
NetManager作用:是redhat6自带的检测网络、自动连接网络的图形化工具。NetworkManager服务会干扰网络配置,如:DNS经常会被刷掉,所以通常关闭。
systemctl stop NetworkManager
systemctl disable NetworkManager
网卡相关的配置文件:/etc/sysconfig/network-scripts/ifcfg-ethX 接口的网络配置文件
# 打开网卡配置文件,完成静态ip配置,修改完毕后重启网络服务即可:systemctl restart network
DEVICE=eth0 # 网卡名字
BOOTPROTO=static # dhcp 动态获取IP,none 根据其他选项决定动态还是静态,static肯定是手工指定IP
NM_CONTROLLED=no # 如果NetworkManager服务启用,该网卡配置文件也不受该服务管理
ONBOOT=yes # 网络服务启动的时候,yes代表激活状态,no代表禁用
TYPE=Ethernet
IPADDR=10.1.1.11 # IP 地址
NETMASK=255.255.255.0
GATEWAY=10.1.1.1 # 默认网关
DNS1=10.1.1.1 # DNS1服务器
DNS2=8.8.8.8
HWADDR=14:da:e9:eb:a9:61 # MAC地址
USERCTL=no # 是否允许普通用户启动或停止该网卡
IPV6INIT=no # 是否在该网卡上启动IPV6的功能
PEERDNS=yes # 是否允许网卡在启动时向DHCP服务器查询DNS信息,设置为yes时,此文件设置的DNS将覆盖/etc/resolv.conf,若开启了DHCP,则 默认为yes,所以dhcp的dns也会覆盖/etc/resolv.conf
dns配置文件
1./etc/resolv.conf # DNS解析文件
cat /etc/resolv.conf # 色湖之DNS指向,最多3个
nameserver 8.8.8.8 # 对应网卡配置文件中的配置项DNS1
nameserver 192.168.12.1 # 对应网卡配置文件中的配置项DNS2
2./etc/hosts 本地名称解析文件,优先于DNS
ps:dns检索优先级
浏览器DNS缓存-->本地系统DNS缓存-->本地计算机HOSTS文件-->ISP DNS缓存-->递归or迭代搜索
永久设置主机名:
hostnamectl set-hostname chao.zhang.com
hostname
端口和服务的对应关系
grep '^ftp\|^ssh' /etc/services
ubuntu dns服务配置方法:
# 第一种方法:
vim /etc/network/interfaces
添加:dns-nameservers 114.114.114.114
重启网络服务:systemctl restart networking(/etc/init.d/networking restart)
# 第二种方法:
touch /etc/resolvconf/resolv.conf.d/base
vim /etc/resolvconf/resolv.conf.d/base
添加:
nameserver 114.114.114.114
nameserver 8.8.8.8
resolvconf -u