一、阶段知识回顾
服务器硬件,提升用户的体验(大型网站门户网站数据放在内存,中小型企业放在磁盘)尽量把请求往前推: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网站加速服务。
一个分区只能一种文件系统。