1.磁盘管理
扇区,磁道,柱面
分区(Partition)
MBR(Master Boot Record):主引导记录(512byte)
前446bytes:BootLoader (引导程序)
后64bytes: 每16bytes标识一个分区(4个主分区)(主分区+扩展分区<=4)
后2bytes: Magic Number (标记MBR是否有 效)
分区:按柱面来分区
2.链接
2.1硬链接 ( ln abc.txt abc2.txt)
只能对文件创建,不能应用于目录
不能跨文件系统
创建硬链接会增加文件被链接的次数;
2.2软链接(符号链接) (ln -s abc.txt abc2.txt)
可应用于目录
可以跨文件系统
不会增加被链接文件的链接次数
其大小为指定的路径包含的字符个数
设备文件:
块设备: 按块为单位,随机访问的设备 (硬盘)
字符设备: 按字符为单位,线性设备 (键盘)
/dev
主设备号(major number):标识设备类型
次设备号(minor number):标识同一种类型中不同设备
创建特殊文件:
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
eg: mknod mydev c 66 0 (创建一个名为mydev的字符设备,主设备号为66,次设备号为0)
硬盘设备的设备文件名:同一种类型下的不同设备
IDE,ATA:hd
SATA,SCSI,USB: sd
a,b,c,..来区别 如:sda , sdb ;
管理磁盘分区:(只适合MBR分区)
fdisk:
p: 显示当前硬件的分区,包括没有保存的改动
n: 创建新分区(e:扩展分区;p主分区)
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
l:显示所有支持的分区类型
------------------------------------
eg: 将磁盘/dev/sdb分为一个分区(只适合MBR分区)
[root@localhost /]# fdisk -l 查看所有分区情况
[root@localhost /]# fdisk /dev/sdb 对该磁盘进行管理
[root@localhost /]# mount /dev/sdb1 /data ---将/dev/sdb1挂载在目录/data
[root@localhost /]# df -h ---查看分区情况
------------------------------------
eg: 将磁盘/dev/sdb分为一个分区(只适合MBR分区)
[root@localhost /]# fdisk -l 查看所有分区情况
[root@localhost /]# fdisk /dev/sdb 对该磁盘进行管理
Command (m for help): n ----n表示增加一个分区
Command action
e extended
p primary partition (1-4)
p ----p表示选择主分区
Partition number (1-4): 1 ----1表示分区编号
First cylinder (1-13054, default 1): ----分区起始柱面选择
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): ---分区结尾柱面选择
Using default value 13054
Command (m for help): w ---保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost /]#
mkfs -t ext4 /dev/sdb1 ----将刚刚的创建的分区/dev/sdb1 格式化成ext4格式
[root@localhost /]# mount /dev/sdb1 /data ---将/dev/sdb1挂载在目录/data
[root@localhost /]# df -h ---查看分区情况
--------------------------------
3.
文件系统管理
(重新创建文件系统会破坏原有文件)
文件系统类型:ext2,ext3,ext4等
cat /proc/filesystems 查看当前系统能够支持的文件系统
mkfs:make file system (创建文件系统命令)
-t: 指定文件系统类型
mkfs -t ext2=mkfs.ext2
mkfs -t ext3=mkfs.ext3
eg: mkfs -t ext2 /dev/sda5 在磁盘/dev/sda5上创建ext2的文件系统
mke2fs :专门管理ext系列文件
-j: 创建ext3类型文件系统
-b BLOCK_SIZE :指定块大小,默认4096,可用取值为1024,2048或4096
-L LABEL: 指定分区卷标
-m #: 指定预留给超级用户的块数百分比 (默认为5)
-i # : 用于指定为多少个字节的空间创建一个inode,默认为8096;这里给出的数值应该为块大小的2^x倍
-N # :指定inode个数
-F :强制创建文件系统
-E :用于指定额外文件系统属性
eg: mke2fs -m 3 -b 2048 -j /dev/sda6 在/dev/sda6上创建ext3的文件系统,预留给超级用于使用的块数为3%,块大小为2048.
blkid 查看磁盘设备设备相关属性(超级用户)
eg: blkid /dev/sdb1 (输出结果: /dev/sdb1: UUID="fbdca1a3-051d-49eb-b5bc-7d8f723174ed" TYPE="ext4" )
e2label :查看或定义卷标
eg: e2label /dev/sdb1 datalib (将/dev/sdb1的卷标设置为datalib )
eg: e2label /dev/sdb1 (查看/dev/sdb1的卷标)
tune2fs :调整文件系统的属性
-j: 不损害原有数据,将ext2升级为ext3
-L: 设定或修改卷标
-m #: 调整超级用户的块数百分比
-r #: 调整超级用户的块数
-c #:指定挂载次数达到#次之后进行自检,0或-1表示关闭此功能
-i #: 没挂载使用多少天后进行自检,0或-1表示关闭此功能
-l: 显示超级块中的信息
dumpe2fs: 显示文件系统属性
eg: dumpe2fs /dev/sdb1 查看/dev/sdb1的详细信息,包括各个块组的信息
eg: dumpe2fs -h /dev/sdb1 (约等于tune2fs -l /dev/sdb1 )
fsck: 检查并修复linux文件系统
-t FSTYPE: 执行文件系统类型(不指定也可以,会调用blkfs查看文件系统)
-a:自动修复
e2fsck:专用于修复ext2/ext3文件系统
-f:强制检查
-p:自动修复
挂载:将新的文件系统关联至当前根文件系统
卸载:将某文件系统与当前根文件系统的关联关系予以移除
mount: 挂载
用法: mount 设备 挂载点
设备可以是: 设备文件 如/dev/sda6
卷标: LABEL=""
UUID: UUID=""
挂载点:目录 (1.此目录没有被其他进程使用;2.目录得事先存在;3.目录中的原有的文件将会暂时影藏。)
mount [option]
-a:表示挂载/etc/fstab文件中定义的所有文件系统
-n:默认情况下,mount命令每挂载一个设备,都会把挂载信息保存至/etc/mtab文件,使用-n选项意味着挂载设备时,不把信息写入此文件
-t FSTYPE:指定正在挂载设备上的文件系统的类型;(不指定也可以,会调用blkfs查看文件系统类型)
-r :只读挂载
-w:读写挂载
-o:指定额外的挂载属性,也即指定文件系统启用的属性
remount :重新挂载当前文件系统
eg: mount /dev/sdb1 /db (将设备/dev/sdb1挂载到目录/db)
eg: mount 显示当前系统已经挂载的设备及挂载点
umount:卸载某个文件系统
umount 设备
umount 挂载点
eg: mount /dev/sdb1 (等于mount /db ) 卸载/dev/sdb1
cpu:time slice 时间片
Memory:
I/O设备: 多路复用
swap分区:
page out == swap in 物理内存到swap分区
page in == swap out swap分区到物理内存
存储速度: cpu寄存器(1ns)》缓存(10ns)》内存(10ms)》磁盘(秒级)
free :查看物理内存和交换分区的情况(默认单位为字节)
eg: free -m 以兆为单位显示
buffers(缓冲区):为了避免过慢的设备受到冲击的
cached(缓存区):为了重复使用(将慢设备中的一些数据缓存起来,供快设备使用)
mkswap :创建交换分区命令
eg: mkswap /dev/sda8 将/dev/sda8创建为交换分区
swapon :启用交换分区
swapoff: 关闭交换分区
eg: swapon /dev/sda8 启用/dev/sda8为交换分区
eg: swapon -a 启用所有定义在/etc/fstab文件中的交换设备
回环设备
loopback,使用软件来模拟实现硬件
dd命令:
dd if=数据来源 of=数据存储目标
eg: dd if=/dev/sda of =/mnt/usb/mbr.backup bs=512 count=1 (备份mbr)
eg:dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1 (将备份的mbr还原)
例子:当交换分区不够用,并且没有多余的分区时,可以创建一个文件用于作为交换分区(性能不行,只能救急)
dd if=/dev/zero of=/var/swapfile bs=1M count=1024 (创建一个1G的文件)
mkswap /var/swapfile (格式化为swap)
swapon /var/swapfile (启用,可以通过free -m查看交换分区前后的变化)
文件系统的配置文件/etc/fstab
操作系统初始时,会自动挂载此文件中定义的每个文件系统
/etc/fstab文件格式:
要挂载的设备
挂载点
文件系统类型
挂载选项
转储频率(每多少天做一次完全备份;0表示不备份)
文件系统检测次序(只有根为1)
fuser:验证进程正在使用的文件或套接字
-v :查看某文件上正在运行的进程
-k :杀掉访问某文件的进程
-m :配合-k选项, 杀掉跟挂载点相关的进程
eg: fuser -v /mnt 查看有哪些用户和进程访问了目录/mnt
eg: fuser -k /mnt 杀掉正在访问/mnt的进程
eg: fuser -km /mnt/usb 终止正在访问挂载点/mnt/usb的所有进程
4.
4.1
压缩,解压缩命令
第一种:gzip : .gz (只能压缩文件)
gzip /path/to/somefile (压缩完成后删除原文件)
gunzip /path/to/somefile.gz (解压)
eg: gzip /opt/testfile 压缩文件testfile,生成testfile.gz
eg: gunzip /opt/testfile.gz 解压(同gzip -d testfile.gz)
zcat /opt/testfile.gz 不解压的情况下,查看.gz文件的内容
第二种: bzip2 : .bz2 (只能压缩文件)
比gzip有着更大压缩比的压缩工具,使用格式近似
bzip2 /path/to/somefile (压缩完成后删除原文件,如果不想删除加上-k选项)
bunzip2 /path/to/somefile.bz2 (解压)
eg:bzip2 /opt/testfile 压缩文件testfile,生成testfile.bz2
eg: bunzip2 /opt/testfile.bz2 解压(同bzip2 -d /opt/testfile.bz2)
bzcat /opt/testfile.bz2 不解压的情况下,查看.bz2文件的内容
第三种: xz :.xz (只能压缩文件)
xz /path/to/somefile (压缩完成后删除原文件,如果不想删除加上-k选项)
unxz /path/to/somefile.xz (解压)
eg: xz /path/to/somefile 压缩生成somefile.xz
eg: unxz /path/to/somefile.xz 解压(同xz -d /path/to/somefile.xz )
xzcat /path/to/somefile.xz 解压的情况下,查看.xz文件的内容
5.raid
5.1 raid(硬件级别对数据的保护)
raid0 :条带
性能提升:读,写
冗余能力(容错能力):无
空间利用率: nS
至少2块盘
raid1 :镜像
性能表现: 写性能下降,读性能提升
冗余能力:有
空间利用率:1/2
至少2块盘
raid5:
性能表现:读,写都提升
冗余能力:有
空间利用率: (n-1)/n
至少3块盘
raid10: (raid01一样)
性能表现:读,写都提升
冗余能力:有
空间利用率: 1/2
至少4块盘
raid50: 读写性能都提升,冗余能力有,空间利用率(n-2)/n,至少需要6块盘
jbod: 无性能提升,无冗余能力,空间利用率100%,至少2块盘
5.2 LVM: Logical Volume Manager(逻辑卷管理)
MD: meta device (/dev/md#) 做软raid
DM: Device Mapper 做LVM2
层次:
第一层:Logical Volume (LV 逻辑卷)
-- LE: Logical Extend
第二层:Volume Group (VG 卷组)
-- PE:Physical Extend 盘区
第三层:Physical Volume (PV 物理卷)
管理:
物理卷PV
创建PV: pvcreate
查看PV: pvdisplay
pvs
挪动PV上的数据(以便减小VG大小): pvmove (eg: pvmove /dev/sda10)
删除PV数据:pvremove (eg:pvremove /dev/sda10)
卷组VG
创建VG: vgcreate ( 参数s表示指定PE大小,默认为4M)(eg: vgcreate myvg /dev/sda[10,11] 将sda10和sda11创建为名为myvg的卷组)
移除VG: vgremove (eg: vgremove myvg 删除名为myvg的卷组)
查看VG信息: vgdisplay
vgs
减小VG大小(移除PV): vgreduce (eg: vgreduce myvg /dev/sda10 将sda10从卷组myvg中移除)
扩展VG大小: vgextend (eg: vgextend myvg /dev/sda12 将sda12扩展到卷组myvg中)
逻辑卷LV
创建LV: lvcreate (eg: lvcreate -L 500G -n testlv myvg 在卷组myvg中创建一个500G的逻辑卷testlv)
查看LV: lvdisplay
移除LV: lvremove (eg: lvremove /dev/mapper/myvg-testlv 移除逻辑卷 )
扩展LV:(不影响原先数据)
lvextend(物理边界)
-L [+]# (eg: -L +5G 扩展5G ; -L 5G 扩展到5G)
(eg: lvextend -L 50G /dev/myvg/testlv 扩展到50G)
resize2fs(逻辑边界)
eg: resize2fs -p /dev/myvg/testlv 扩展逻辑卷(-p选项表示有多少扩展多少)
缩减LV:(注意: 确保缩减后的空间依然能保存原有的所有数据df -lh;
在缩减前应该强行检查文件,以确保文件系统处于一致性状态e2fsck -f;
不能在线缩减,得先卸载umount;)
resize2fs /dev/myvg/testlv 40G 缩减到40G(逻辑边界)
lvreduce(物理边界)
eg: lvreduce -L 40G /dev/myvg/testlv 缩减到40G
快照卷:(注意:生命周期为整个数据时长,在这段时长内,数据的增长量不能超出快照卷大小;
快照卷应该是只读的;
跟原卷在同一卷组内。)
lvcreate -s -L 30G -n snapshotlv -p r /dev/myvg/testlv 对逻辑卷testlv创建大小为30G,权限为只读的快照卷snapshotlv(参数-s表示创建快照卷)
lvremove /dev/myvg/snapshotlv 移除快照卷
-------------------------------------------
eg:对分区类型为8e的/dev/sdb3创建逻辑卷,并能自动挂在到目录/data
pvcreate /dev/sdb3 --物理卷创建(查看为pvdisplay)
vgcreate myvg /dev/sdb3 --创建名为myvg的卷组
lvcreate -n mydata -L 10G myvg --对卷组myvg进行创建逻辑卷的操作,逻辑卷名为mydata
mkfs -t ext4 /dev/myvg/mydata --格式化刚刚创建的逻辑卷
/dev/myvg/mydata /mydata ext4 defaults 0 0 (/etc/fstab加入改行,表示开机能自动挂载)
--------------------------------------------
-------------------------------------------
eg:对分区类型为8e的/dev/sdb3创建逻辑卷,并能自动挂在到目录/data
pvcreate /dev/sdb3 --物理卷创建(查看为pvdisplay)
vgcreate myvg /dev/sdb3 --创建名为myvg的卷组
lvcreate -n mydata -L 10G myvg --对卷组myvg进行创建逻辑卷的操作,逻辑卷名为mydata
mkfs -t ext4 /dev/myvg/mydata --格式化刚刚创建的逻辑卷
/dev/myvg/mydata /mydata ext4 defaults 0 0 (/etc/fstab加入改行,表示开机能自动挂载)
--------------------------------------------