国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

linux中udev控制磁盤引導(dǎo)順序配置

2024-08-27 23:59:19
字體:
供稿:網(wǎng)友

磁盤引導(dǎo)對于我們使用windows的朋友來講是非常的簡單了,但在linux中有些復(fù)雜了,下文小編就為各位介紹udev控制磁盤引導(dǎo)順序配置.

vmware EXSi 虛擬化組的兄弟在對一臺虛擬機(jī)主新增了N塊磁盤后,重啟后發(fā)現(xiàn)主機(jī)引導(dǎo)后分區(qū)的順序發(fā)生了變化,導(dǎo)致各個掛載點下掛載的文件和之前不一致了,當(dāng)時給出的解決方法是在/etc/fstab文件中使用uuid,因為UUID不會變化.

一、uuid 與掛載點

1、使用blkid命令獲取UUID,代碼如下:

  1. [root@361way ~]# blkid 
  2. /dev/sda1: SEC_TYPE="msdos" UUID="F159-EA55" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ed7d2e13-8197-4226-8fdc-47d4aa64aebb" 
  3. /dev/sda2: LABEL="boot" UUID="f7755604-99f2-4d94-ab1a-47b14def7e26" TYPE="xfs" PARTUUID="627c028f-bf10-4705-b465-d5118d8ee67d" 
  4. /dev/sda3: UUID="Bs0vJv-cena-E9eO-2WcM-iJNQ-26Mr-fGG1pr" TYPE="LVM2_member" PARTUUID="18c50ff9-0e0d-40ac-8e2a-4f7f768347ed" 
  5. /dev/mapper/cl-root: UUID="b2f57437-ba99-4a2d-9c82-a41037aa0e38" TYPE="xfs" 
  6. /dev/mapper/cl-swap: UUID="2930b30d-3039-442d-a210-da1d7775652e" TYPE="swap" 
  7. /dev/mapper/cl-data: LABEL="data" UUID="cfc65b4e-0ca4-4b48-934e-5f668a4fb3b5" TYPE="xfs"  

2、查看/dev目錄獲取UUID,代碼如下:

  1. [root@361way ~]# ll /dev/disk/by-uuid/ 
  2. 總用量 0 
  3. lrwxrwxrwx 1 root root 10 11月 25 19:56 2930b30d-3039-442d-a210-da1d7775652e -> ../../dm-1 
  4. lrwxrwxrwx 1 root root 10 11月 25 19:56 b2f57437-ba99-4a2d-9c82-a41037aa0e38 -> ../../dm-0 
  5. lrwxrwxrwx 1 root root 10 11月 25 19:56 cfc65b4e-0ca4-4b48-934e-5f668a4fb3b5 -> ../../dm-2 
  6. lrwxrwxrwx 1 root root 10 11月 25 19:56 F159-EA55 -> ../../sda1 
  7. lrwxrwxrwx 1 root root 10 11月 25 19:56 f7755604-99f2-4d94-ab1a-47b14def7e26 -> ../../sda2 

3、修改/etc/fstab文件,使用uuid,代碼如下:

  1. [root@361way ~]# cat /etc/fstab 
  2. # /etc/fstab 
  3. # Created by anaconda on Mon Sep  8 16:38:29 2014 
  4. # Accessible filesystems, by reference, are maintained under '/dev/disk' 
  5. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 
  6. /dev/mapper/cl-root     /                       xfs     defaults        1 1 
  7. UUID=f7755604-99f2-4d94-ab1a-47b14def7e26 /boot                   xfs     defaults        1 2    //Vevb.com 
  8. UUID=F159-EA55          /boot/efi               vfat    umask=0077,shortname=winnt 0 0 
  9. /dev/mapper/cl-data     /data                   xfs     defaults,noatime,nobarrier         1 2 
  10. /dev/mapper/cl-swap     swap                    swap    defaults        0 0 

按上面的方法修改后,重啟主機(jī),發(fā)現(xiàn)所有的掛載點都正常了.

二、使用udev調(diào)整磁盤順序

一天數(shù)據(jù)庫側(cè)的兄弟又問起sdb、sdc、sde多個磁盤名增加后會亂的問題,后來在自己的虛擬機(jī)上又嘗試使用udev解決該問題,參考snipplr網(wǎng)站,代碼如下:

  1. (make sure both devices are unmounted) 
  2. # cat /proc/partitions 
  3. # cd /dev 
  4. # rm sda,sdb 
  5. # mknod /dev/sda b # fill with major and minor devices obtained from /proc/partitions for sdb 
  6. # mknod /dev/sdb b 8 0 # verify these major, minor values for sda in /proc/partitions 
  7. # partprobe /dev/sda 
  8. # hdparm -z /dev/sda 
  9. # sfdisk -R /dev/sda 
  10. # blockdev --rereadpt /dev/sda 
  11. (repeat the last 4 commands for sdb) 
  12. Alternatively and to make it permanent: 
  13. create the file /etc/udev/rules.d/10-local.rules with the following content: 
  14. KERNEL=="sda", NAME="sdb" 
  15. KERNEL=="sdb", NAME="sda" 
  16. (end of file) 
  17. and then: 
  18. # service udev restart 
  19. # udevadm control --reload-rules 
  20. # udevadm trigger 

1、查看本機(jī)的磁盤,代碼如下:

  1. [root@localhost rules.d]# fdisk -l 
  2. Disk /dev/vda: 21.5 GB, 21474836480 bytes 
  3. 16 heads, 63 sectors/track, 41610 cylinders 
  4. Units = cylinders of 1008 * 512 = 516096 bytes 
  5. Sector size (logical/physical): 512 bytes / 512 bytes 
  6. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  7. Disk identifier: 0x0001bcdb 
  8.    Device Boot      Start         End      Blocks   Id  System 
  9. /dev/vda1   *           3        1018      512000   83  Linux 
  10. Partition 1 does not end on cylinder boundary. 
  11. /dev/vda2            1018       41611    20458496   8e  Linux LVM 
  12. Partition 2 does not end on cylinder boundary. 
  13. Disk /dev/vdb: 1073 MB, 1073741824 bytes 
  14. 16 heads, 63 sectors/track, 2080 cylinders 
  15. Units = cylinders of 1008 * 512 = 516096 bytes 
  16. Sector size (logical/physical): 512 bytes / 512 bytes 
  17. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  18. Disk identifier: 0x00000000 
  19. Disk /dev/vdc: 2147 MB, 2147483648 bytes 
  20. 16 heads, 63 sectors/track, 4161 cylinders 
  21. Units = cylinders of 1008 * 512 = 516096 bytes 
  22. Sector size (logical/physical): 512 bytes / 512 bytes 
  23. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  24. Disk identifier: 0x00000000 

可以看到一個大小為1G的vdb磁盤和一個大小為2G的vdc磁盤.

2、創(chuàng)建rule文件,在/etc/udev/rules.d/創(chuàng)建一個rule文件,具體內(nèi)容如下:

  1. # cat 10-local.rules 
  2. KERNEL=="vdb", NAME="vdc" 
  3. KERNEL=="vdc", NAME="vdb" 

3、使用udevadm命令重載rule文件,代碼如下:

  1. # udevadm control --reload-rules 
  2. # udevadm trigger 

4、再查看本地磁盤,代碼如下:

  1. [root@localhost ~]# fdisk -l 
  2. Disk /dev/vda: 21.5 GB, 21474836480 bytes 
  3. 16 heads, 63 sectors/track, 41610 cylinders 
  4. Units = cylinders of 1008 * 512 = 516096 bytes 
  5. Sector size (logical/physical): 512 bytes / 512 bytes 
  6. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  7. Disk identifier: 0x0001bcdb 
  8.    Device Boot      Start         End      Blocks   Id  System 
  9. /dev/vda1   *           3        1018      512000   83  Linux 
  10. Partition 1 does not end on cylinder boundary. 
  11. /dev/vda2            1018       41611    20458496   8e  Linux LVM 
  12. Partition 2 does not end on cylinder boundary. 
  13. Disk /dev/vdb: 2147 MB, 2147483648 bytes 
  14. 16 heads, 63 sectors/track, 4161 cylinders 
  15. Units = cylinders of 1008 * 512 = 516096 bytes 
  16. Sector size (logical/physical): 512 bytes / 512 bytes 
  17. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  18. Disk identifier: 0x00000000 
  19. Disk /dev/vdc: 1073 MB, 1073741824 bytes 
  20. 16 heads, 63 sectors/track, 2080 cylinders 
  21. Units = cylinders of 1008 * 512 = 516096 bytes 
  22. Sector size (logical/physical): 512 bytes / 512 bytes 
  23. I/O size (minimum/optimal): 512 bytes / 512 bytes 
  24. Disk identifier:0x00000000 

再查看發(fā)現(xiàn)vdb變成了2G,vdc變成了1G大小.

三、udev規(guī)則相關(guān)

1、udev規(guī)則操作符

“==”:比較鍵、值,若等于,則該條件滿足.

“!=”:比較鍵、值,若不等于,則該條件滿足.

“=”:對一個鍵賦值.

“+=”:為一個表示多個條目的鍵賦值.

“:=”:對一個鍵賦值,并拒絕之后所有對該鍵的改動,目的是防止后面的規(guī)則文件對該鍵賦值.

2、udev規(guī)則的匹配鍵

ACTION:事件(uevent)的行為,例如:add(添加設(shè)備)、remove(刪除設(shè)備).

KERNEL:內(nèi)核設(shè)備名稱,例如:sda,cdrom.

DEVPATH:設(shè)備的 devpath 路徑.

SUBSYSTEM:設(shè)備的子系統(tǒng)名稱,例如:sda 的子系統(tǒng)為 block.

BUS:設(shè)備在 devpath 里的總線名稱,例如:usb.

DRIVER:設(shè)備在 devpath 里的設(shè)備驅(qū)動名稱,例如:ide-cdrom。

ID:設(shè)備在 devpath 里的識別號。

SYSFS{filename}:設(shè)備的 devpath 路徑下,設(shè)備的屬性文件“filename”里的內(nèi)容.

ENV{key}:環(huán)境變量,在一條規(guī)則中,可以設(shè)定最多五條環(huán)境變量的 匹配鍵.

PROGRAM:調(diào)用外部命令.

RESULT:外部命令 PROGRAM 的返回結(jié)果.

3、udev重要的賦值鍵

NAME:在 /dev下產(chǎn)生的設(shè)備文件名。只有第一次對某個設(shè)備的 NAME 的賦值行為生效,之后匹配的規(guī)則再對該設(shè)備的 NAME 賦值行為將被忽略。如果沒有任何規(guī)則對設(shè)備的 NAME 賦值,udev 將使用內(nèi)核設(shè)備名稱來產(chǎn)生設(shè)備文件。

SYMLINK:為 /dev/下的設(shè)備文件產(chǎn)生符號鏈接,由于 udev 只能為某個設(shè)備產(chǎn)生一個設(shè)備文件,所以為了不覆蓋系統(tǒng)默認(rèn)的 udev 規(guī)則所產(chǎn)生的文件,推薦使用符號鏈接.

OWNER,GROUP,MODE:為設(shè)備設(shè)定權(quán)限.

ENV{key}:導(dǎo)入一個環(huán)境變量

4、udev 的值和可調(diào)用的替換操作符.

$kernel,%k:設(shè)備的內(nèi)核設(shè)備名稱,例如:sda、cdrom.

$number,%n:設(shè)備的內(nèi)核號碼,例如:sda3 的內(nèi)核號碼是 3.

$devpath,%p:設(shè)備的 devpath路徑.

$id,%b:設(shè)備在 devpath里的 ID 號.

$sysfs{file},%s{file}:設(shè)備的 sysfs里 file 的內(nèi)容,其實就是設(shè)備的屬性值.

例如:$sysfs{size} 表示該設(shè)備(磁盤)的大小.

  1. $env{key}, %E{key}:一個環(huán)境變量的值。 
  2. $major, %M:設(shè)備的 major 號。 
  3. $minor %m:設(shè)備的 minor 號。 
  4. $result, %c:PROGRAM 返回的結(jié)果。 
  5. $parent, %P:父設(shè)備的設(shè)備文件名。 
  6. $root, %r:udev_root的值,默認(rèn)是 /dev/。 
  7. $tempnode, %N:臨時設(shè)備名。 
  8. %%:符號 % 本身。 
  9. $$:符號 $ 本身。 

四、udevadm與rule

通過udevadm查看磁盤或分區(qū)信息,代碼如下:

  1. [root@localhost rules.d]# udevadm info -a -p  /sys/block/vdb 
  2. Udevadm info starts with the device specified by the devpath and then 
  3. walks up the chain of parent devices. It prints for every device 
  4. found, all possible attributes in the udev rules key format. 
  5. A rule to match, can be composed by the attributes of the device 
  6. and the attributes from one single parent device. 
  7.   looking at device '/devices/pci0000:00/0000:00:06.0/virtio3/block/vdb': 
  8.     KERNEL=="vdb" 
  9.     SUBSYSTEM=="block" 
  10.     DRIVER=="" 
  11.     ATTR{range}=="16" 
  12.     ATTR{ext_range}=="16" 
  13.     ATTR{removable}=="0" 
  14.     ATTR{ro}=="0" 
  15.     ATTR{size}=="2097152" 
  16.     ATTR{alignment_offset}=="0" 
  17.     ATTR{discard_alignment}=="0" 
  18.     ATTR{capability}=="10" 
  19.     ATTR{stat}=="     276       13     2312        8        0        0        0        0        0        8        8" 
  20.     ATTR{inflight}=="       0        0" 
  21.     ATTR{serial}=="" 
  22.   looking at parent device '/devices/pci0000:00/0000:00:06.0/virtio3': 
  23.     KERNELS=="virtio3" 
  24.     SUBSYSTEMS=="virtio" 
  25.     DRIVERS=="virtio_blk" 
  26.     ATTRS{device}=="2" 
  27.     ATTRS{vendor}=="6900" 
  28.     ATTRS{status}=="0x00000007" 
  29.     ATTRS{modalias}=="virtio:d00000002v00001AF4" 
  30.     ATTRS{features}=="0010101101100000000000000000110000000000000000000000000000000000" 
  31.   looking at parent device '/devices/pci0000:00/0000:00:06.0': 
  32.     KERNELS=="0000:00:06.0" 
  33.     SUBSYSTEMS=="pci" 
  34.     DRIVERS=="virtio-pci" 
  35.     ATTRS{vendor}=="0x1af4" 
  36.     ATTRS{device}=="0x1001" 
  37.     ATTRS{subsystem_vendor}=="0x1af4" 
  38.     ATTRS{subsystem_device}=="0x0002" 
  39.     ATTRS{class}=="0x010000" 
  40.     ATTRS{irq}=="11" 
  41.     ATTRS{local_cpus}=="1" 
  42.     ATTRS{local_cpulist}=="0" 
  43.     ATTRS{modalias}=="pci:v00001AF4d00001001sv00001AF4sd00000002bc01sc00i00" 
  44.     ATTRS{numa_node}=="-1" 
  45.     ATTRS{enable}=="1" 
  46.     ATTRS{broken_parity_status}=="0" 
  47.     ATTRS{msi_bus}=="" 
  48.   looking at parent device '/devices/pci0000:00': 
  49.     KERNELS=="pci0000:00" 
  50.     SUBSYSTEMS=="" 
  51.     DRIVERS=="" 

如有多塊磁盤,其中又有大小相同的,可以通過其他條件進(jìn)行區(qū)分,如rules里可以這樣寫:

  1. SUBSYSTEM=="block", ATTR{size}=="234441648", NAME="my_hard_disk" 
  2. SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}=="ST3120827AS", NAME="my_hard_disk" 
  3. KERNEL=="sda1" ATTR{size}=="2096753"  NAME="asm_ocr" 

注:一些老版本的udev里包里沒有udevadm,使用的是udevinfo命令.

五、uedv與asm 磁盤rule

1、scsi_id 獲取磁盤UUID,代碼如下:

  1. [root@localhost ~]# /sbin/scsi_id -g -u /dev/sdb 
  2. 3690b11c0002be80e00000ce3514380db 
  3. [root@localhost ~]# /sbin/scsi_id -g -u /dev/sdc 
  4. 3690b11c0002be80e00000ce5514380f8 
  5. [root@localhost ~]# /sbin/scsi_id -g -u /dev/sdd 
  6. 3690b11c0002be80e00000ce75143810c 
  7. //Vevb.com 

新版本中的scsi_id命令位于/usr/lib/udev/scsi_id.

2、asm rule規(guī)則,代碼如下:

  1. #cat /etc/udev/rules.d/99-Oracle-asmdevices.rules 
  2. KERNEL=="sd?1",BUS="scsi",PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", 
  3. RESULT=="3690b11c0002be80e00000ce3514380db", 
  4. NAME="asm-crs01", OWNER="grid",GROUP="asmadmin",MODE="0660" 
  5. KERNEL=="sd?1",BUS="scsi",PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", 
  6. RESULT=="3690b11c0002be80e00000ce5514380f8", 
  7. NAME="asm-data01", OWNER="grid",GROUP="asmadmin",MODE="0660" 
  8. KERNEL=="sd?1",BUS="scsi",PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", 
  9. RESULT=="3690b11c0002be80e00000ce75143810c", 
  10. NAME="asm-data02", OWNER="grid",GROUP="asmadmin",MODE="0660" 

3、重啟udev服務(wù),代碼如下:

  1. [root@localhost rules.d]# /sbin/partprobe /dev/sdb1 
  2. [root@localhost rules.d]# /sbin/partprobe /dev/sdc1 
  3. [root@localhost rules.d]# /sbin/partprobe /dev/sdd1 
  4. [root@localhost rules.d]# /sbin/start_udev 

4、查看asm設(shè)備,代碼如下:

  1. [root@localhost rules.d]# ll /dev/asm* 
  2.  brw-rw----. 1 root root 8, 17 3月  27 11:30 /dev/asm-crs01 
  3.  brw-rw----. 1 root root 8, 33 3月  27 11:30 /dev/asm-data01 
  4.  brw-rw----. 1 root root 8, 49 3月  27 11:30 /dev/asm-data02 

在centos7/redhat7 版本中的udev已不再單獨是一個包,而是在systemd包中包含了udev工具,rule規(guī)則除了/etc/udev/rules.d目錄,還有/usr/lib/udev/rules.d/ 目錄.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉峪关市| 班玛县| 康保县| 鹰潭市| 政和县| 柳江县| 裕民县| 阳城县| 彭阳县| 大竹县| 张家港市| 特克斯县| 武夷山市| 威信县| 东城区| 柳河县| 晋城| 化德县| 丰台区| 文昌市| 阳朔县| 福建省| 宜黄县| 古交市| 台中县| 凭祥市| 句容市| 井陉县| 濮阳县| 阿拉善右旗| 兰溪市| 焉耆| 宜城市| 桐乡市| 新津县| 汉中市| 洪雅县| 章丘市| 西宁市| 甘孜| 上饶县|