挂载mount
挂载就是将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为。当一个挂载点挂载有设备时,原有文件会不可见(并不是隐藏也没有覆盖),所以为了合理利用磁盘空间,挂载点尽量为空。
mount命令
语法:mount [选项] 设备 挂载点
设备即可以使用设备文件、卷名和 UUID,也可以是文件。
设备挂载到文件夹:
[root@CentOS6 ~]#mount -r /dev/sdb1 /mnt/sdb1/ #以只读模式挂载 [root@CentOS6 ~]#df /dev/sdb1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb1 5039592 10264 4766668 1% /mnt/sdb1 [root@CentOS6 data]#mount -o remount,rw /dev/sdb1 #重新挂载时以读写模式挂载 [root@CentOS6 data]#mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sda1 on /boot type ext4 (rw) /dev/sda3 on /data type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev) /dev/sr0 on /media/CDROM type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500) /dev/sdb1 on /mnt/sdb1 type ext4 (rw)
df命令用于查看文件系统的空间占用等信息。
语法:df [选项] [FS]
[root@CentOS6 ~]#df /dev/sda1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 999320 35032 911860 4% /boot [root@CentOS6 ~]#df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 51475068 4774988 44078640 10% / tmpfs 502056 76 501980 1% /dev/shm /dev/sda1 999320 35032 911860 4% /boot /dev/sda3 3030800 626272 2247244 22% /data /dev/sr0 6049912 6049912 0 100% /media/CDROM
选项:
-T 文件系统类型
-h: 易读格式
-i:inode节点号
文件挂载到文件夹:
[root@CentOS6 data]#dd if=/dev/zero of=/data/mount_file bs=1M count=10 #生成一个10M大小的文件 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.256382 s, 40.9 MB/s [root@CentOS6 data]#mkfs.ext4 mount_file #在文件中创建文件系统 mke2fs 1.41.12 (17-May-2010) mount_file is not a block special device. Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 2560 inodes, 10240 blocks 512 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=10485760 2 block groups 8192 blocks per group, 8192 fragments per group 1280 inodes per group Superblock backups stored on blocks: 8193 Writing inode tables: done Creating journal (1024 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@CentOS6 data]#blkid mount_file mount_file: UUID="d7f21c36-3085-40c9-a26a-b365999cd543" TYPE="ext4" [root@CentOS6 data]#mkdir /data/test [root@CentOS6 data]#mount -o loop /data/mount_file /data/test #使用loop模式挂载 [root@CentOS6 data]#df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 51475068 4774612 44079016 10% / tmpfs 502056 76 501980 1% /dev/shm /dev/sda1 999320 35032 911860 4% /boot /dev/sda3 3030800 626252 2247264 22% /data /dev/sr0 6049912 6049912 0 100% /media/CDROM /dev/sdb1 5039592 10264 4766668 1% /mnt/sdb1 /data/mount_file 8887 92 8283 2% /data/test
dd命令用于读取、转换和输出数据。
语法:dd if=源文件 of=目标文件 bs=块大小 count=块数 skip=跳过源的块数 seek=跳过目标的块数
[root@CentOS6 ~]#dd if=/dev/sda of=/data/MBR bs=1 count=64 skip=446 #备份sda的分区表 64+0 records in 64+0 records out 64 bytes (64 B) copied, 0.000398679 s, 161 kB/s [root@CentOS6 ~]#hexdump -C /data/MBR -n 512 00000000 80 20 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 |. !...(....... .| 00000010 00 aa 29 82 83 fe ff ff 00 08 20 00 00 00 40 06 |..)....... ...@.| 00000020 00 fe ff ff 83 fe ff ff 00 08 60 06 00 00 60 00 |..........`...`.| 00000030 00 fe ff ff 05 fe ff ff 00 08 c0 06 00 f8 bf 05 |................| 00000040
conv=选项: 用指定的参数转换文件
选项:
ascii 转换EBCDIC 为ASCIIebcdic 转换ASCII 为EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空 NUL 字符补齐
修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的
文件夹挂载到文件夹:
[root@CentOS6 data]#mkdir mount1 mount2 [root@CentOS6 data]#mount -B mount1 mount2 [root@CentOS6 data]#ll -i total 540701 11 drwx------. 2 root root 16384 Mar 27 20:16 lost+found 4011 drwxr-xr-x. 2 root root 4096 Apr 1 18:04 mount1 4011 drwxr-xr-x. 2 root root 4096 Apr 1 18:04 mount2 #两个文件夹的inode号相同
选项:
-o:挂载文件系统的选项,多个选项使用逗号分隔
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,mount不可见
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备
-B, --bind: 绑定目录到另一个目录上
-o选项的子命令: 默认相当于rw, suid, dev, exec, auto, nouser, async
async:异步模式
sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
acl:启用此文件系统上的acl功能
loop: 使用loop设备
umount命令
在使用umount命令卸载设备时,一定要保证没有用户正在访问该设备,否则会导致数据的丢失甚至破坏!
1、查看挂载情况:
findmnt [选项] [设备\挂载点] 不填写设备、挂载点会显示当前所有正在挂载的信息
[root@CentOS6 data]# findmnt /dev/sda1 TARGET SOURCE FSTYPE OPTIONS /boot /dev/sda1 ext4 rw,relatime,seclabel,barrier=1,data=ordered [root@CentOS6 data]# findmnt TARGET SOURCE FSTYPE OPTIONS / /dev/sda2 ext4 rw,relatime,seclabel,barrier=1,data=ordered ├─/proc proc proc rw,relatime │ ├─/proc/bus/usb /proc/bus/usb usbfs rw,relatime │ └─/proc/sys/fs/binfmt_misc binfmt_misc rw,relatime ├─/sys sysfs sysfs rw,relatime,seclabel ├─/selinux selinuxfs rw,relatime ├─/dev devtmpfs devtmpfs rw,relatime,seclabel,size=487228k,nr_inodes=121807,mode=755 │ └─/dev devtmpfs devtmpfs rw,relatime,seclabel,size=487228k,nr_inodes=121807,mode=755 │ ├─/dev/pts devpts devpts rw,relatime,seclabel,gid=5,mode=620,ptmxmode=000 │ └─/dev/shm tmpfs tmpfs rw,relatime,seclabel ├─/boot /dev/sda1 ext4 rw,relatime,seclabel,barrier=1,data=ordered ├─/data /dev/sda3 ext4 rw,relatime,seclabel,barrier=1,data=ordered ├─/misc /etc/auto.misc autofs rw,relatime,fd=7,pgrp=1980,timeout=300,minproto=5,maxproto=5,indirect ├─/net -hosts autofs rw,relatime,fd=13,pgrp=1980,timeout=300,minproto=5,maxproto=5,indirect ├─/root/.gvfs gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=0,group_id=0 └─/media/CDROM /dev/sr0 iso9660 ro,nosuid,nodev,relatime,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500
选项:
-t 按照文件系统类型查找挂载
-l 列表显示
-s 显示/etc/fstab中的挂载情况
-m 显示/etc/mtab中的挂载情况
-t 显示内存中的挂载情况
2、查看正在访问指定文件系统的进程:
lsof [选项] [挂载点] 不填写挂载点会显示当前系统中所有正在使用的进程
[root@CentOS6 ~]#lsof /data COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 2866 root cwd DIR 8,3 4096 2 /data vim 3067 root cwd DIR 8,3 4096 2 /data vim 3067 root 4u REG 8,3 12288 4014 /data/.11.swp
fuser [选项] 挂载点
[root@CentOS6 ~]#fuser -v /data USER PID ACCESS COMMAND /data: root 2866 ..c.. bash root 3067 ..c.. vim [root@CentOS6 ~]#fuser -m /data #显示挂载点下的进程号 /data: 2866c 3067c [root@CentOS6 ~]#fuser -mk /data #kill掉进程号为 2866c 3067c 的进程 /data: 2866c 3067c
在保证没有用户访问设备后,便可以开始卸载
3、卸载
umount 设备/挂载点
[root@CentOS6 ~]#lsblk /dev/sdb1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb1 8:17 0 5G 0 part /mnt/sdb1 [root@CentOS6 ~]#umount /mnt/sdb1/ [root@CentOS6 ~]#lsblk /dev/sdb1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb1 8:17 0 5G 0 part
使用mount挂载的设备只是临时挂载,在系统重启后并不会保留挂载,因为“一切皆文件”…所以先要保持挂载不丢失,需要把挂载的信息保存在文件中。
/etc/fstab 每行保存一个挂载信息:
[root@CentOS6 ~]#cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Mar 27 20:18:32 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=481fa90c-b9f1-459b-ba67-f4f4c8d7942b / ext4 defaults 1 1 UUID=056668aa-7ecd-4235-8351-c8fb02372e3b /boot ext4 defaults 1 2 UUID=b98328eb-21c7-4114-b3d5-93cd4aec6bc8 /data ext4 defaults 1 2 UUID=5a1eda5a-2e54-4d0c-b8ea-ef99b9ac3417 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /root/p1 /mnt/p1 ext4 loop 0 0 /dev/sr0 /mnt/cdrom iso9660 defaults 0 0 /boot /mnt/boot none bind 0 0
格式为(以空格隔开):UUID 挂载点 文件系统 挂载选项 转存频率(实际没用,0不转存) 自检次序(0不自检)
挂载交换分区(swap)
[root@CentOS6 ~]#fdisk /dev/sdb 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 Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (655-2610, default 655): Using default value 655 Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +1G Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 82 Changed system type of partition 2 to 82 (Linux swap / Solaris) Command (m for help): p Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0xcc71f8ed Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 786 1060290 82 Linux swap / Solaris Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@CentOS6 ~]#mkswap /dev/sdb2 mkswap: /dev/sdb2: warning: don't erase bootbits sectors (dos partition table detected). Use -f to force. Setting up swapspace version 1, size = 1060284 KiB no label, UUID=eff8e5a5-c6eb-4304-bcae-998bea3915b5 [root@CentOS6 ~]#blkid /dev/sda1: UUID="056668aa-7ecd-4235-8351-c8fb02372e3b" TYPE="ext4" LABEL="bootdisk" /dev/sda2: UUID="481fa90c-b9f1-459b-ba67-f4f4c8d7942b" TYPE="ext4" /dev/sda3: UUID="b98328eb-21c7-4114-b3d5-93cd4aec6bc8" TYPE="ext4" LABEL="app" /dev/sda5: UUID="5a1eda5a-2e54-4d0c-b8ea-ef99b9ac3417" TYPE="swap" /dev/sdb1: UUID="b370716f-85f0-48e6-9d1e-6ff35444c362" TYPE="ext4" /dev/sdb2: UUID="eff8e5a5-c6eb-4304-bcae-998bea3915b5" TYPE="swap" [root@CentOS6 ~]#swapon /dev/sdb2 [root@CentOS6 ~]#free -h total used free shared buffers cached Mem: 980M 660M 320M 2.9M 30M 284M -/+ buffers/cache: 345M 634M Swap: 3.0G 0B 3.0G [root@CentOS6 ~]#echo "UUID=eff8e5a5-c6eb-4304-bcae-998bea3915b5 swap swap defaults 0 0" >> /etc/fstab
修改交换分区优先级:(数值越大,优先级越高)
查看 swap 优先级:
[root@CentOS6 ~]#swapon -s Filename Type Size Used Priority /dev/sda5 partition 2097148 0 -1 /dev/sdb2 partition 1060284 0 -2
修改优先级:修改 /etc/fstab 对应的行中挂载选项,添加“pri=数值”
UUID=eff8e5a5-c6eb-4304-bcae-998bea3915b5 swap swap defaults,pri=10 0 0
[root@CentOS6 ~]#swapoff /dev/sdb2 [root@CentOS6 ~]#swapon -a [root@CentOS6 ~]#swapon -s Filename Type Size Used Priority /dev/sda5 partition 2097148 0 -1 /dev/sdb2 partition 1060284 0 10
挂载外围设备
光盘的挂载与挂载设备一样,卸载弹出时使用 eject 命令。
创建ISO文件
将正在挂载光盘中的文件拷贝为一个后缀为 .iso 的文件即可
将一个文件或目录打包成为一个ISO镜像
[root@CentOS6 ~]#mkisofs -r -o data.iso /data …… [root@CentOS6 ~]#file data.iso data.iso: ISO 9660 CD-ROM filesystem data 'CDROM'
查看USB的挂载是否被识别 lsusb
du命令用于查看目录的空间使用情况。
语法:du [选项] [目录]
[root@CentOS6 ~]#du -sh /etc 42M /etc
选项:
--max-depth:统计深度
-h:易读格式
-s:总计显示