磁盘,文件系统管理
磁盘设备文件属性中有主设备号和次设备号,主设备号标识设备类型,次设备号标识同一种类型中不同的设备,
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:终止正在访问此挂载点的所有进程