这篇文章主要讲解了“Linux磁盘分区及文件系统管理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux磁盘分区及文件系统管理”吧!
一、Linux磁盘
iops : io per second 磁盘接口类型: IDE : 并口,在高频下容易出错,133MB/s; SATA : 串口,可高频,6gbps(1gbps=128MB/s) SCIS : 并口,ultrascsi320 ,320MB/s SAS : 串口,6gbps USB : 串口,480MB/s
硬盘类型: 机械硬盘 track :磁道 sector:扇区 cylinder: 柱面,分区基于柱面; 平均寻道时间: 5400rpm,7200rpm,10000rpm,15000rpm (铀分离的设备的转速达到30000rpm,机械硬盘这个转速已经很厉害了) 高转速产生大量的热能,任何微小的尘粒在如此高转速下都会对硬盘造成影响)
linux的设备类型: 块(block) : 随机访问; 字符(character):线性访问;
设备文件: FHS /dev 设备文件: 关联至设备的驱动程序,设备的访问入口; 设备号: major:主设备号,区分设备类型,用于标明设备所需要的驱动程序; minior:次设备号,区分同种类型下的不同的设备,是特定设备的访问入口; 设备文件名 磁盘: IDE:/dev/hd[a-z] SCSI,SATA,SAS,USB: /dev/sd[a-z] 注意: Centos6和7统统将磁盘设备文件标识/dev/sd【[a-z]# 如 /dev/sda /dev/sda1,/dev/sda2;... 引用设备的方式: 设备文件名,卷标,UUID
磁盘分区:
MBR及其使用: MBR: Master Boot Record 特点: 占据磁盘0号sector,512bytes,分为三部分: 446bytes:bootloader程序,引导启动操作系统; 64bytes : 分区表,每16个bytes标识一个分区,一共只有4个分区; 4个主分区或者3主+1个扩展分区(多个逻辑分区); 2bytes : MBR区域的有效性标识,55AA为有效;
GPT及其使用。
GPT:Globally Unique IdentifierPartition Table Format 全局唯一标识符分区表。 特点: 驱动器上的每个分区都有一个全局唯一的标识符; 支持几乎无限个分区数量,除非操作系统作出了限制; MBR占用的第一个sector现在是LBA0,GPT使用了34个LBA区块来纪录分区信息(第一个sector依然兼容的MBR); GPT 除了前面34个LBA 之外,整个磁盘的最后33个LBA也拿来作为另一个备份。 LBA0 (MBR 相容区块)与MBR模式相近,前446B还是boot loader,后64B换成一个特殊标记,用于表面此磁盘是GPT格式。 LBA1 (GPT 表头纪录)纪录分区表本身的位置与大小,备份 GPT 分区 放置的位置,以及校验码 LBA2-33 (实际纪录分区信息处)从LBA2区块开始,每个LBA都可以纪录4个分区纪录,所以在默认的情况下,总共可以有4^32 = 128个分区纪录
传统BIOS---->MBR格式。 UEFI ---->MBR格式+GPT格式 (Unified Extensible Firmware Interface:统一的可扩展固件接口)
linux下GPT分区:
这里使用parted命令,fdisk也有gpt分区操作。 (1)[root@localhost tmp]#parted; (2)help; (3)select device; (4)mklabel gpt; (5)mkpart; ---输入分区名字; ---文件系统; ---起始点,不要用0开头; ---终结点; ---起始点,可以用#G; 此时已经分区成功 (6)print 查看 (7)quit
[root@localhost tmp]# partedGNU Parted 3.1Using /dev/sdaWelcome to GNU Parted! Type 'help' to view a list of commands.(parted) select /dev/sddUsing /dev/sdd(parted) mklabel gptWarning: The existing disk label on /dev/sdd will be destroyed and all data onthis disk will be lost. Do you want to continue?Yes/No? yes (parted) mkpart Partition name? []? mygpd_data File system type? [ext2]? ext4 Start? 1 End? 2G (parted) printModel: VMware, VMware Virtual S (scsi)Disk /dev/sdd: 2147MBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start End Size File system Name Flags 1 1049kB 2146MB 2145MB mygpd_data
二、fdisk命令
1.查看 fdisk -k device 2.管理 fdisk device fdisk 提供了一个交互式接口来管理分区,具有多个子命令;所有操作均在内存中完成; 没有直接同步到磁盘,直到使用w命令保存到磁盘上; 注意: 在已经分区并且已挂载其中某个分区的磁盘设备上创建新的分区,内核可能在其创建完成后无法识别; 查看: cat /proc/partitions 通知内核,强制读取磁盘分区: centos5: partprobe device; centos6.7: partx -a device kpartx -a device 分区创建工具:parted ; sfdisk
三、文件系统创建
格式化: 低级格式化,分区之前,划分磁道; 高级格式化,分区之后对分区创建文件系统, superblock,i节点inode table,数据块data block,目录块directory block, 间接块indirection blockblock ,位图索引inode bitmap,block bitmap; 元数据区+实际数据区 元数据区:inode table 文件元数据:文件大小,权限、宿主宿组、时间戳、数据块指针等,不记录文件名; 元数据区对每一个文件的信息记录格式是统一的,给出一个模板然后根据文件的实际情况填写而已; 数据块指针的记录内容是有限的,决定了文件的大小上限。根据数据块指针到数据区取得文件的实际数据。 符合链接文件:存储数据指针的空间中存储了文件的真实访问路径。 设备文件: 存储数据指针的空间中存储了设备号。 这两种文件都不占据数据区。
VFS: Virtual File System 解决不同文件系统之间的互认问题。
Linux文件系统: ext2,ext3,ext4,xfs,btrfs 光盘: ISO9660 网络文件系统: nfs,clfs 集群文件系统: gfs2,ocfs2 内核级分布式文件系统: ceph windows文件系统:vfat,ntfs windows无法识别linux的文件系统,因此,存储设备在需要两种系统之间交叉使用时, 应使用两者同时支持的文件系统:vfat # mkfs.vfat device 注意: U盘格式为ntfs的话,可以用一个NTFS-3G的插件,安装后linux可以支持NTFS文件,linux将其识别为ntfs-3g文件系统 ntfs-3g-ntfsprogs-2011.3.32.tgz 解压后执行./config make makeinstall 编译安装 若U盘被识别为sda3设备,则执行如下指令 #mount -t ntfs-3g /dev/sda /mnt/win 伪文件系统:proc,sysfs,tmpfs,hugepagefs 用户空间的分布式文件系统: mogilefs,moonsefs,glusterfs
交互文件系统:swap; linux上交互分区必须使用独立的文件系统,该system ID必须为82,通过fdisk上的t进行设置; 创建swap文件系统: mkswap device 启用 : swapon devcie -a : 启用在/etc/fstab文件中所有的swap设备。 禁用 : swapoff devcie 创建一个大小为1G的swap分区,并启用。
[root@localhost ~]# fdisk /dev/sdeCommand (m for help): nPartition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): pPartition number (1-4, default 1): 1First sector (2048-4194303, default 2048): Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): +1G Partition 1 of type Linux and of size 1 GiB is setCommand (m for help): tSelected partition 1Hex code (type L to list all codes): 82Changed type of partition 'Linux' to 'Linux swap / Solaris'Command (m for help): wThe partition table has been altered![root@localhost ~]# mkswap /dev/sde1Setting up swapspace version 1, size = 1048572 KiBno label, UUID=adcb05b1-3368-4e97-80c8-7ed13e959c63[root@localhost etc]# free -m total used free shared buff/cache availableMem: 3778 380 166 6 3231 3140Swap: 2047 6 2041[root@localhost etc]# swapon /dev/sde1[root@localhost etc]# free -m total used free shared buff/cache availableMem: 3778 381 165 6 3231 3139Swap: 3071 6 3065
四、文件系统使用
1.创建文件系统工具: mkfs mkfs.ext2; mkfs.ext3; mkfs.ext4; mkfs.xfs; 查看文件系统类型: blkid device; mke2fs命令 mke2fs [OPTIONS] device -t {ext2|ext3|ext4} -b {1024|2048|4096} -L LABEL卷标 -j 创建日志功能文件系统ext3 -i # 多少个字节一个inode -N # 创建inode的总数 -m # 预留空间,百分表 -O [^] 以指定的特性创建目标文件系统;
练习:创建一个1G的分区,并格式化为ext4文件系统。要求:(1)block大小为2048,预留空间20%,卷标为MYDATA,
[root@localhost tmp]# fdisk /dev/sde Command (m for help): nPartition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): pPartition number (1-4, default 1): 1First sector (2048-4194303, default 2048): Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): +1GPartition 1 of type Linux and of size 1 GiB is setCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.root@localhost tmp]# mke2fs -t ext4 -b 2048 -L MYDATA -m 20 /dev/sde1mke2fs 1.42.9 (28-Dec-2013)Filesystem label=MYDATAOS type: LinuxBlock size=2048 (log=1)Fragment size=2048 (log=1)Stride=0 blocks, Stripe width=0 blocks65536 inodes, 524288 blocks104857 blocks (20.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=26895974432 block groups16384 blocks per group, 16384 fragments per group2048 inodes per groupSuperblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): doneWriting superblocks and filesystem accounting information: done
2.文件系统挂载与卸载
挂载与卸载: mount umount 根文件系统外的其它文件系统,要想能够被访问到,都必须通过‘关联’至根文件系统上的某个目录来实现, 此‘关联’操作即‘挂载’,此目录即为挂载点。 挂载点: mount point 用于作为另一个文件系统的访问入口 (1): 事先存在; (2): 应用使用未被或或不会被其它目录进程使用的目录; (3): 挂载点下原有的文件建会被隐藏; 思考一个问题:将一个装有linux系统的磁盘(根文件系统A)接到另一台linux系统(B)的设备上,然后挂载在B系统一个目录下, B上的某用户(root或者普通用户)对A文件的读写执行权限?
mount [-fnrsvw] [-t vfstype] [-o options] device dir -r: 只读 -w: 读写(默认选项) -n: 禁止同步(默认情况下,设备挂载与卸载都同步到/etc/mtab中) -t --vfstype: 指定文件类型 -L --LABEL: 以label方式指明设备 -U --UUID : 以uuid方式指明设备 -o : 自动挂载所有支持自动挂载的设备 sync/async: 同步/异步 atime/noatime: 是否更新其访问的时间戳 diratime/nodiratime: 只针对目录时间戳 remount: 重挂 acl: 支持使用acl功能 #mount -o acl device dir #mount -o alc device ro:只读 rw:读写 exec/noexec 是否允许运行此设备上的文件 使用技巧:mount --bind 源目录 目标目录, 可以实现将目录绑定至另一个目录上,作为其临时访问入口。
查看当前系统所有已挂载设备: # mount # cat /etc/mtab # cat /proc/mounts
umount [-dflnrv] {dir|device}... 正在被进程访问的挂载点无法被卸载 查看被何进程使用: #lsof mount_point #fuser -v mount_point [root@localhost /]# fuser -v /dev/sde1USER PID ACCESS COMMAND/dev/sde1: root kernel swap /dev/sde1
除根文件以为的其它文件开机自动挂载
/etc/fstab
UUID=795d1641-c4f8-4f72-911b-6eedfe2ac733 / xfs defaults 0 0UUID=ecde1354-5470-4692-bc2b-9cc94bd3b11c /boot xfs defaults 0 0UUID=ad488060-c1c6-4871-a8e2-228de0b90457 swap swap defaults 0 0
(1)要挂载的设备:设备文件,LABEL,UUID,伪文件系统 (2)挂载点,swap类型的挂载点为swap (3)文件系统类型 (4)挂载选项 (5)转储频率,0从不,1每天,2每隔一天 (6)自检次序
接上面的练习: (2) 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。 (3)可开机自动挂载。
[root@localhost mydata]# mount -o noatime noexec -L MYDATA /mydata ---错误,o后面的参数以,分隔[root@localhost mydata]# mount -o noatime,noexec -L MYDATA /mydata[root@localhost /]# vim /etc/fstab UUID=795d1641-c4f8-4f72-911b-6eedfe2ac733 / xfs defaults 0 0UUID=ecde1354-5470-4692-bc2b-9cc94bd3b11c /boot xfs defaults 0 0UUID=ad488060-c1c6-4871-a8e2-228de0b90457 swap swap defaults 0 0LABEL=MYDATA /mydata ext4 defaults 0 0
感谢各位的阅读,以上就是“Linux磁盘分区及文件系统管理”的内容了,经过本文的学习后,相信大家对Linux磁盘分区及文件系统管理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!