分區、格式化建立了文件系統後就能夠掛載了node
掛載:將新的文件系統關聯至當前根文件系統linux
卸載:將某文件系統與當前根文件系統的關聯關係移除ios
使用方法:緩存
mount 設備 掛載點bash
設備:能夠是設備文件【如:/dev/sda5】、能夠是卷標【如:LABEL=""】、或者是UUID【如:UUID=""】ide
掛載點:指定掛載的目錄,該目錄的要求是:沒有被其餘進程使用,而且原有的文件將會被隱藏oop
掛載的時候有兩個目錄/media通常掛載移動便攜式的設備,/mnt掛載額外的設備或者額外的分區測試
[root@localhost /]# ls bin etc lost+found mnt proc selinux tmp boot home media net root srv usr dev lib misc opt sbin sys var [root@localhost /]# mkdir /mnt/test [root@localhost /]# mount /dev/sdb /mnt/test mount: you must specify the filesystem type [root@localhost /]# mount /dev/sdb1 /mnt/test [root@localhost /]# ls -l /mnt/test 總用量 16 drwx------. 2 root root 16384 4月 24 18:29 lost+found
新掛載的文件系統裏面有個last+found目錄,這就表明掛載成功了。spa
使用方法:code
umount 設備、umount 掛載點
注意事項:卸載的設備沒有被使用
[root@localhost /]# cd /mnt/test [root@localhost test]# umount /dev/sdb^C [root@localhost test]# umount /mnt/test umount: /mnt/test: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@localhost ~]# cd .. [root@localhost /]# umount /mnt/test
mount:顯示當前系統已掛載的設備及掛載點
用法:
mount options [-o options] 設備 掛載點 ,在這-o options 表明的是功能選項,磁盤掛載時帶有什麼功能【好比.EXE文件是否掛載就執行,是否容許使用SUID..等等】
-a:掛載/etc/fstab文件中定義的全部文件系統
-n:默認狀況下,mount命令每掛載一個設備,都會把設備掛載的信息保存至/etc/mtab文件:使用-n選項意味着掛載設備時,不把信息寫入此文件【小型linux可使用此選項】
-t FSTYPE:指定正在掛載設備上的文件系統類型,若是不指定mount會自動調用blkid命令獲取對應的文件系統類型;
-r:只讀掛載,掛載光盤時經常使用此選項
-w:讀寫掛載
-o:指定額外的掛載選項,也即指定文件系統啓用的屬性【remount從新掛載指定文件系統,ro也是能夠掛載爲只讀】
[root@localhost dev]# mount /dev/sdb1 /mnt/test [root@localhost dev]# 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/sda5 on /home type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sdb1 on /mnt/test type ext2 (rw)【剛剛掛載的,默認爲讀寫】 [root@localhost dev]# mount -o ro,remount /dev/sdb1【從新掛載爲只讀】 [root@localhost dev]# 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/sda5 on /home type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sdb1 on /mnt/test type ext2 (ro)【只讀】
free命令用來查看內存、緩衝區、緩存、swap的使用狀況
緩衝區存的是源數據,緩存是數據。
咱們的數據先是在緩衝區,當緩衝區不常常使用就放進了緩存。當數據取出的時候也先去通過緩衝區。buffers存的是inode的對應文件的路徑【要找某個數據先要找inode,因此就把不用inode先放在緩衝區】,cached存的inode對應的塊,他們都是內存中的當咱們關閉的時候cached就會保存進磁盤。這樣經過buffers和cached能使CPU和內存I/O更快。
[root@localhost ~]# free -m【以M(兆)的方式顯示】 total used free shared buffers cached Mem: 1006 246 759 1 37 102 -/+ buffers/cache: 107 899 Swap: 2047 0 2047
在上面發現:246-107=37+102,這說明被使用的內存包括buffers和cached,-/+ buffers/cache的意思就是緩衝區和緩存被減去後等於真正的使用的內存;同理 free也是這意思899-759=1+37+102。
下面是執行的操做,具體建立分區的知識在前面的文章有記錄
[root@localhost ~]# 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): p【查看現有的分區】 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 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: 0xd25c91c2 Device Boot Start End Blocks Id System /dev/sdb1 1 200 1606468+ 83 Linux /dev/sdb2 201 462 2104515 83 Linux Command (m for help): n【建立一個新的分區】 Command action e extended p primary partition (1-4) p Partition number (1-4): 3【分區編號3】 First cylinder (463-1305, default 463): Using default value 463 Last cylinder, +cylinders or +size{K,M,G} (463-1305, default 1305): +1G Command (m for help): t【改變分區的類型默認是Linux】 Partition number (1-4): 3 Hex code (type L to list codes): L【查看有哪些類型,發現82是交換分區】 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- ... ... Hex code (type L to list codes): 82【指定爲82】 Changed system type of partition 3 to 82 (Linux swap / Solaris) Command (m for help): p【打印看看】 Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 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: 0xd25c91c2 Device Boot Start End Blocks Id System /dev/sdb1 1 200 1606468+ 83 Linux /dev/sdb2 201 462 2104515 83 Linux /dev/sdb3 463 594 1060290 82 Linux swap / Solaris【swap類型了】 [root@localhost ~]# partprobe /dev/sdb【讓內核識別】
上面的調整系統類型也可使用fdisk命令,調整爲82
上面只是建立了一個分區,還須要建立文件系統,可是建立文件系統不是用mkfs命令,有單獨的mkswap命令
使用方法:
mkswap /dev/sdb3
L LABEL:指定卷標
[root@localhost ~]# mkswap /dev/sdb3 Setting up swapspace version 1, size = 1060284 KiB no label, UUID=4a4ecd7c-9106-4fd5-a093-53fac01c1425
按照平時分區的建立到使用,最後須要掛載,可是swap分區用swapon和swapoff
[root@localhost ~]# swapon /dev/sdb3 [root@localhost ~]# free -m total used free shared buffers cached Mem: 1006 246 759 1 37 102 -/+ buffers/cache: 106 899 Swap: 3083 0 3083 [root@localhost ~]# swapoff /dev/sdb3 [root@localhost ~]# free -m total used free shared buffers cached Mem: 1006 246 759 1 37 102 -/+ buffers/cache: 106 900 Swap: 2047 0 2047
如今遇到須要增長swap分區,可是磁盤沒有多餘的空間來增長新的分區了,這個時候能夠在已經存在的分區中經過軟件模擬出一個新的分區,這種用軟件模擬硬件的方式叫使用迴環設備【本地迴環...】
要模擬硬盤須要建立鏡像文件,這時候用到了一個dd的命令
dd命令也是能夠進行復制的,可是它與copy的區別就是,copy是文件層次的,它經過vfs把文件從一個目錄複製到另外一個目錄;而dd複製的是底層的數據流,不用通過vfs,能夠單獨指定複製文件的多少字節。利用這一點能夠刻錄光盤,cat命令的重定向也能夠刻錄光盤。
使用方法:
if=數據來源 of 數據存儲目標 bs=1 count=2 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【還原MBR】
cat /dev/cdrom > /root/rehl5.ios【cat命令也能夠製做ios鏡像】
dd if=/dev/zero of=/var/swapfile bs=1M count=1024【這就製做出了一個1G的文件,zero和/dev/null恰好相反,/dev/zero稱爲泡泡設備,不停的向外面吐0要多少有多少,/dev/null有多少吸多少】
[root@localhost ~]# cd /tmp [root@localhost tmp]# touch a.txt [root@localhost tmp]# dd if=/tmp/a.txt of=~/a.txt 記錄了0+0 的讀入 記錄了0+0 的寫出 0字節(0 B)已複製,0.024979 秒,0.0 kB/秒 [root@localhost tmp]# ls ~ anaconda-ks.cfg a.txt install.log install.log.syslog
建立一個模擬的設備【我這空間不足,因此是685M】
[root@localhost tmp]# dd if=/dev/zero of=/var/swapfile bs=1M count=1024 dd: 正在寫入"/var/swapfile": 設備上沒有空間 記錄了653+0 的讀入 記錄了652+0 的寫出 684630016字節(685 MB)已複製,123.871 秒,5.5 MB/秒 [root@localhost tmp]# mkswap /var/swapfile mkswap: /var/swapfile: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 668580 KiB no label, UUID=00bf638a-45e0-4d4e-831b-81c78e438409 [root@localhost tmp]# swapon /var/swapfile [root@localhost tmp]# ls -lh /var/swapfile -rw-r--r--. 1 root root 653M 4月 25 20:34 /var/swapfile [root@localhost tmp]# free -m total used free shared buffers cached Mem: 1006 911 94 1 38 756 -/+ buffers/cache: 117 889 Swap: 2700 0 2700
dd if=/dev/zero of=/var/swapfile bs=1M count=1 seek=1023 看上去是1G實際就1M,並且裏面能夠分區,咱們的虛擬機就是這個技術,開始很小當在裏面存東西時開始變大,可是不會超過1G
[root@localhost tmp]# dd if=/dev/zero of=/var/swapfile bs=1M count=1 seek=1023 記錄了1+0 的讀入 記錄了1+0 的寫出 1048576字節(1.0 MB)已複製,0.0201953 秒,51.9 MB/秒 [root@localhost tmp]# ls -lh /var/swapfile -rw-r--r--. 1 root root 1.0G 4月 25 20:51 /var/swapfile [root@localhost tmp]# du -lh /var/swapfile 1.0M /var/swapfile
上面模擬的迴環設備被交換分區swapon掛載使用了,mount -o loop也能夠對普通文件看成循環設備掛載使用
mount -o loop /root/xxx.ios -o loop /media/ 【若是不使用-o loop 這個ios文件就被看成普通文件,不會讓掛載的】
-a:啓用全部定義在/etc/fstab文件中的交換設備
文件系統的配置文件/etc/fstab,在這個文件中的設備,在開機初始化的時候會被自動掛載
[root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Apr 16 23:17:03 2017 # # 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=642e838a-71a8-429d-bef0-6345823e176f / ext4 defaults 1 1 UUID=9f56821a-81ac-4f4a-82a4-194331878494 /boot ext4 defaults 1 2 UUID=5c7e35c4-b59e-41ec-88d7-71790848c4ec /home ext4 defaults 1 2 UUID=cac77075-c514-4aac-af26-4cfd5af900e0 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
第一個字段是要掛載的設備【UUID,設備路徑,卷標】,第二個字段是掛載點,第三個字段是文件系統類型,第四個字段是mount -o的功能選項,第五個字段是轉儲頻率【每多少天一次備份,0是不備份,1是天天一次備份,如今用的不多,常使用備份軟件】,最後一個字段是文件系統檢測次序,開機的時候誰率先檢查通常根爲1,其餘的能夠同時爲2,同時爲3,0表示不檢查
mount -a 是掛載這個表的全部設備
[root@localhost ~]# vi /etc/fstab【添加一個設備/dev/sdb1】 [root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Apr 16 23:17:03 2017 # # 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=642e838a-71a8-429d-bef0-6345823e176f / ext4 defaults 1 1 UUID=9f56821a-81ac-4f4a-82a4-194331878494 /boot ext4 defaults 1 2 UUID=5c7e35c4-b59e-41ec-88d7-71790848c4ec /home ext4 defaults 1 2 UUID=cac77075-c514-4aac-af26-4cfd5af900e0 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 /dev/sdb1 /mnt/test ext2 defaults 0 0【添加一行】 [root@localhost ~]# mount -a【掛載/etc/fstab全部設備】 [root@localhost ~]# mount【查看已經掛載的設備或者cat /etc/mtab】 /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/sda5 on /home type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sdb1 on /mnt/test type ext2 (rw) [root@localhost ~]# ls -l /mnt/test【lost+found表明掛載成功】 總用量 16 drwx------. 2 root root 16384 4月 24 18:29 lost+found
咱們每掛載一個設備,都會記錄在/etc/mtab下,不想讓它記錄可使用mount -n選項
驗證進程正在使用的文件或套接字文件
例如:我剛剛掛載了一個設備,就是爲了測試,這個設備剛剛掛上就被某個用戶或某個進程使用了,這時候使用umount沒法卸載,可使用fuser查看哪些用戶或進程正在使用,並殺死進程而後umount卸載
-v:查看某文件上正在運行的進程
-k:殺死那個進程【殺死的只是一個文件,還須要-m選項】
-m:全部使用該掛載點的進程
fuser -m /dev/sda1 #顯示全部使用sda1的進程
fuser -km /dev/sda1 #殺死全部使用sda1的進程
[jiakang@localhost root]$ cd /mnt/test【我用另外一個用戶進入該分區】 [root@localhost ~]# fuser -v /mnt/test【查看】 用戶 進程號 權限 命令 /mnt/test: jiakang 3468 ..c.. bash [root@localhost ~]# fuser -km /mnt/test 【殺死進程】 /mnt/test: 3468c [jiakang@localhost test]$ 已殺死 (core dumped)【jiakang用戶被殺死,剔除bash進程】 [root@localhost ~]# umount /mnt/test【卸載】
歡迎訪問原文博客:http://www.51aixue.cn/2017/04...