更新時刻はdi.cgiから取得してください。

hns - 日記自動生成システム - Version 2.19.5

予定 TODO Link
    • 99 Loquiの開発を進める
    • 30 GnoWavCutをGtk2化する
    • 10 HNSのリファクタリング

    先月 2009年07月
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    HNS logo

    2008年10月20日(月) [n年日記]

    #1 LinuxでSATA HDDのhotswapとデバイス名設定

    ツクモにnakedという裸のままSATAディスクを挿入できるケースがあるので、 これをLinuxで活用する方法。やることは主に2点。

    lsscsiによるID確認:

    lsscsiでIDを確認する。
    # lsscsi
    [0:0:0:0]    disk    ATA      ST3320613AS      SD22  /dev/sda
    [2:0:0:0]    disk    ATA      ST3320613AS      SD22  /dev/sdb
    [3:0:0:0]    disk    ATA      WDC WD2500JS-22M 02.0  /dev/sdc
    [4:0:0:0]    cd/dvd  MATSHITA DVD-RAM LF-M721  APM1  /dev/scd0
    
    以下のようなメッセージがでたので、ubuntu intrepidなのにsidのパッケージを入れて0.19 -> 0.21としている。
    sdev_scandir_sort: left parse failed
    sdev_scandir_sort: right parse failed
    sdev_scandir_sort: left parse failed
    sdev_scandir_sort: left parse failed
    sdev_scandir_sort: right parse failed
    

    scsiadd -rによる取り外し:

    今回取り外したいのは/dev/sdcなので、以下の通りscsiaddコマンドを実行する。
    # scsiadd -r 3 0 0 0
    
    これで取り外し可能になる。初回は、ちゃんと止まっていることをdmesgで確認したほうがいいかも。
    [86029.176586] sd 3:0:0:0: [sdc] Synchronizing SCSI cache
    [86029.179954] sd 3:0:0:0: [sdc] Stopping disk
    [86029.181469] ata4.00: disabled
    

    scsiadd -aによる装着:

    scsiadd -rにより外してしまっても、scsiadd -aを実行すれば再度認識する。
    # scsiadd -a 3 0 0 0
    

    udevのルール記述:

    ここで、3:0:0:0のディスクを/dev/nakedにしてしまうことにする。 それにはまず、udevinfoでudevのルールを記述するための情報を探す。 udevinfo -q path -n <device>によりsysfsのパスを表示し、udevinfo -a -q <sysfs-path>による詳細情報を得る。
    $ udevinfo -q path -n /dev/sdc
    /devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc
    $ udevinfo -a -p /devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc
    (略)
      looking at device '/devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc':
        KERNEL=="sdc"
        SUBSYSTEM=="block"
    (略)
      looking at parent device '/devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0':
        KERNELS=="3:0:0:0"
        SUBSYSTEMS=="scsi"
    (略)
    
    以上の情報から、udevのルールを記述する。
    # vi /etc/udev/rules.d/30-naked-hdd.rules
    SUBSYSTEM=="block", SUBSYSTEMS=="scsi", KERNELS=="3:0:0:0", NAME="naked%n", SYMLINK+="%k"
    
    udevadm testにより、このルールが認識されていることを確認する。
    # udevadm test /devices/pci0000:00/0000:00:11.0/host3/target3:0:0/3:0:0:0/block/sdc
    (略)
    update_link: 'sdc' with target 'naked' has the highest priority 0, create it
    (略)
    
    あとは、udevadm control --reload_rulesで更新する(udevadm triggerも必要かも)。
    # udevadm control --reload_rules
    
    これにより、/dev/nakedが作成されればOK.
    $ ls -l /dev/naked*
    brw-rw---- 1 root disk 8, 32 2008-10-20 22:08 /dev/naked
    brw-rw---- 1 root disk 8, 33 2008-10-20 22:08 /dev/naked1
    # fdisk -l /dev/naked
    
    Disk /dev/naked: 250.0 GB, 250059350016 bytes
    255 heads, 63 sectors/track, 30401 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x615a3876
    
         Device Boot      Start         End      Blocks   Id  System
    /dev/naked1               1       30401   244196001    7  HPFS/NTFS
    
    udevのルールをうまく書けば接続時マウントも可能だと思う。

    udevinfoコマンドとscsiadd -r:

    lsscsiコマンドでIDを取ってもいいが、udevinfo -q envでもとれる。
    # udevinfo -q env -n /dev/naked
    ID_VENDOR=ATA
    ID_MODEL=WDC_WD2500JS-22M
    ID_REVISION=02.0
    ID_SERIAL=1ATA_WDC_WD2500JS-22MHB0_WD-WCANK2808749
    ID_SERIAL_SHORT=ATA_WDC_WD2500JS-22MHB0_WD-WCANK2808749
    ID_TYPE=disk
    ID_BUS=scsi
    ID_ATA_COMPAT=WDC_WD2500JS-22MHB0_WD-WCANK2808749
    ID_PATH=pci-0000:00:11.0-scsi-3:0:0:0
    # udevinfo -q env -n /dev/naked | sed -ne 's/^ID_PATH=.*-scsi-\([0-9:]*\)$/\1/p'| sed -e 's/:/ /g'
    3 0 0 0
    
    あとは、わかるな?

    以上、1 日分です。
    タイトル一覧
    カテゴリ分類
    Powered by hns-2.19.5/hns-lite-2.19.5, HyperNikkiSystem Project