JAVABK

认清明天的去向,不忘昨日的来处


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

初始化Linux数据盘(parted)

发表于 2020-05-10 | 分类于 Linux运维

操作场景

本文以云服务器的操作系统为“CentOS 7.4 64位”为例,采用Parted分区工具为数据盘设置分区。

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。对于Linux操作系统而言,当磁盘分区形式选用GPT时,fdisk分区工具将无法使用,需要采用parted工具。

划分分区并挂载磁盘

本操作以该场景为例,当云服务器挂载了一块新的数据盘时,采用parted分区工具为数据盘设置分区,分区形式设置为GPT,文件系统设为ext4格式,挂载在“/mnt/sdc”下,并设置开机启动自动挂载。

  1. 执行以下命令,查看新增数据盘。

lsblk

回显类似如下信息:

1
2
3
4
5
root@ecs-test-0001 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 100G 0 disk

表示当前的云服务器有两块磁盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘。

  1. 执行以下命令,进入parted分区工具,开始对新增数据盘执行分区操作。

parted 新增数据盘

命令示例:

parted /dev/vdb

回显类似如下信息:

1
2
3
4
5
[root@ecs-test-0001 ~]# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
  1. 输入“p”,按“Enter”,查看当前磁盘分区形式。

回显类似如下信息:

1
2
3
4
5
6
7
8
(parted) p
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)

“Partition Table”为“unknown”表示磁盘分区形式未知,新的数据盘还未设置分区形式。

  1. 输入以下命令,设置磁盘分区形式。

mklabel 磁盘分区形式

磁盘分区形式有MBR和GPT两种,以GPT为例:

mklabel gpt

img须知:

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,当前数据盘支持的最大容量为32 TB,如果您需要使用大于2 TB的磁盘容量,分区形式请采用GPT。

当磁盘已经投入使用后,此时切换磁盘分区形式时,磁盘上的原有数据将会清除,因此请在磁盘初始化时谨慎选择磁盘分区形式。

  1. 输入“p”,按“Enter”,设置分区形式后,再次查看磁盘分区形式。

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
11
(parted) mklabel gpt
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags

(parted)

“Partition Table”为“gpt”表示磁盘分区形式已设置为GPT。

  1. 输入“unit s”,按“Enter”,设置磁盘的计量单位为磁柱。

  2. 以整个磁盘创建一个分区为例,执行以下命令,按“Enter”。

mkpart 磁盘分区名称 起始磁柱值 截止磁柱**值

命令示例:

mkpart test 2048s 100%

“2048s”表示磁盘起始磁柱值,“100%”表示磁盘截止磁柱值,此处仅供参考,您可以根据业务需要自行规划磁盘分区数量及容量。

回显类似如下信息:

1
2
(parted) mkpart opt 2048s 100%
(parted)
  1. 输入“p”,按“Enter”,查看新建分区的详细信息。

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
11
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 209715200s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 2048s 209713151s 209711104s test

(parted)
  1. 输入“q”,按“Enter”,退出parted分区工具。

回显类似如下信息:

1
2
(parted) q
Information: You may need to update /etc/fstab.

“/etc/fstab”文件控制磁盘开机自动挂载,请先参考以下步骤为磁盘分区设置文件系统和挂载目录后,再根据文档指导更新“/etc/fstab”文件。

  1. 执行以下命令,查看磁盘分区信息。
**lsblk**

回显类似如下信息:

1
2
3
4
5
6
[root@ecs-test-0001 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 100G 0 disk
└─vdb1 253:17 0 100G 0 part
此时可以查看到新建分区“/dev/vdb1”
  1. 执行以下命令,将新建分区文件系统设为系统所需格式。
**mkfs** **-t** *文件系统格式* **/dev/vdb1**

以设置文件系统为“ext4”为例:

**mkfs -t ext4 /dev/vdb1**

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26213888 blocks
1310694 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
格式化需要等待一段时间,请观察系统运行状态,不要退出。 ![img](https://res-img2.huaweicloud.com/content/dam/cloudbu-site/archive/china/zh-cn/support/resource/framework/v3/images/support-doc-new-notice.svg)须知: 不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。
  1. 执行以下命令,新建挂载目录。
**mkdir** *挂载目录*

以新建挂载目录“/mnt/sdc”为例:

**mkdir /mnt/sdc**
  1. 执行以下命令,将新建分区挂载到12中创建的目录下。
**mount** *磁盘分区* *挂载目录*

以挂载新建分区“/dev/vdb1”至“/mnt/sdc”为例:

**mount /dev/vdb1 /mnt/sdc**
  1. 执行以下命令,查看挂载结果。
**df -TH**

回显类似如下信息:

1
2
3
4
5
6
7
8
9
[root@ecs-test-0001 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 43G 1.9G 39G 5% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.0M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 398M 0 398M 0% /run/user/0
/dev/vdb1 ext4 106G 63M 101G 1% /mnt/sdc
表示新建分区**“/dev/vdb1”**已挂载至“/mnt/sdc”。 说明: 云服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载

设置开机自动挂载磁盘分区

设置云服务器系统启动时自动挂载磁盘分区,不能采用在“/etc/fstab”直接指定设备名(比如/dev/vdb1)的方法,因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变,例如/dev/vdb1可能会变成/dev/vdb2。推荐使用UUID来配置自动挂载磁盘分区。

说明:

UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。

  1. 执行如下命令,查询磁盘分区的UUID。

blkid 磁盘分区

以查询磁盘分区“/dev/vdb1”的UUID为例:

blkid /dev/vdb1

回显类似如下信息:

1
2
[root@ecs-test-0001 ~]# blkid /dev/vdb1
/dev/vdb1: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"

表示“/dev/vdb1”的UUID。

  1. 执行以下命令,使用VI编辑器打开“fstab”文件。

vi /etc/fstab

  1. 按“i”,进入编辑模式。

  2. 将光标移至文件末尾,按“Enter”,添加如下内容。

1
UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc                ext4    defaults        0 2

以内容上仅为示例,具体请以实际情况为准,参数说明如下:

  • 第一列为UUID,此处填写1中查询到的磁盘分区的UUID。

  • 第二列为磁盘分区的挂载目录,可以通过df -TH命令查询。

  • 第三列为磁盘分区的文件系统格式, 可以通过df -TH命令查询。

  • 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。

  • 第五列为Linux dump备份选项。

    • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
    • 1表示使用Linux dump备份。
  • 第六列为fsck选项,即开机时是否使用fsck检查磁盘。

    • 0表示不检验。

    • 挂载点为(/)根目录的分区,此处必须填写1。

      根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。

  1. 按“ESC”后,输入“:wq”,按“Enter”。

保存设置并退出编辑器。

  1. 执行以下步骤,验证自动挂载功能。
  1. 执行如下命令,卸载已挂载的分区。

    umount 磁盘分区

    命令示例:

    umount /dev/vdb1

  2. 执行如下命令,将“/etc/fstab”文件所有内容重新加载。

    mount -a

  3. 执行如下命令,查询文件系统挂载信息。

    mount | grep 挂载目录

    命令示例:

    mount | grep /mnt/sdc

    回显类似如下信息,说明自动挂载功能生效:

    1
    2
    root@ecs-test-0001 ~]# mount | grep /mnt/sdc
    /dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)

运维安全的四个层次

发表于 2020-05-07 | 分类于 Linux运维

运维安全的四个层次

网络安全

网络设备的安全

  • 思科、华为等网络设备定期升级,修复bug和曝出的漏洞
  • 公网防火墙,核心交换机等核心网络设备的管理

外网安全策略

  • IDC,防火墙策略,严把上行端口开放
  • 公网上下行流量监控
  • 对DDos攻击提高警惕,提前准备应急预案
    • 临时提高流量,硬抗
    • 启动流量清洗,将攻击流量引入黑洞,有可能误杀正常用户

专线安全策略

  • 对涉及金融、支付等项目设立专线

VPN安全策略

  • IPsec VPN:site to site
  • OpenVPN: peer to site
  • 摒弃PPTP等不含加密算法的vpn服务
  • 端口全禁止,需要通信的申请审批后,再由管理员开放

数据安全

数据库用户权限

  • 管理员权限限定,不允许远程root
  • 定期更换管理员密码
  • 应用权限最小化,专人管理
  • 手动查询权限可审计

数据库审计设备

  • 数据库主库不能开一般查询日志(为了性能)
  • 交换机上镜像流量,接入审计设备,实现实时审计
  • 不要设计串行在系统里,形成单点和瓶颈

数据库脱敏

  • 姓名、身份证、手机号、银行卡号等敏感信息应脱敏处理
  • 对程序脱敏协同系统架构部共同出规范
  • 对手动查询权限脱敏,按列授权,录屏

备份策略

  • 每周全备,每天增备
  • 备份文件要每天利用内网流量低谷时间,推送到远程主机,有条件的应跨机房备份
  • 一定要规划定期恢复测试,保证备份的可用性

应用安全

操作系统安全

  • 系统基础优化(内核优化,优化工具)
  • 日期,时区同步
  • root密码复杂度足够高,需要在操作系统里做定时过期策略
  • 每三个月使用脚本更新服务器的root密码和iDrac密码,并将更换后的密码加密打包发送给指定管理员邮箱,同时提交gitlab
  • 对系统关键文件进行md5监控,例如/etc/passwd,~/.ssh/authorized_keys文件等,如有变更,触发报警
  • 定期查毒,漏扫,定期安排更新操作系统
  • /etc/ssh/sshd_config里配置:
    • PasswordAuthentication no
    • PermitRootLogin without-password
  • 使用saltstack等批量管理软件进行特权命令执行和备份脚本执行(避开ssh协议)

应用系统安全

WEB应用防火墙(WAF)

  • 防SQL注入
  • 防CC攻击
  • 防XSS跨站脚本

应用系统漏洞

  • 关注0day漏洞新闻
  • 及时整改并上线投产
  • 组织技术力量测试,复现

日志收集和分析

  • 完善日志收集方案,集中转储
  • 通过应用系统日志分析,进行安全预警

DNS劫持

  • 全站https,购买泛域名证书
  • 有条件的可以自己维护公网DNS,上dnssec数字签名
  • 采购基调、听云等第三方拨测服务,分布式监控网站质量
  • 向ISP投诉,工信部举报

Basic Auth

  • 在nginx上做,非常简单
  • 对防脚本攻击有奇效

企业邮箱服务器安全

推荐使用微软的Exchange

功能强大,维护相对简单

投产反垃圾邮件网关

投产梭子鱼反垃圾邮件网关,防伪造发信人

群发审核管控

用好邮件组

接入AD域控

域名安全管理

做好ICP备案

  • 域名证书
  • 域名实名认证(公司模板)
  • 接入商处蓝色幕布拍照
  • 法人身份证、管理员身份证
  • 网站真实性核验单

公网解析

  • 专人管理,邮件申请,审批
  • 将业务解析至不同公网IP出口,双活机房
  • 智能解析,解析至不同线路
  • 如有条件,可购买公网解析套餐服务,安全服务等

内网安全

80%以上的企业IT安全问题出自内网安全

堡垒机

  • 一定要强制使用堡垒机登录服务器
  • ssh私钥通行短语机制,避免密钥失窃
  • 定期审计堡垒机操作日志
  • 如果有必要,可以上2FA(双因子验证)

AD域控

有条件一定要接入windows域控,要求密码复杂度和定期过期

  • 邮箱
  • wifi
  • vpn账号密码
  • 内网系统账号
  • 业务系统账号
  • 网络设备等

办公网安全

  • 专业的HelpDesk团队
  • 企业级杀毒软件
  • 办公电脑接入域控
  • 上网行为管理
  • 流量监控,mac地址绑定
  • 有条件的可以在办公环境上一个小型的业务机房
  • wifi管控,单做guest接入点,不能访问业务核心网络

初始化Linux数据盘(fdisk)

发表于 2020-05-07 | 分类于 Linux运维

初始化Linux数据盘(fdisk)

操作场景

本文以云服务器的操作系统为“CentOS 7.7 64位”为例,采用fdisk分区工具为数据盘设置分区。

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,因此当您初始化容量大于2 TB的磁盘时,分区形式请采用GPT。对于Linux操作系统而言,当磁盘分区形式选用GPT时,fdisk分区工具将无法使用,需要采用parted工具。

划分分区并挂载磁盘

本操作以该场景为例,当服务器挂载了一块新的数据盘时,使用fdisk分区工具将该数据盘设为主分区,分区形式默认设置为MBR,文件系统设为xfs格式,挂载在“/opt”下,并设置开机启动自动挂载。

  1. 执行以下命令,查看新增数据盘。

fdisk -l

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@DB-Sub12003574 ~]# fdisk -l

Disk /dev/sda: 68.7 GB, 68719476736 bytes, 134217728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002fb1b

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 134217727 66059264 8e Linux LVM

Disk /dev/sdb: 1073.7 GB, 1073741824000 bytes, 2097152000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rootvg-lvroot: 27.9 GB, 27917287424 bytes, 54525952 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rootvg-lvswap: 17.2 GB, 17179869184 bytes, 33554432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rootvg-lvhome: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rootvg-lvvar: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rootvg-lvopt: 10.7 GB, 10733223936 bytes, 20963328 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

表示当前的服务器有两块磁盘,“/dev/sda”是系统盘,“/dev/sdb”是新增数据盘。

  1. 执行以下命令,进入fdisk分区工具,开始对新增数据盘执行分区操作。

fdisk 新增数据盘

以新挂载的数据盘“/dev/sdb”为例:

fdisk /dev/sdb

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
[root@DB-Sub12003574 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa04eb0bd.

Command (m for help):
  1. 输入“n”,按“Enter”,开始新建分区。

回显类似如下信息:

1
2
3
4
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended

表示磁盘有两种分区类型:

  • “p”表示主分区。
  • “e”表示扩展分区。

说明:

磁盘使用MBR分区形式,最多可以创建4个主分区,或者3个主分区加1个扩展分区,扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。

磁盘使用GPT分区形式时,没有主分区、扩展分区以及逻辑分区之分。

  1. 以创建一个主要分区为例,输入“p”,按“Enter”,开始创建一个主分区。

回显类似如下信息:

1
2
Select (default p): p
Partition number (1-4, default 1):

“Partition number”表示主分区编号,可以选择1-4。

  1. 以分区编号选择“1”为例,输入主分区编号“1”,按“Enter”。

回显类似如下信息:

1
2
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):

“First sector”表示起始磁柱值,可以选择2048-209715199,默认为2048。

  1. 以选择默认起始磁柱值2048为例,按“Enter”。

系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。

回显类似如下信息:

1
2
3
First sector (2048-209715199, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):

“Last sector”表示截止磁柱值,可以选择2048-209715199,默认为209715199。

  1. 以选择默认截止磁柱值209715199为例,按“Enter”。

系统会自动提示分区可用空间的起始磁柱值和截止磁柱值,可以在该区间内自定义,或者使用默认值。起始磁柱值必须小于分区的截止磁柱值。

回显类似如下信息:

1
2
3
4
5
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set

Command (m for help):

表示分区完成,即为数据盘新建了1个分区。

  1. 输入“p”,按“Enter”,查看新建分区的详细信息。

回显类似如下信息:

1
2
3
4
5
6
7
8
9
10
11
Command (m for help): p

Disk /dev/sdb: 1073.7 GB, 1073741824000 bytes, 2097152000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa04eb0bd

Device Boot Start End Blocks Id System
/dev/sdb1 2048 2097151999 1048574976 83 Linux

表示新建分区“/dev/sdb1”的详细信息。

  1. 输入“w”,按“Enter”,将分区结果写入分区表中。

回显类似如下信息:

1
2
3
4
5
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

表示分区创建完成。

说明:

如果之前分区操作有误,请输入“q”,则会退出fdisk分区工具,之前的分区结果将不会被保留。

  1. 执行以下命令,将新的分区表变更同步至操作系统。

    partprobe

  1. 执行以下命令,将新建分区文件系统设为系统所需格式。

    ​

    mkfs -t 文件系统格式 /dev/sdb1

    以设置文件系统为“xfs”为例:

    mkfs -t xfs /dev/sdb1

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@DB-Sub12003574 ~]# mkfs -t xfs /dev/sdb1
    meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65535936 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=262143744, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=127999, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
格式化需要等待一段时间,请观察系统运行状态,不要退出。

不同文件系统支持的分区大小不同,请根据您的业务需求选择合适的文件系统。
  1. 执行以下命令,新建挂载目录。

    mkdir 挂载目录

    以挂载目录“/opt”为例:

  1. 执行以下命令,将新建分区挂载到12中创建的目录下。

    ​

    mount 磁盘分区 挂载目录

    以挂载新建分区“/dev/sdb1”至“/opt”为例:

    mount /dev/sdb1 /opt

  1. 执行以下命令,查看挂载结果。

    ​

    df -TH

    回显类似如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [root@DB-Sub12003574 ~]# df -HT
    Filesystem Type Size Used Avail Use% Mounted on
    devtmpfs devtmpfs 17G 0 17G 0% /dev
    tmpfs tmpfs 17G 0 17G 0% /dev/shm
    tmpfs tmpfs 17G 55M 17G 1% /run
    tmpfs tmpfs 17G 0 17G 0% /sys/fs/cgroup
    /dev/mapper/rootvg-lvroot xfs 28G 4.7G 24G 17% /
    /dev/sda1 xfs 1.1G 178M 886M 17% /boot
    /dev/sdb1 xfs 1.1T 34M 1.1T 1% /opt
    /dev/mapper/rootvg-lvhome xfs 1.1G 34M 1.1G 4% /home
    /dev/mapper/rootvg-lvvar xfs 11G 320M 11G 3% /var
    tmpfs tmpfs 3.4G 13k 3.4G 1% /run/user/42
    tmpfs tmpfs 3.4G 0 3.4G 0% /run/user/1000
表示新建分区**“/dev/sdb1”**已挂载至“/opt”。



说明:

服务器重启后,挂载会失效。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载

设置开机自动挂载磁盘分区

设置云服务器系统启动时自动挂载磁盘分区,不能采用在“/etc/fstab”直接指定设备名(比如/dev/sdb1)的方法,因为设备的顺序编码在关闭或者开启服务器过程中可能发生改变,例如/dev/sdb1可能会变成/dev/sdb2。推荐使用UUID来配置自动挂载磁盘分区。

说明:

UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。

  1. 执行如下命令,查询磁盘分区的UUID。

blkid 磁盘分区

以查询磁盘分区“/dev/sdb1”的UUID为例:

blkid /dev/sdb1

回显类似如下信息:

1
2
[root@DB-Sub12003574 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="94a71f8e-1900-41d5-82c8-9e79b6754981" TYPE="xfs"

表示“/dev/sdb1”的UUID。

  1. 执行以下命令,使用VI编辑器打开“fstab”文件。

vim /etc/fstab

  1. 按“i”,进入编辑模式。

  2. 将光标移至文件末尾,按“Enter”,添加如下内容。

1
UUID=94a71f8e-1900-41d5-82c8-9e79b6754981 /opt  xfs defaults    0 0

以内容上仅为示例,具体请以实际情况为准,参数说明如下:

  • 第一列为UUID,此处填写1中查询到的磁盘分区的UUID。

  • 第二列为磁盘分区的挂载目录,可以通过df -TH命令查询。

  • 第三列为磁盘分区的文件系统格式, 可以通过df -TH命令查询。

  • 第四列为磁盘分区的挂载选项,此处通常设置为defaults即可。

  • 第五列为Linux dump备份选项。

    • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
    • 1表示使用Linux dump备份。
  • 第六列为fsck选项,即开机时是否使用fsck检查磁盘。

    • 0表示不检验。

    • 挂载点为(/)根目录的分区,此处必须填写1。

      根分区设置为1,其他分区只能从2开始,系统会按照数字从小到大依次检查下去。

  1. 按“ESC”后,输入“:wq”,按“Enter”。

保存设置并退出编辑器。

  1. 执行以下步骤,验证自动挂载功能。
  1. 执行如下命令,卸载已挂载的分区。

    umount 磁盘分区

    命令示例:

    umount /dev/sdb1

  2. 执行如下命令,将“/etc/fstab”文件所有内容重新加载。

    mount -a

  3. 执行如下命令,查询文件系统挂载信息。

    mount | grep 挂载目录

    命令示例:

    mount | grep /opt

    回显类似如下信息,说明自动挂载功能生效:

    1
    2
    3
    [root@DB-Sub12003574 etc]# mount | grep /opt
    /dev/mapper/rootvg-lvopt on /opt type xfs (rw,relatime,attr2,inode64,noquota)
    /dev/sdb1 on /opt type xfs (rw,relatime,attr2,inode64,noquota)

常用的磁盘分区形式

发表于 2020-05-07 | 分类于 Linux运维

常用的磁盘分区形式如表1所示,并且针对Linux操作系统,不同的磁盘分区形式需要选择不同的分区工具。

磁盘分区形式 支持最大磁盘容量 支持分区数量 Linux分区工具
主启动记录分区(MBR) 2 TB 4个主分区
3个主分区和1个扩展分区
MBR分区包含主分区和扩展分区,其中扩展分区里面可以包含若干个逻辑分区。扩展分区不可以直接使用,需要划分成若干个逻辑分区才可以使用。以创建6个分区为例,以下两种分区情况供参考:
3个主分区,1个扩展分区,其中扩展分区中包含3个逻辑分区。
1个主分区,1个扩展分区,其中扩展分区中包含5个逻辑分区。
以下两种工具均可以使用:fdisk工具parted工具
全局分区表(GPT, Guid Partition Table) 18 EB1 EB = 1048576 TB 不限制分区数量GPT格式下没有主分区、扩展分区以及逻辑分区之分。 parted工具

MBR支持的磁盘最大容量为2 TB,GPT最大支持的磁盘容量为18 EB,如果您需要使用大于2 TB的磁盘容量,分区形式请采用GPT。

CentOS逻辑卷调整分区大小

发表于 2018-05-04 | 分类于 Linux运维

CentOS逻辑卷调整分区大小目的

因为系统使用的是逻辑卷分区(LVM),且分区大小不合理

想增加root大小,减少home

查看磁盘使用情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@LinuxCentOS ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_linuxcentos-lv_root
50G 3.4G 44G 8% /
tmpfs 3.9G 76K 3.9G 1% /dev/shm
/dev/xvda1 477M 36M 417M 8% /boot
/dev/mapper/vg_linuxcentos-lv_home
140G 60M 133G 1% /home
/dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.9_Final


[root@LinuxCentOS ~]# vgdisplay
--- Volume group ---
VG Name vg_linuxcentos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 199.51 GiB
PE Size 4.00 MiB
Total PE 51074
Alloc PE / Size 51074 / 199.51 GiB
Free PE / Size 0 / 0
VG UUID DqgWat-YkkU-V56r-xNFv-XmmX-mgwD-Fi0RWh

调整home分区大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@LinuxCentOS ~]# umount /home

[root@LinuxCentOS ~]# e2fsck -f /dev/mapper/vg_linuxcentos-lv_home
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg_linuxcentos-lv_home: 11/9289728 files (0.0% non-contiguous), 631025/37148672 blocks

[root@LinuxCentOS ~]# resize2fs -p /dev/mapper/vg_linuxcentos-lv_home 20G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg_linuxcentos-lv_home to 5242880 (4k) blocks.
Begin pass 2 (max = 32768)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 1134)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/mapper/vg_linuxcentos-lv_home is now 5242880 blocks long.

[root@LinuxCentOS ~]# mount /home

[root@LinuxCentOS ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_linuxcentos-lv_root
50G 3.4G 44G 8% /
tmpfs 3.9G 76K 3.9G 1% /dev/shm
/dev/xvda1 477M 36M 417M 8% /boot
/dev/mapper/vg_linuxcentos-lv_home
20G 44M 19G 1% /home

释放空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@LinuxCentOS ~]# lvreduce /dev/mapper/vg_linuxcentos-lv_home -L 20G
WARNING: Reducing active and open logical volume to 20.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_linuxcentos/lv_home? [y/n]: y
Size of logical volume vg_linuxcentos/lv_home changed from 141.71 GiB (36278 extents) to 20.00 GiB (5120 extents).
Logical volume lv_home successfully resized.

[root@LinuxCentOS ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_linuxcentos-lv_root
50G 3.4G 44G 8% /
tmpfs 3.9G 76K 3.9G 1% /dev/shm
/dev/xvda1 477M 36M 417M 8% /boot
/dev/mapper/vg_linuxcentos-lv_home
20G 44M 19G 1% /home

[root@LinuxCentOS ~]# vgdisplay
--- Volume group ---
VG Name vg_linuxcentos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 199.51 GiB
PE Size 4.00 MiB
Total PE 51074
Alloc PE / Size 19916 / 77.80 GiB
Free PE / Size 31158 / 121.71 GiB
VG UUID DqgWat-YkkU-V56r-xNFv-XmmX-mgwD-Fi0RWh

增加释放的空间到root

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@LinuxCentOS ~]# lvextend -L +120G /dev/mapper/vg_linuxcentos-lv_root   
Size of logical volume vg_linuxcentos/lv_root changed from 50.00 GiB (12800 extents) to 170.00 GiB (43520 extents).
Logical volume lv_root successfully resized.

[root@LinuxCentOS ~]# resize2fs -p /dev/mapper/vg_linuxcentos-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_linuxcentos-lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 11
Performing an on-line resize of /dev/mapper/vg_linuxcentos-lv_root to 44564480 (4k) blocks.
The filesystem on /dev/mapper/vg_linuxcentos-lv_root is now 44564480 blocks long.

[root@LinuxCentOS ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_linuxcentos-lv_root
168G 3.5G 156G 3% /
tmpfs 3.9G 76K 3.9G 1% /dev/shm
/dev/xvda1 477M 36M 417M 8% /boot
/dev/mapper/vg_linuxcentos-lv_home
20G 44M 19G 1% /home

MySQL数据库自动备份脚本

发表于 2018-05-02 | 更新于 2018-05-10 | 分类于 Linux运维

编写数据库备份脚本(mysqlfullbackup.sh)

#数据库备份脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/bin/sh
###############################
# 此脚本用来全量备份
# 此文件名:mysqlfullbackup.sh
# vim /etc/crontab
# 定时任务,计划在每天晚上23点55分进行数据备份(加 & 为后台执行)
# 55 23 * * * root /backup/mysql/full_backup/mysqlfullbackup.sh &
# # /etc/rc.d/init.d/crond restart
###############################

#备份数据库(多数据库,用逗号隔开)
mysql_databases="test"

#设置用户名和密码
mysql_user="root"
mysql_password="123456"

#mysql安装全路径
mysql_dir=/usr/local/mysql-5.6.38

#设置备份基本路径
backup_dir=/backup/mysql

#创建备份文件夹
[ -d ${backup_dir} ] || mkdir -p ${backup_dir}

full_backup_dir=$backup_dir/full_backup

#备份的时间
today=$(date +"%Y%m%d_%H%M%S")

#备份日志文件
log_file=full_backup.log

#只保留最近10天的备份(其他删除)
time=$(date -d "10 day ago" +"%Y-%m-%d %H:%M:%S")

#开始备份,记录备份开始时间 并压缩备份文件
echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"备份开始\n" >> $backup_dir/$log_file

#判断目标目录是否已经存在
if [ ! -d $full_backup_dir ]; then
mkdir -p $full_backup_dir
fi

echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"备份并压缩备份文件\n" >> $backup_dir/$log_file

#备份并压缩备份文件
$mysql_dir/bin/mysqldump -u$mysql_user -p$mysql_password --databases $mysql_databases | gzip > $full_backup_dir/$mysql_databases.$today.sql.gz


[ $? -eq 0 ] && echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - 'All DB' - '"备份并压缩备份文件 OK!!!\n" >> $backup_dir/$log_file

#找出10天前备份的文件,然后删除
#echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"删除10天前的备份\n" >> #$backup_dir/$log_file
#for file in `find -not -type d -mtime +10`
#do
# mv $file /tmp/
#done

#基于ssh key认证,mysqldump的远程mysql备份方案
copytoremote=1
remoteuser="root"
remoteip="xx.xx.xxx.xx"
if [ $copytoremote = 1 ]; then
if [ -z $remoteuser ];then
echo -e "remote user not set,Copy to remote Failed ...\n" >> $log_file
exit 1
elif [ -z $remoteip ];then
echo -e "remote ip not set,Copy to remote Failed ...\n" >> $log_file
exit 2
else
echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"开始使用SSH备份数据文件到远程服务器\n" >> $backup_dir/$log_file
scp $mysql_databases.$today".sql.gz" $remoteuser@$remoteip:$full_backup_dir
fi
fi

echo -e '['$(date +"%Y-%m-%d %H:%M:%S")'] - '$mysql_databases' - '"备份完成\n" >> $backup_dir/$log_file

给脚本添加执行权限

1
chmod +x /backup/mysql/full_backup/mysqlfullbackup.sh

定时任务设置

修改/etc/crontab #添加计划任务

定时任务,计划在每天晚上23点55分进行数据备份(加 & 为后台执行)

1
2
3
4
5
6
7
vim /etc/crontab 

#在最后一行添加以下内容
55 23 * * * root /backup/mysql/full_backup/mysqlfullbackup.sh &

#重启定时任务
/etc/rc.d/init.d/crond restart

设置免密SSH拷贝备份到远程服务器

设置远程无密码拷贝

数据库服务器上执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ssh-keygen -t rsa
#输出,连续回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
60:4d:8e:08:6d:cf:a4:5c:7f:b8:2a:29:62:ce:cf:a4 root@iZ2ze7vlqunx6jumrds0v4Z
The key's randomart image is:
+--[ RSA 2048]----+
| .. . |
| .o.o= |
| o.*+.o. |
| o.o.o . |
| So |
| . |
| . . . |
|o.= o . |
|oE.+ . |
+-----------------+

会在用户目录~/.ssh/产生两个文件,id_rsa,id_rsa.pub

1
2
[root@iZ2ze7vlqunx6jumrds0v4Z .ssh]# ls
id_rsa id_rsa.pub

将id_rsa.pub文件拷贝到远程主机的root用户主目录下的.ssh目录下,并且改名为authorized_keys

这样数据库服务器上使用scp命令复制文件到远程主机上将不提示输入密码了,直接自动复制了

说明:当远程主机的SSH远程端口修改后,SCP指令要加上端口号:

1
scp -p 端口号 $mysql_databases.$today".sql.gz" $remoteuser@$remoteip:$full_backup_dir

tomcat8安装配置优化

发表于 2017-06-02 | 更新于 2018-04-28 | 分类于 Java架构

Tomcat 8 安装

  • Tomcat 8 安装
    • 官网:http://tomcat.apache.org/
    • Tomcat 8 官网下载:http://tomcat.apache.org/download-80.cgi
    • 此时(20170602) Tomcat 8 最新版本为:apache-tomcat-8.5.15.tar.gz
    • Tomcat 8 下载:wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.15/bin/apache-tomcat-8.5.15.tar.gz
    • 压缩包解压:tar -zxvf apache-tomcat-8.5.15.tar.gz
    • 移到解压出来文件夹到 /usr/local 下:mv apache-tomcat-8.5.15/ /usr/local/

Tomcat 8 配置

  • 设置 Tomcat 相关变量:
    • vim /usr/local/tomcat8/bin/catalina.sh
    • 在配置文件的可编辑内容最上面(98 行开始),加上如下内容(具体参数根据你服务器情况自行修改):
      1
      2
      3
      4
      JAVA_HOME=/usr/local/jdk1.8.0_72
      CATALINA_HOME=/usr/local/tomcat8
      CATALINA_OPTS="-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC"
      CATALINA_PID=$CATALINA_HOME/catalina.pid
  • 如果使用 shutdown.sh 还无法停止 tomcat,可以修改其配置:vim /usr/local/tomcat8/bin/shutdown.sh
    • 把最尾巴这一行:exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
    • 改为:exec "$PRGDIR"/"$EXECUTABLE" stop 10 -force
阅读全文 »

利用Spring的Resource类读写中文Properties

发表于 2017-05-09 | 更新于 2018-04-28 | 分类于 Java架构

摘要

Spring对Properties的读取进行了完善而全面的封装,对于写则仍需配合FileOutputStream进行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.oolong.common.util;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.*;
import java.util.*;

public class UserVar {
private static String configFile = "classpath*:param.properties";
private static org.springframework.core.io.Resource resourceWritable;
private static Properties p;

/**
* 注意事项:
* 1、properties放在source目录下
* 2、param.properties至少有一对键值对
*/
static {
p = new Properties();
org.springframework.core.io.Resource[] resources = null;
try {
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
resources = resolver.getResources(configFile);
if (resources != null) {
for (org.springframework.core.io.Resource r : resources) {
if (r != null) {
p.load(r.getInputStream());
resourceWritable = r;
}
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
}

public static String get(String key) {
String v = (String) p.get(key);
if (v != null) {
try {
return new String(v.getBytes("ISO-8859-1"), "GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
}
return null;
}

public static void set(String key,String value){
if (null != resourceWritable) {
try {
OutputStream fos = new FileOutputStream(resourceWritable.getFile());
Properties p = new Properties();
p.load(resourceWritable.getInputStream());
value = new String(value.getBytes("GBK"),"ISO-8859-1");
p.setProperty(key, value);
p.store(fos, null);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

Git入门

发表于 2017-03-03 | 更新于 2018-04-28 | 分类于 Java架构

基本了解

git命令是一些命令行工具的集合,它可以用来跟踪,记录文件的变动。比如你可以进行保存,比对,分析,合并等等。这个过程被称之为版本控制。已经有一系列的版本控制系统,比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。

Git是分布式的,这意味着它并不依赖于中心服务器,任何一台机器都可以有一个本地版本的控制系统,我们称之为仓库。如果是多人协作的话,你需要还需要一个线上仓库,用来同步信息。这就是GitHub, BitBucket的工作。

阅读全文 »
pengzhizhuo

pengzhizhuo

9 日志
2 分类
5 标签
GitHub E-Mail
© 2016 — 2020 pengzhizhuo