磁盘,文件系统管理

Posted 菜鸟也有高飞的时候

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘,文件系统管理相关的知识,希望对你有一定的参考价值。

磁盘设备文件属性中有主设备号和次设备号,主设备号标识设备类型,次设备号标识同一种类型中不同的设备,
b开头的是按块为单位,随机访问的设备,c开头的是按字符为单位,线性设备,利用mknod命令可以创建设备文件

硬盘设备在linux中的命令为:#表示a,b,c。。。等等来区别同一种类型下的不同设备
IDE,ATA:hd#
SATA:sd#
SCSI:sd#
USB:sd#

管理磁盘分区:
fdisk -l 查看当前系统识别了几块硬盘
fdisk /dev/磁盘文件名
  p: 显示当前硬件的分区,包括没保存的改动
  n: 创建新分区
  e: 表示扩展分区
  p: 表示主分区
  d: 删除一个分区
  w: 保存退出
  q: 不保存退出
  t: 修改分区类型
  L: 跟t显示就用大写L
  l: 显示所支持的所有类型

在创建分区之后可以查看/proc/partitions这个文件中没有相对应分区文件,如果没有可以使用partprobe
或者partx让内核重新读取分区表

在创建完成后必须对其分区进行高级格式化,也就是创建文件系统类型才可以使用。
可以使用mkfs -t FILETYPE(文件系统类型)

在linux上也用一些专门管理ext系列的文件:
mke2fs:
  -j:创建ext3文件系统
  -b:指定块大小,默认为4096,也可以取值为1024,2048
  -L:指定分区的卷标
  -m #:指定预留给超级用户的块数百分比
  -i #:指定用多少字节的空间创建一个inode
  -N #:指定创建多少个inode
  -F:强制创建文件系统
  -E:用于指定额外的文件系统属性

e2label:可以查看或定义卷标
e2label /dev/xxx
e2label /dev/xxx LABEL_NAME

一般情况下重新格式化文件系统都会对文件系统有损坏,但有一些可以无损
可以用tune2fs:调整文件系统的相关属性,但是块大小不能改,只能重新分区
  -j:不损坏原有的数据,将ext2升级为ext3文件,但是没有降级,只要把文件系统的日志功能停用就行
  -L LABEL_NAME:设定或者修改分区的卷标
  -m #:调整预留百分比
  -r #:指定预留块数
  -o:设定默认挂载选项
    例如挂载使用ACL
  -c #:指定挂载次数达到#次之后进行自检,o或-1表示关闭此功能
  -i #:每挂载时候多少天后进行自检;0或-1表示关闭
  -l:显示超级块中信息

dumpe2fs:显示文件属性信息,除了显示超级块中的信息外还显示了块组的信息,用-h只显示超级块信息
e2fsck:专门修复ext2和ext3的,有个-f强制检查

有一个通用的修复命令
fsck:手动检查并修复linux文件系统
  -t TYPE:指定文件系统类型
  -a :自动修复(不询问你是否修复)

当想要查看分区上的文件系统是什么类型的时候。可以使使用blkid
blkid:查询或查看磁盘设备相关属性,其中一个就是文件系统的类型,UUID,卷标也可以显示出来



创建完文件系统之后我们就可以挂载使用了,那么什么是挂载呢?
在linux中,linux将文件存储在单个目录结构中,这个目录叫虚拟目录,虚拟目录中只包含一个称为根
目录的基础目录,安装在PC上的所有存储设备的文件路径都会纳入这个虚拟目录中,linux会在根驱动器
(PC上安装的第一块硬盘)创建一些特别的目录,叫做挂载点,这是虚拟目录用于分配额外存储设备的目
录,在使用新的存储媒体之前,将其放置在虚拟目录下,这个就叫做挂载

挂载:mount,如果是挂载swap分区的话,挂载点不是任何文件,就一个swap
用法:mount 设备 挂载点
  设备:
    设备文件:例如/dev/xxxx
    卷标:LABEL=XXX
     UUID:UUID=XXX
  挂载点:指定一个目录
    要求:
      1.此目录没有被其它进程使用
      2.目录得事先存在
      3.目录中原有的文件将会暂时隐藏;
单独使用mount的话可以显示当前系统已经挂载的设备已经挂载点,mount命令,也可以挂载iso镜像;
带选项的用法:
mount 【options】 【-o options(挂载文件系统的功能选项)】
  -a:表示挂载/etc/fstab文件中定义的所有文件系统
  -n:默认情况下,mount命令每挂载一个设备,就会将挂载的信息保存在/etc/mtab,使用这个选项的
    话就不会把挂载的信息保存在这个文件里
  -t FILETYPE:指定正在挂载设备上的文件系统类型,不使用的话,mount会调用blkid命令获取对应文件
  -r:只读挂载,挂载光盘时常用这个
  -w:读写挂载
  -o:指定额外的挂载选项,也即指定文件系统启用的属性
  remount:重新挂载当前文件系统
    ro:
    rw:


umount:卸载文件系统
umount 设备或挂载点
卸载注意事项:
挂载的设备没有进程使用
swap分区:相当于windows中的页交换文件,用于当内存满的时候,作为与内存交互的,存放内存中的一些数据
linux一般只有在内存满的时候才会用到swap这个分区
使用free可以查看物理内存和交换空间的使用情况


如何创建一个swap分区呢?
用fdisk创建一个分区,然后将分区类型调整为82

创建交换分区:
mkswap /dev/xxxx
  -L LABEL
  
swapon /dev/xxxx:启用swap分区
  -a:启用所有的定义在/etc/fstab文件中的交换设备
swapoff /dev/xxxx:关闭swap分区

dd命令:
  if=数据来源
  of=数据存储目标
  bs=#(复制的大小)
  count=#(复制几个字节)
  seek=#: 创建数据文件时,跳过的空间大小;

例如:
  dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1(复制MBR)
  dd if=/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1  
  dd if=/dev/zero(泡泡设备,会吐一大堆0) of=/var/swapfile bs=1M count=1024
/dev/zero和/dev/null文件相反

当swap分区不够用了,可以在磁盘的其他地方创建一个swap分区应急,但是性能会更差
  1.dd if=/dev/zero(泡泡设备,会吐一大堆0) of=/var/swapfile bs=1M count=1024
  2.mkswap /var/swapfile创建交换分区
  3.调整分区类型
  4.swapon /var/swapfile启用这个分区文件


如果想要卸载的文件,发现处于busy,怎么都卸载不了的话可以使用fuser这个命令,
fuser:
  -v:查看某文件上正在运行的进程
  -k:单指文件
  -m:一般和-k配合使用卸载挂载点
    fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程

以上是关于磁盘,文件系统管理的主要内容,如果未能解决你的问题,请参考以下文章

磁盘和文件系统管理

磁盘分区和文件系统管理

linux的磁盘管理与文件系统!

Linux系统中进行磁盘管理的常用命令都有哪些

Linux命令——磁盘操作及文件系统的管理

linux的磁盘管理与文件系统