定时任务、用户管理、磁盘介绍

一、阶段知识回顾

服务器硬件,提升用户的体验(大型网站门户网站数据放在内存,中小型企业放在磁盘)尽量把请求往前推:memcached,redis

Buffer与Cache区别:

buffer:观看视频的时候 转圈,数据放在你的内存,存放这些数据的空间buffer区域 缓冲区,buffering

cache:提高观看速度 ,主要是用来给用户读取在内存中的区域cache,缓存区。

写buffer 读cache

写缓冲 读缓存

radis卡:

查看端口是否开启:telnet,netstat -lntp ,ss -lntup

ps -ef :正在运行的进程。

安装常见软件:

[root@oldboy-01 ~]# yum install tree telnet nc nmap lrzsz dos2unix -y

nc与telnet用法基本相同。

nmap -p22 10.0.0.201 查看端口是否开启

lrzssz :rz:上传

sz:下载,sz /etc/hosts

永久修改主机名:/etc/sysconfig/network,修改配置文件。

修改主机名解析:/etc/hosts

帮助命令:

man ls,ls --help

vim 相关知识:

光标移动:

左下右上:hjkl

gg:第一行

G:最后一行,100G

光标移动到行尾:$

光标移动到行首:0或者^

vim编译模式:

当前行下一行插入一行并进入编辑:o

光标位置至行尾删除并进入编辑:C

光标位置至行尾位置删除,不进入编辑:D,$d

光标移动至行尾,并进入编辑模式:A

复制光标所在行:yy

黏贴:p,多次黏贴3p,4p

删除/剪切:dd

删除当前行至文件尾部:dG

vim常见故障:

编辑模式查找:/

继续向下查找:n

继续向上查找:N

撤销当前的操作:u

撤销刚才的操作:ctrl+r

二、定时任务

(一)定时任务介绍

crond

atd:一次性

ana:不是7x24小时服务器

crond:

[root@oldboy-01 ~]# rpm -qa | grep cronie
cronie-1.4.4-16.el6_8.2.x86_64
cronie-anacron-1.4.4-16.el6_8.2.x86_64
[root@oldboy-01 ~]# rpm -ql cronie
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny
/etc/pam.d/crond
/etc/rc.d/init.d/crond
/etc/sysconfig/crond
/usr/bin/crontab
/usr/sbin/crond
/usr/share/doc/cronie-1.4.4
/usr/share/doc/cronie-1.4.4/AUTHORS
/usr/share/doc/cronie-1.4.4/COPYING
/usr/share/doc/cronie-1.4.4/ChangeLog
/usr/share/doc/cronie-1.4.4/INSTALL
/usr/share/doc/cronie-1.4.4/README
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/man/man8/cron.8.gz
/usr/share/man/man8/crond.8.gz
/var/spool/cron
[root@oldboy-01 ~]# 

系统的定时任务:系统会自动运行里面的内容,系统中毒的时候。

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/etc/cron.monthly

系统定时任务+logrotate命令完成对日志的日志切割/日志轮询。

/etc/crontat #系统定时任务的配置文件之一。

用户定时任务:

[root@oldboy-01 ~]# crontab -l

编辑模式:

[root@oldboy-01 ~]# crontab -e

定时任务存放的位置:

[root@oldboy-01 ~]# cat /var/spool/cron/root #root用户名

确认crond正在运行:

方法1:

[root@oldboy-01 ~]# /etc/init.d/crond status

方法2:

[root@oldboy-01 ~]# ps -ef | grep crond

查看是否开机自启动:

[root@oldboy-01 ~]# chkconfig | grep cron

crontab -r #删除所有定时任务,没有提示确认。

crontab 命令:有语法检查功能。

crontab -e :==vim /var/spool/cron/root

crontab -l :==cat /var/spool/cron/root

定时任务的日志文件:

/var/log/cron

定时任务黑名单,哪些用户禁止使用定时任务:

/etc/cron.deny#用户的名字写进去

(二)定时任务格式

什么时间做什么事?

格式:时间 命令

时间:分、时、日、月、星期(0-6)

避免日和星期同时写入。

定时任务中特殊符号:

星号(*):表示每的意思。

斜线(/n):每隔n

crontab中命令使用绝对路径

[root@oldboy-01 ~]# crontab -e
#print name to file by cyc
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

查看日志:

[root@oldboy-01 ~]# tail -f /var/log/cron

减号(-):表示范围 :

00 09-11 * * * cmd,整时运行;* 09-11 * * cmd,每分钟运行

逗号(,):不连续的范围,如:7,9,11等。

例子:* * * * * echo oldboy >> /oldboy.txt #每分钟将名字追加到oldboy.txt中。

定时任务注意事项:

①测试号命令

②命令放入脚本中

③测试脚本

④检查结果

(三)定时任务九局箴言

①定时任务之前加注释

②使用脚本替代命令定时任务。脚本一般放在,/server/scripts。使用sh命令进行执行。

③定时任务date中的%百分号。默认表示换行,所以需要在%号前加撬棍。date +%F

④运行脚本使用,/bin/sh

⑤定时任务中命令或者脚本结果(正确错误)定向到黑洞(>/dev/null 2>&1),或者定向到文件:>/oldboy.txt 2>&1。

如果不定向:

邮件的软件没有开启:大量小文件放在:[root@oldboy-01 ~]# ll /var/spool/postfix/maildrop/

邮件的软件开启:会有 you have new mail in /var/spool/mail/root

快捷键:A,光标移动到行尾,并进入编辑模式。DG:删除当前行至文件尾部。

⑥避免不必要的程序及命令输出。如:tar zcf,tar zcvf

⑦打包压缩使用相对路径(切换到目标目录的上一级打包目录)

cd /进入到被打包目录的上一级目录

cd /

tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services

cd / && tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services

⑧定时任务脚本中程序文件,尽量使用绝对路径

⑨系统与命令位置有关的环境变量问题

定时任务运行脚本的时候可以识别的path只有/usr/bin 和/bin

定时任务脚本中的ifconfig ip ntpdate 提示command not found

解决方法:

使用绝对路径,/sbin/ifconfig 使用绝对路径。

在脚本开头重新定义一个PATH。export PATH=/usr/local/sbin ...//

/bin /sbin

/usr/bin /usr/sbin

/usr/local/bin /usr/local/sbin

JAVA tomcat 里面一般需要重新定义path环境变量

ifconfig eth0 | awk -F '[ :]+' 'NR==2{print $4}'

java环境变量:在脚本开头添加export的环境变量。

rm -f #删除大量文件会报错。

需要:ls | xargs rm -f

(三)用户管理

(1)开机自启动

①/etc/rc.local

②通过chkconfig

如何让脚本放在chkconfig

①脚本放在/etc/init.d/oldboyd

vim /etc/init.d/oldboyd

添加头:#chkconfig: 2345 99 99

echo oldboy

②增加脚本执行权限

chmod +x /etc/init.d/oldboyd

③chkconfig --add oldboyd

④查看:chkconfig | grep oldboyd

chkconfig 背后的故事

s--stop

k--kill

[root@oldboy-01 maildrop]# chkconfig iptables on
[root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt
lrwxrwxrwx. 1 root root 18 Dec 18 00:36 S08iptables -> ../init.d/iptables
[root@oldboy-01 maildrop]# chkconfig iptables off
[root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt
lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables
[root@oldboy-01 maildrop]# 

验证:

[root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt
lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables
lrwxrwxrwx. 1 root root 20 Dec 18 00:43 S08iptables -> /etc/init.d/iptables
[root@oldboy-01 maildrop]# chkconfig | grep ipt
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@oldboy-01 maildrop]# mv /etc/rc3.d/K92iptables /tmp/
[root@oldboy-01 maildrop]# mv /etc/rc3.d/S08iptables /tmp/
[root@oldboy-01 maildrop]# chkconfig | grep ipt
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt
[root@oldboy-01 maildrop]# 
[root@oldboy-01 maildrop]# 
[root@oldboy-01 maildrop]# ln -s /etc/init.d/iptables /etc/rc3.d/S08iptables
[root@oldboy-01 maildrop]# chkconfig | grep ipt
iptables        0:off   1:off   2:off   3:on    4:off   5:off   6:off
[root@oldboy-01 maildrop]# 

cat /etc/init.d/iptables

08开机顺序

92关机顺序

(2)用户管理

用户分类:

root:uid,0

虚拟用户:uid,1-499

用户的命令解释器:/sbin/nologin

普通用户:uid>500

用户相关文件:

/etc/passwd 用户信息

/etc/shadown 用户密码信息

/etc/group 用户的用户信息

/etc/gshadow 用户组密码信息

[root@oldboy-01 maildrop]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@oldboy-01 maildrop]# tail -2 /etc/passwd
qemu:x:107:107:qemu user:/:/sbin/nologin
lisi:x:1011:1011::/home/lisi:/bin/bash
[root@oldboy-01 maildrop]# 

第一列:用户

第二列:密码,x

第三列:uid,1011

第四列:gid,1011

第五列:用户说明信息(手工添加默认空,系统添加用户有),添加的用户空的,root是root

第六列:家目录,:/home/lisi

第七列:用户使用的命令解释器,shell,/bin/bash,/sbin/nologin(虚拟用户)

[root@oldboy-01 maildrop]# cat /etc/shells 
/bin/sh
/bin/bash      默认
/sbin/nologin  虚拟机用户
/bin/dash      ubuntu
/bin/tcsh      unix
/bin/csh       unix 升级版

/etc/default/useradd:添加用户的时候默认信息

[root@oldboy-01 ~]# ls -la /etc/skel/

drwxr-xr-x. 2 root root 4096 Nov 2 2018 .

drwxr-xr-x. 84 root root 12288 Dec 15 16:29 ..

-rw-r--r--. 1 root root 18 Mar 23 2017 .bash_logout #用户退出会运行这里的命令

-rw-r--r--. 1 root root 176 Mar 23 2017 .bash_profile #/etc/profile

-rw-r--r--. 1 root root 124 Mar 23 2017 .bashrc #/etc/bashrc

/etc/skel:

新用户的老家的模板(新用户家目录的样子)

请问如下登录环境故障的原理及解决办法?

-bash-4.1$

解决办法:

①cp /home/oldboy/.bash* ~

②cp /etc/skel/.bash* ~

用户管理之添加和删除用户:

点(当前目录),星号(*)所有

useradd :

-u:指定uid

-s:指定使用的shell,默认/bin/bash,可以手工设置/sbin/nologin

-M:表示不创建家目录,一般创建虚拟用户使用

-g:指定用户属于组(组名字)添加用户的时候,默认创建一个用户名一样的组

-c:创建用户指定用户信息

添加一个用户oldboy666指定uid为888禁止用户登录系统,不创建家目录。

[root@oldboy-01 ~]# useradd -s /sbin/noloin -u 888 oldboy666 -M 
[root@oldboy-01 ~]# id oldboy666
uid=888(oldboy666) gid=1013(oldboy666) groups=1013(oldboy666)
[root@oldboy-01 ~]# 

[root@oldboy-01 ~]# userdel oldboy666

后者在/etc/passwd 相应的用户名加注释

userdel -r :删除用户所有信息

usermod:修改用户信息

-s:修改用户使用的shell

-g:修改用户组

-G:修改用户属于多个组

[root@oldboy-01 ~]# usermod -c 'xuniyonghu' zhangsan666
[root@oldboy-01 ~]# grep zhangsan666 /etc/passwd
zhangsan666:x:1012:1012:xuniyonghu:/home/zhangsan666:/bin/bash
[root@oldboy-01 ~]# 
[root@oldboy-01 ~]# usermod -g oldboy zhangsan666
[root@oldboy-01 ~]# id zhangsan666
uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy)
[root@oldboy-01 ~]#
[root@oldboy-01 ~]# usermod -G root,alex888,alex666 zhangsan666
[root@oldboy-01 ~]# id zhangsan666
uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy),0(root),1013(alex666),1014(alex888)
[root@oldboy-01 ~]#

设置用户密码:

方法1:
passwd oldboy
方法2
[root@oldboy-01 ~]# echo '123' | passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
[root@oldboy-01 ~]# history -c

密码保存工具:keepass,

用户管理之如何增强系统安全性和指纹验证

①最小化安装

②保护好root,进制root远程登录

修改远程连接端口22

/var/log/secure 登录日志分析

③文件权限:

给系统常用命令+i

系统配置文件+a

④给文件或者命令做一个指纹

[root@oldboy-01 oldboy]# md5sum oldboy.txt
9cd0ec3f04d4b8ed2d752663b91bdc80  oldboy.txt
[root@oldboy-01 oldboy]# echo 'zhangsan' >> oldboy.txt
[root@oldboy-01 oldboy]# md5sum oldboy.txt
890e6d1a7a855c028d1186c3f0e3aa6e  oldboy.txt
[root@oldboy-01 oldboy]# md5sum oldboy.txt > polic.log
[root@oldboy-01 oldboy]# cat polic.log 
890e6d1a7a855c028d1186c3f0e3aa6e  oldboy.txt
[root@oldboy-01 oldboy]# md5sum -c polic.log
oldboy.txt: OK
[root@oldboy-01 oldboy]# echo 'zhangsa1n' >> oldboy.txt
[root@oldboy-01 oldboy]# md5sum -c polic.log
oldboy.txt: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@oldboy-01 oldboy]# 
放入定时任务+md5sum定时检测

面试题:

chown:修改文件或者目录所有者和属于的用户组

-R:递归修改文件和目录的所有者和用户组

chown oldboy oldboy.txt#只修改文件的所有者

chown oldboy.oldboy oldboy.txt #修改用户的所有者和所属主

用户组相关:

groupadd

创建用户组

-g指定用户组的gid数字

添加一个虚拟用户mysql,指定用户uid gid 都是999

方法1
[root@oldboy-01 /]# useradd -s /sbin/nologin -u 997 -M mysql
[root@oldboy-01 /]# id mysql
uid=997(mysql) gid=997(mysql) groups=997(mysql)
方法2
[root@oldboy-01 /]# groupadd -g 996 mysql1
[root@oldboy-01 /]# useradd -s /sbin/nologin -M -u 996 -g mysql mysql1
[root@oldboy-01 /]# id mysql1
uid=996(mysql1) gid=997(mysql) groups=997(mysql)
[root@oldboy-01 /]# 

查询用户信息:

id 用户

/etc/group :查看用户里的用户

w:

[root@oldboy-01 /]# w
 02:33:33 up 1 day, 12:42,  1 user,  load average: 0.08, 0.08, 0.01
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         Wed01    0.00s  0.27s  0.01s w
[root@oldboy-01 /]# 

第一行:

第一列:当前系统时间

第二列:系统运行时间

第三列:远程连接用户数量

第四列:系统负载信息

第二行:

第一列:远程登录用户名字

第二列:tty

第三列:从哪里登录的

最后一列:用户在做什么。

查询系统性能命令:

w

uptime

top:uptime,free h,ps -ef,M,P

htop

iotop:显示系统中每个进程使用的磁盘io

iftop:查看网络流量

last:查看用户登录信息

lastlog:系统中所有用户最近登录信息

Linux尚方宝剑(sudo)

ll /var/log/secure

su与su - :表示切换用户的时候更新环境变量

如何使用:

[oldboy@oldboy-01 ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.
[sudo] password for oldboy: 

配置sudu:

[root@oldboy-01 ~]# visudo
  93 oldboy  ALL=(ALL)    /bin/ls,/bin/touch
 [root@oldboy-01 ~]#visudo -c

使用步骤:

[root@oldboy-01 ~]# su - oldboy
[oldboy@oldboy-01 ~]$ sudo -l
[sudo] password for oldboy: 
Matching Defaults entries for oldboy on this host:
    !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
    HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
    LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
    LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
    _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User oldboy may run the following commands on this host:
    (ALL) /bin/ls, (ALL) /bin/touch
[oldboy@oldboy-01 ~]$ sudo ls /root/
access.log   etc.bak.gz      luffy.city     oldboy.txt-hard
anaconda-ks.cfg  ifcfg-eth0      oldboy-2017-10-20  oldboy.txt.hard
data         install.log         oldboy.txt     oldboy.txt-soft
etc.bak2.gz  install.log.syslog  oldboy.txt.bak
[oldboy@oldboy-01 ~]$ sudo touch /root/alex.txt
[oldboy@oldboy-01 ~]$ sudo ls /root/alex.txt
/root/alex.txt
[oldboy@oldboy-01 ~]$ 

visudo ==vim /etc/sudoers

授权命令:oldboy ALL=(ALL) /bin/ls, /bin/touch

C:删除光标位置至行尾,并进入编辑模式。

A:进入行尾,并进入编辑模式。

如果授权所有:

oldboy ALL=(ALL) /bin/,并且排除su

94 oldboy ALL=(ALL)     /bin/*, !/bin/su
#根据ls -/bin  查看可以使用的命令。

正常sudo需要密码,在权限前增加:(NOPASSWD:),可以不用使用输入密码。

(四)记录用户的操作记录

①齐治的堡垒机:商业

②gateone web跳板机

③py开发的开源跳板机

Jumpserver部署

crazyEYC

④shell跳板机

三、磁盘

(一)磁盘结构

(1)磁盘基础

分类:机械硬盘,固态硬盘

磁盘外部结构:盘片,主轴,磁头

磁盘接口:

SAS:服务器标配。生成环境。15k转数。

SATA:家庭电脑多用,容量大,价格便宜。性能要求不高,容量不大,线下服务。

SCSI:速度较快,造价较高。

PCI-E:一般为固态硬盘,较快。较贵。大规模读写。高并发。

5400:rpm,每分钟转数。

磁盘内部组成:磁头,磁道,扇区

盘面数量==磁头数量,主要用来读写速度。

磁道:主要存放数据,以主轴为圆心的的区域。

扇区:一个磁盘上最小存储数据单位。默认512字节。

柱面:相同的盘面组成圆柱体。柱面的数量和磁道的数量相等。

磁头读取数据是按照柱面进行读写。磁头的切换从0磁盘切换为1磁头。磁道的变化(寻道)

单元块:表示一个柱面的大小。

(2)机械磁盘和固态硬盘区别

机械硬盘:容量大的价格低,抗打击能力弱,读写速度慢,数据恢复容易,无限寿命。

固态机械硬盘:容量小价格贵,抗打击能力强,读写速度快,数据恢复难,读写次数1-2万次左右。

注意:重要数据放在机械硬盘。

(3)磁盘大小计算

[root@oldboy-01 ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
255磁头,63扇区/磁道         1305柱面
Units = cylinders of 16065 * 512 = 8225280 bytes
单元块大小==柱面大小
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00015468

磁盘大小:柱面大小*柱面数量,柱面由磁道大小组成。

每个柱面的大小=磁盘的大小*磁头的数量

磁道的大小=扇区的大小*每个磁道扇区大小

总结:512x63x255x1305字节byte

bit位,1Byte=8bits

单位换算:1KB=1024Byte

公式计算:

[root@oldboy-01 ~]# awk 'BEGIN{print 8225280*1305/1024/1024/1024}'
9.99681
[root@oldboy-01 ~]#

(二)raid卡

(1)raid卡基础知识

磁盘冗余阵列:

获得更大的容量

获得更高的性能

获得更强的安全性

阵列卡:

基础raid卡

高级raid卡

(2)raid级别:

  级别    最少硬盘    安全冗余    可用容量        性能          使用场景        举例      

Raid0 1 最低 所有之和 读写最快 不要求安全只要求速度 数据库从库
Raid1 只能2块 100% 一半 写入慢,读取正常 只追求安全,不追求速度 系统盘
Raid5 至少3(校验) 最多损坏一块 损失一块盘的容量 写入速度慢,读取正常 要求安全,不要求速度 普通数据库
Raid10 4 可以损坏一半 损失所有硬盘一半的容量 读写速度很快 对于安全和速度都要的 数据库主库,存储

raid5+spare:raid5+热备盘,平时不用,损坏时候立即顶上。

raid10:两个raid1,将两个raid1做raid0。

(3)磁盘分区:

磁盘分区表:

位置:0磁头0磁道1扇区:前446字节mbr主引导记录

64字节的分区表

55AA表示的是结束标记

64字节分区表:主分区-扩展分区-逻辑分区

3个主分区,1个扩展分区(如果想使用,需要在扩展分区下创建逻辑分区)

存储数据只有两个分区:主分区和逻辑分区。

主分区:存放数据分区,最多有4个。

扩展分区:无法直接使用,最多只能有一个,必须要在扩展分区中创建逻辑分区才可使用。

逻辑分区:存放数据分区。

(4)磁盘命名:

sas/sata/scsi接口:以sd开头

第一块sas硬盘:sda

第三块sas硬盘:sdc

分区命名:主分区,逻辑分区:1-4

逻辑分区:从5开始

磁盘格式化工具:fdisk(小于2个t),parted(大于2个t)

ctrl+u:删除光标位置至行首。

创建磁盘分区过程:

[root@oldboy-01 ~]# fdisk -l | grep '/dev/sd[a-c]'
Disk /dev/sda: 10.7 GB, 10737418240 bytes
/dev/sda1   *           1          26      204800   83  Linux
/dev/sda2              26         124      786432   82  Linux swap / Solaris
/dev/sda3             124        1306     9493504   83  Linux
Disk /dev/sdb: 106 MB, 106954752 bytes
Disk /dev/sdc: 106 MB, 106954752 bytes
[root@oldboy-01 ~]# fdisk -cu /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x5e6202b7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   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
   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)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-208895, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): +30M

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   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
   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)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 2
First sector (63488-208895, default 63488): 
Using default value 63488
Last sector, +sectors or +size{K,M,G} (63488-208895, default 208895): 
Using default value 208895

Command (m for help): n  
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (65536-208895, default 65536): 
Using default value 65536
Last sector, +sectors or +size{K,M,G} (65536-208895, default 208895): +30M

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0x5e6202b7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048       63487       30720   83  Linux
/dev/sdb2           63488      208895       72704    5  Extended
/dev/sdb5           65536      126975       30720   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@oldboy-01 ~]# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Dec 24 01:05 /dev/sdb
brw-rw---- 1 root disk 8, 17 Dec 24 01:05 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Dec 24 01:05 /dev/sdb2
brw-rw---- 1 root disk 8, 21 Dec 24 01:05 /dev/sdb5
[root@oldboy-01 ~]# 

(5)磁盘分区:

[root@oldboy-01 ~]# fdisk -cu /dev/sdb

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0x5e6202b7

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-208895, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): 
Using default value 208895

Command (m for help): p

Disk /dev/sdb: 106 MB, 106954752 bytes
64 heads, 32 sectors/track, 102 cylinders, total 208896 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 identifier: 0x5e6202b7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      208895      103424   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@oldboy-01 ~]# ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Dec 24 01:09 /dev/sdb
brw-rw---- 1 root disk 8, 17 Dec 24 01:09 /dev/sdb1

通知系统磁盘分区:

[root@oldboy-01 ~]# partprobe /dev/sdb

创建文件系统:

[root@oldboy-01 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25896 inodes, 103424 blocks
5171 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1992 inodes per group
Superblock backups stored on blocks: 
    8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

关闭磁盘自动检查功能:

[root@oldboy-01 ~]# tune2fs -c 0 -i 0 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
[root@oldboy-01 ~]# 

-c:关闭每挂载多少次进行磁盘检查功能

-i:关闭每个180天就进行磁盘检查功能

磁盘分区挂载:

[root@oldboy-01 ~]# mount /dev/sdb1 /mnt/
[root@oldboy-01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.9G  6.5G  23% /
tmpfs           491M     0  491M   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sdb1        94M  1.6M   88M   2% /mnt
[root@oldboy-01 ~]# 

(6)永久开机自动挂载:

方法1:

将命令(mount /dev/sdb1 /mnt/)放入:/etc/rc.local

方法2:

/etc/fstab

vim /etc/fstab
/dev/sdb1               /mnt                    ext4    defaults        0 0

(8)磁盘分区小结:

第一步:创建分区并通知系统分区表变化:fdisk,partprobe

第二步:格式化创建文件系统并关闭磁盘检查

mkfs.ext4 /dev/sdb1

tune2fs -c 0 -i 0 /dev/sdb1

第三步:挂载和自动挂载

mount /dev/sdb1 /mnt

开机自动挂载:

/etc/rc.local

/etc/fstab

注意:卸载,umount /mnt

磁盘分区实战

fdisk:

磁盘大小小于2TB

fdisk支持MBR

parted:

主要用于给磁盘大于2TB的进行分区

基于GPT分区表

print:显示磁盘分区表信息

mklabel:创建磁盘分区表

gpt

msdos(mbr)

mkpart:创建分区

rm:删除分区

q:退出不保存

创建分区:

[root@oldboy-01 ~]# parted /dev/sdc 
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Error: /dev/sdc: unrecognised disk label                                  
(parted) mklabel gpt
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

创建磁盘:

[root@oldboy-01 ~]# parted /dev/sdc 
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Error: /dev/sdc: unrecognised disk label                                  
(parted) mklabel gpt
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart primary 0 30
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I                                                          
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  30.0MB  30.0MB               primary

(parted) mkpart primary 30 60
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  30.0MB  30.0MB               primary
 2      30.4MB  59.8MB  29.4MB               primary

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

[root@oldboy-01 ~]# parted /dev/sdc
GNU Parted 2.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) q                                                                
[root@oldboy-01 ~]# parted /dev/sdc p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 107MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  30.0MB  30.0MB               primary
 2      30.4MB  59.8MB  29.4MB               primary

[root@oldboy-01 ~]# 

(9)案例:java环境内存不足

创建控件文件块:
[root@oldboy-01 ~]# dd if=/dev/zero of=/tmp/100m bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0815905 s, 129 MB/s
查看文件类型:
[root@oldboy-01 ~]# file /tmp/100m 
/tmp/100m: data
将文件类型变成swap:
[root@oldboy-01 ~]# mkswap /tmp/100m
mkswap: /tmp/100m: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 10236 KiB
no label, UUID=dc24e68c-5375-42ed-9199-5d8c0ca2968d
查看文件类型:
[root@oldboy-01 ~]# file /tmp/100m
/tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 2559 pages
[root@oldboy-01 ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       344M       636M       248K        51M       109M
-/+ buffers/cache:       183M       797M
Swap:         767M         0B       767M
增加系统的swap生效:
[root@oldboy-01 ~]# swapon /tmp/100m
[root@oldboy-01 ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          980M       346M       634M       248K        51M       109M
-/+ buffers/cache:       185M       795M
Swap:         777M         0B       777M
查看swapon
[root@oldboy-01 ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/sda2                               partition   786428  0   -1
/tmp/100m                               file        10236   0   -2
[root@oldboy-01 ~]# 

永久生效:

方法1:/etc/rc.local

swapon /tmp/100m

方法2:/etc/fstab

/tmp/100m swap swap defaults 0 0

linux特点:会把使用过的命令和数据临时存放在内存中,cache和buffer

linux文件系统:inode,blok,superblock

查看文件的superblock:

[root@oldboy-01 ~]# dumpe2fs /dev/sda3

常见的文件系统:

openSUSElinux默认的文件系统:ReiserFS文件系统

大量小文件。

IBM的AIX使用的jfs日志文件系统。

centos7采用XFS文件系统。

mysql业务会选择xfs。

centos6采用ext4文件系统。

视频下载,流媒体,数据库,小文件业务。

centos5采用ext3文件系统。

ext2:没有日志,蓝汛的cache业务,CDN网站加速服务。

一个分区只能一种文件系统。

猜你喜欢

转载自www.cnblogs.com/cuiyongchao007/p/12105282.html