您的位置:首页 > 运维架构 > Linux

Linux学习命令汇总六——磁盘分区,磁盘挂载,文件系统管理,压缩及归档命令

2018-01-26 16:05 1086 查看
[b][b]本章Blog相关Linux知识点[/b][/b]
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 系统中的文件、目录、软连接及文件保护信息等都存储在其中。按照名称进行存取。
磁盘:磁道,扇区 ,柱面 ,固定角速度 ,平均寻道时间
MBR :master boot recoard 主引导记录 (512字节),存放bootloader (引导加载器 446字节)+ 磁盘分区 (64字节)
一块磁盘最多分为4个主分区 ,或者3主分区1扩展分区 ,磁盘在Centos 系统中表示为/dev

磁盘接口分为:IDE , SCSI ,SATA ,SAS ,USB ,Centos 系统表示为/dev/sd[a-z][1-n] ,其中[1-4]代表了主分区 ,[5+]代表了逻辑分区

光盘 : /dev/cdrom /dev/sr0 /dev/dvd [-t iso9600]

ID:对应默认的文件系统 ,节点(Inode号)

Inode 存放文件属性:Inode号,文件的时间戳,数组 ,权限 ,文件存放位置。 磁盘块(block) 1K ,2K ,4K 元数据区 、数据区 、日志区 文件系统检测和修复的过程 遍历所有磁盘文件 日志文件分区,保留元数据(写操作,大小 ,修改),若数据保存完成,把元数据转移到Inode 分区 ,若发生断电 ,文件检测日志区即可。检测扫描日志分区日志文件即可 ,加速系统检测 系统检测机制 超级块(super block)存放块组分配信息 ,整个分区的元数据 建立(Inode)位图 ,块位图 便于查看空闲Inode 号及 空闲磁盘块VFS:virtual file system 虚拟文件系统
基本文件系统:ext2 ,ext3 ,ext4 ,xfs ,JFS, Vfat ,NTFS

交换分区:swap
集群文件系统:GFS2 ,OCFS2
网络文件系统:NFS ,smbfs

光盘文件系统:ISO9600

文件系统根/ (文件系统的访问入口)在内核中 ,但根/ 中的文件在磁盘上 ,内核也是保存到磁盘中

/bin ,/sbin 存放Centos 系统的可执行程序
/lib ,/lib64 存放Centos 系统的库文件

/etc 存放系统的配置文件

/boot 存放系统的系统引导文件,如内核 ,bootloader ,grub 等
/home 用户的家目录

/root 管理员家目录
/dev 设备文件存放目录

/media ,/mnt 专用挂载位置,通常用来挂载便携式或存储设备
/misc /opt 备用目录,通常用来安装第三方文件
/proc /sys 伪文件系统 ,如内核参数的映射及配置外围设备的参数
/tmp 临时文件系统
/var 频繁发生变化的文件目录

磁盘分区及文件系统管理

[root@study ~]# fdisk -l /dev/sd[a-z] 查看分区
[root@study ~]# fdisk /dev/sda 创建磁盘分区
d :删除分区 n :新建分区 p :列出已有分区 t :调整分区ID l :列出内核支持的分区类型 w :存盘并退出 q :不保存退出 m :获取帮助centos 5 :# parprobe 内核重读磁盘Centos 6 :# partx -a 或 # kpartx -l ; 执行kpartx -l /dev/sda 再执行kpartx -af /dev/sda 再执行 partx -a /dev/sda# mke2fs 创建文件系统 -t fstype /dev/somdevice 指定文件类型后,对磁盘进行格式化 -j 相当于-t ext3 ,专门创建ext3文件 -L label 指定卷标名称 -b {1024/2048/4096} 指定块大小 -i # #个字节预留一个inode -I # 指定Inode 大小 -N # 直接指定预留多少个Inode
-m 预留管理空间的百分比 -O 指定分区特性例:#mke2fs -b 2048 -m 2 -t ext3 /dev/sdb1 对磁盘/dev/sdb1 创建ext3格式文件系统,并指定管理空间百分比为2% ,块大小为2048字节
# e2label /dev/device 查看卷标
# e2label /dev/device label 指定磁盘卷标 ,相当于 #mke2fs -L /dev/device
创建ext4 文件系统 方式: mkfs -t ext4 =mke2fs -t ext4 =mkfs.ext4创建ext3文件系统方式: mkfs -t ext3 =mke2fs -t ext3 =mkfs.ext3 =mke2fs -j
mke2fs配置文件: /etc/mke2fs.conf , /proc/meminfo (内存信息列表), /proc/cpuinfo (cpu信息列表),/proc/partitions (磁盘信息列表),/proc/mounts (挂载信息), /etc/fstab (磁盘挂载配置文件)
# blkid /dev/somedevice 查看磁盘设备信息,UUID 、type 及Label
# dumpe2fs -h /dev/somedevice 查看并显示磁盘超级快信息
#tune2fs 调整磁盘属性信息(块大小不可变)
-l /dev/somedevice 查看超级块中的详细 ,相当于 dumpe2fs -h

-L label 设定卷标

-m 调整预留管理员百分比

-j 如果原来的文件系统文ext2 ,则提升为ext3
-o [^]mount-options[,...] 设定其默认挂载选项
-O [^]feature[,...] 调整分区特性

#tune2fs -o mount-option 设备 ,例 #tune2fs -o acl /dev/sda1 增加acl 功能 # tune2fs -O ^dir_index /dev/sda7#tune2fs -o ^mount-option 设备 ,如 #tune2fs -o ^acl /dev/sda1 取消acl 功能 # tune2fs -O dir_index /dev/sda7
# fsck 修复并检测 -t fstype /dev/somedevice 以fstype类型检测磁盘 -a 自动修复错误 -r 交互修复错误# e2fsck 修复并检测 -f 强制检测 -y 对问题自动回答为yes例# e2fsck -f -y /dev/sda7 修复并检测/dev/sda7 磁盘

磁盘交换分区

创建交换分区步骤 :
1、通过# fdisk /dev/sda 新建磁盘 /dev/sda7 ,调整磁盘为swap 类型2、内核加载磁盘列表,再执行kpartx -af /dev/sda 再执行 partx -a /dev/sda3、创建分区为swap文件系统并启动swap 分区# mkswap 创建交换分区文件系统 -l label 设置卷标 -f label 强制创建# swapon /dev/somedevice 启用swap 分区 -a 启用所有的swap 分区选项 -p # ,指定优先级# swapoff /dev/somedevice 启用swap 分区 -a 启用所有的swap 分区选项交换分区: linux使用内存机制:/proc/sys/vm/swapiness 多大为好: 物理内存2G - 4G ,使用swap 为4G 物理内存小于2G ,使用 2* 内存 物理内存大于8G ,使用swap 为4G查看内存空间使用状态:# cat /proc/meminfo# free -m (代表MB) -g(代表GB) # free -g [root@study ~]# free -m total used free shared buffers cachedMem: 1861 341 1520 0 89 132-/+ buffers/cache: 118 1742Swap: 3999 0 3999Buffers (缓冲) 代表加速写操作Cached (缓存) 代表加速读操作
举例:分配/dev/sda7 分区空间为2G ,并将其配置为swap分区
[root@Study ~]# free -m               查看系统内存使用
total       used       free     shared    buffers     cached
Mem:          4231        187       4043          0          4         45
-/+ buffers/cache:        137       4094
Swap:         4095          0       4095
[root@Study ~]# fdisk /dev/sda        磁盘分区,并修改分区类型

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): n
First cylinder (10122-16579, default 10122):
Using default value 10122
Last cylinder, +cylinders or +size{K,M,G} (10122-16579, default 16579): +2G

Command (m for help): t
Partition number (1-7): 7
Hex code (type L to list codes): 82
Changed system type of partition 7 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sda: 136.4 GB, 136365211648 bytes
255 heads, 63 sectors/track, 16578 cylinders
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: 0x00083797

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          39      307200   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        1951    15360000   83  Linux
/dev/sda3            1951        2473     4194304   82  Linux swap / Solaris
/dev/sda4            2473       16579   113306624    5  Extended
/dev/sda5            2474       10122    61440000   8e  Linux LVM
/dev/sda6            2473        2473        1813   83  Linux
/dev/sda7           10122       10383     2096840   82  Linux swap / Solaris

Partition table entries are not in disk order

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

Calling ioctl() to re-read partition table.
[root@Study ~]# kpartx -af /dev/sda7             内核重读磁盘信息
[root@Study ~]# partx -a /dev/sda7
[root@Study ~]# cat /proc/partitions
major minor  #blocks  name

8        0  133169152 sda
8        1     307200 sda1
8        2   15360000 sda2
8        3    4194304 sda3
8        4          1 sda4
8        5   61440000 sda5
8        6       1813 sda6
8        7    2096840 sda7
[root@Study ~]# mkswap -f /dev/sda7          创建swap文件系统
Setting up swapspace version 1, size = 2096836 KiB
no label, UUID=42b4b29c-c002-4e6e-83f1-9b6107ce3dbe
[root@Study ~]# swapon /dev/sda7             启动swap 分区
[root@Study ~]# free -m                     对比之前的free选项,发现swap分区增加了2G
total       used       free     shared    buffers     cached
Mem:          4231        188       4042          0          4         45
-/+ buffers/cache:        138       4092
Swap:         6143          0       6143
[root@Study ~]# swapoff /dev/sda7           关闭swap分区
[root@Study ~]# free -m
total       used       free     shared    buffers     cached
Mem:          4231        187       4043          0          4         45
-/+ buffers/cache:        137       4093
Swap:         4095          0       4095

磁盘挂载


# hdparm 获取或设置 SATA/IDE 硬盘属性信息 -I /dev/sda 查看磁盘信息 -i /dev/sda -g /dev/sda 显示磁盘布局信息 -t 查看buffered disk 读取速度(硬盘读写) -T 查看缓存读写速度挂载类命令,mount ,unmount ;挂载方式:手动挂载,按需挂载 ,开机自动挂载;若挂载点存有数据,重新挂载后则原始数据将被隐藏
挂载: 1、选择空闲路径 2、事先目录要存在卸载: 1、空闲时可以卸载
# mount [options] [-t fstype] [-o options] 设备 挂载点 [options] :命令的选项 [-o options] :挂载时启动分区特性#mount [options]: 直接# mount,显示当前系统所有已被挂载的分区 -a 自动挂载所有(/etc/fstab 文件中)支持自动挂载的设备 -t fstype 指定文件系统ext类型 -r 只读挂载 -w 读写挂载 -L label 以卷标指定挂载设备 或 LABLE=“MYDATA” -U UUID 以UUID指定挂载设备 -n 不更新/etc/mtab 文件 --bind 把目录挂载到目录段 例 #mount --bind /usr/ /mnt -o [ options ] async 异步I/O ,提高磁盘性能
sync 同步I/O
noatime /atime 是否更新文件访问时间戳 ,建议noatime
diratime /nodiratime 是否更新目录访问时间戳
exec /noexec 是否允许执行二进制文件
_netdev 网络启用之前,避免挂载网络文件
remount 重新挂载 ,例 # mount -o remount,rw / 重新以读写方式挂载/ 根

acl 启动acl

defaults : rw ,suid ,dev ,exec ,auto ,nouser ,async ,relatime
挂载光盘:
# mount -t iso9660 /dev/cdrom /mnt

查看占用挂载的设备进程
# fuser 查看被挂载设备使用的进程
-v 显示进程正在访问的路径 。例:# fuser -v /mnt

-km 剔除访问该挂载设备的用户

# df [OPTION]... [DEVICE]…查看磁盘空间使用状态报告
-h human-read
-i Inode 使用

-P Posix
# du 评估文件占用磁盘空间情况 (与ls 相比较)

-sh 目录共占用磁盘的大小

[root@study ~]# cat /etc/fstab 显示文件系统挂载表
UUID=29e0a74e-d489-42bb-a1ac-6c29927293e3 /boot ext4 defaults 1 2/etc/fstab 文件中定义的文件系统挂载表选项:
1、挂载设备名(格式可以是:设备文件名;LABEL="label" ;UUID=“uuid”)
2、挂载点 (swap 分区挂载点为swap)
3、类型 ( 文件类型 ,ext3 ,ext4 等)
4、Defaults (挂载选项,多个选项键使用逗号分隔)
5、存储频率 (0代表从不备份 ,1代表每日备份 ,2代表每2日备份)
6、自检次序(0代表不自检;1表示首先自检,通常只能被/ 使用;2代表1自检后自检)
若要实现分区或磁盘自启动 ,添加以上选项到/etc/fstab 中即可 例: /dev/sda7 swap swap defaults 0 0 实现开机启动/dev/sda7 交换分区

dd复制命令与链接文件
# dd 文件复制命令(数据块级别复制,而copy 命令,需要使用文件系统)

# dd [OPERAND]...

bs=BYTES 字节数
count=N 数量N
if=file 输入目录
of=file 输出目录
例:# dd if=/etc/issue of=/tmp/issue.dd 复制/etc/issue 文件为 /tmp/issue.dd
例:# dd if=/dev/sda of=/dev/sdb 复制/dev/sda 中的文件到目录/dev/sdb 中
例:# dd if=/dev/cdrom of=/tmp/linux.iso 或 cat /dev/cdrom > /tmp/linux.iso 制作磁盘镜像例:# dd if=/dev/sda of=/tmp/myfile bs=512 count=1 复制MBR (包括bootloder 和分区表)例:# dd if=/dev/zero of=/dev/sdb bs=446 count=1 (删除bootloader ,但未损坏分区表)例:# dd if =/dev/zero of=/swapfile bs=1M count=100 创建文件分区,把文件模拟成设备目录是一种路径映射文件,目录的磁盘块存放的是所有文件名及inode号Dentry 目录项 ,把目录项缓存到内存中, 叫slab文件删除rm :告诉Inode位图此文件Inode 号为空 ,告诉块位图把数据块放置在尚未使用块位图列表中 ,下次分配直接覆盖原有数据即可文件复制cp :元数据区新建Inode 号,数据区并复制数据到新的数据块。文件移动mv:同一文件系统 ,在目标先建立目录项 ,指定名称 ,Inode 号指向原文件Inode 号 ,在原始路径中目录项移除原始文件项即可。跨分区,先复制Inode 和数据块 ,在删除原始数据块
硬链接:
#ln -sv SRC LINKFILE

特性:1、不能跨分区;不能对目录创建硬链接 ;硬链接会改变文件被链接的次数;删除硬链接,原始文件存在,除链接次数变为0外 ;源文件域链接文件指向的同一个Inode
符号链接:
# ln -lv SRC LINKFILE
特性:符号链接可以跨分区,可以对目录创建符号链接 ;符号链接文件与源文件不是同一个Inode ;符号链接不会改变被连接次数 ;同一文件路径的路径指向 ;不占用磁盘数据块

压缩及归档命令

zip 既能归档,又能压缩 ,unzip=zip -d 解压

后缀.zip ,压缩过程中保留源文件 例:# zip /tmp/boo.zip /boot/*
gzip :压缩文件 ,gunzip =gzip -d 解压

后缀.gz

-c 将压缩结果送往标准输出 ,可以和使用重定向将其保存为压缩文件,从而保留源文件 例:#gzip -c messages

bzip2 :压缩 文件 ,bunzip2 =bzip2 -d 解压
后缀.bz2

-k 保留原文件及压缩文件
xz :压缩文件 ,unxz =xz -d 解压 ,xzcat 不解压直接查看
后缀.xz

-k :保留原文件及压缩文件
-# 指定压缩比 ,范围1-9

归档工具:
tar [options] -f file.tar file1
-cf :创建归档# tar -cf boot.tar /boot/ 直接对目录进行归档
-xf :展开归档 # tar -xf boot.tar.bz2 直接展开进行归档
-tf :不展开而直接查看被归档的文件
归档,解压

-zcf ;-zxf :.gz
-jcf ,-jxf :.bz2
-Jcf ,-Jxf :.xz

[root@Study ~]# ls
anaconda-ks.cfg  boot  install.log  install.log.syslog  messages
[root@Study ~]# zip boot.zip /boot/    归档压缩/boot 目录为boot.zip文件
adding: boot/ (stored 0%)
[root@Study ~]# unzip boot.zip
Archive:  boot.zip
creating: boot/
[root@Study ~]# gzip messages
[root@Study ~]# ls
anaconda-ks.cfg  boot  boot.zip  install.log  install.log.syslog  messages.gz
[root@Study ~]# gunzip messages.gz
[root@Study ~]# ls
anaconda-ks.cfg  boot  boot.zip  install.log  install.log.syslog  messages
[root@Study ~]# bzip2 messages
[root@Study ~]# ls
anaconda-ks.cfg  boot  boot.zip  install.log  install.log.syslog  messages.bz2
[root@Study ~]# bunzip2  messages.bz2
[root@Study ~]# ls
anaconda-ks.cfg  boot  boot.zip  install.log  install.log.syslog  messages
[root@Study ~]# xz messages
[root@Study ~]# ls
anaconda-ks.cfg  boot  boot.zip  install.log  install.log.syslog  messages.xz
[root@Study ~]# unxz messages.xz
[root@Study ~]# ls
anaconda-ks.cfg  boot  boot.zip  install.log  install.log.syslog  messages
[root@Study ~]# tar -zcf boot.tar.gz ./boot
[root@Study ~]# ls
anaconda-ks.cfg  boot  boot.tar.gz  boot.zip  install.log  install.log.syslog  messages
[root@Study ~]# tar -zxf boot.tar.gz
[root@Study ~]# ls
anaconda-ks.cfg  boot.tar.gz  etc.tar.gz   install.log.syslog
boot             boot.zip     install.log  messages
[root@Study ~]# tar -jcf boot.tar.bz2 ./boot
[root@Study ~]# ls
anaconda-ks.cfg  boot.tar.bz2  boot.zip    install.log         messages
boot             boot.tar.gz   etc.tar.gz  install.log.syslog
[root@Study ~]# tar -jxf boot.tar.bz2
[root@Study ~]# ls
anaconda-ks.cfg  boot.tar.bz2  boot.zip    install.log         messages
boot             boot.tar.gz   etc.tar.gz  install.log.syslog
[root@Study ~]# tar -Jcf boot.tar.xz ./boot
[root@Study ~]# ls
anaconda-ks.cfg  boot.tar.bz2  boot.tar.xz  etc.tar.gz   install.log.syslog
boot             boot.tar.gz   boot.zip     install.log  messages
[root@Study ~]# tar -Jxf boot.tar.xz
[root@Study ~]# ls
anaconda-ks.cfg  boot.tar.bz2  boot.tar.xz  etc.tar.gz   install.log.syslog
boot             boot.tar.gz   boot.zip     install.log  messages


[b][b]本章blog知识点汇总[/b][/b]

文件系统磁盘管理命令: fdisk ,mke2fs ,e2label ,blkid ,dumpe2fs ,tune2fs ,e2fsck
交换分区命令:mkswap ,swapon ,swapoff ,free
磁盘挂载命令: mount , fuser ,df ,du ,
dd复制命令与链接: dd , ln
压缩归档命令: zip ,gunzip ,gzip ,gunzip ,bzip2 ,bunzip2 ,xz ,unxz ,xzcat ,tar -jcf|-Jcf|-zcf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐