Linux HotSwap 사용하기
컴퓨터 하드웨어가 발달하면서 기존 서버시스템의 기능을 데스크탑에서도 사용할 수 있게 되었다. 그중에 하나가 Hot Swap 이다. 스토리지(Storage) 를 컴퓨터를 끄지 않고도 교체할 수 있는게 Hot Swap 기능이다.
BIOS 설정
Hot Swap 을 이용하기 위해서는 BIOS 에 기능을 활성화 해줘야 한다. 제조사마다 BIOS 설정 메뉴가 다르지만 내가 사용하는 메인보드의 경우에는 다음과 같이 설정이 가능하다.
Hot Plug 라고 이름이 다르지만 이것이 Hot Swap 이다. 만을 BlOS 에서 이 메뉴가 없다면 메인보드에서 Hot Swap 기능을 제공하지 않는 것이다.
Linux 에서 사용하기
대부분의 최근의 Linux 커널에서는 Hot Swap 를 지원 한다. 별다른 설정없이 리눅스 배포판이라면 모두 사용이 가능하도록 되어 있다. 먼저 작동하고 있는 Disk 하나를 예를들어 Hot Swap 을 사용해보자.
먼저 다음과 같이 Disk 의 파워를 꺼야 한다. 이는 Disk 꺼내기 위한 것으로 전원을 끄지 않고 갑자기 꺼내버리면 Disk 가 파손될 우려가 있기 때문에 파워를 꺼야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 5.5T 0 disk sdb 8:16 0 5.5T 0 disk └─sdb1 8:17 0 5.5T 0 part sdc 8:32 0 7.3T 0 disk sdd 8:48 0 5.5T 0 disk nvme0n1 259:0 0 232.9G 0 disk ├─nvme0n1p1 259:1 0 256M 0 part /boot/efi ├─nvme0n1p2 259:2 0 1G 0 part /boot ├─nvme0n1p3 259:3 0 211.6G 0 part / └─nvme0n1p4 259:4 0 20G 0 part [SWAP] ]# echo 1 > /sys/block/sdc/device/delete # Disk 끄기 ]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 5.5T 0 disk sdb 8:16 0 5.5T 0 disk └─sdb1 8:17 0 5.5T 0 part sdd 8:48 0 5.5T 0 disk nvme0n1 259:0 0 232.9G 0 disk ├─nvme0n1p1 259:1 0 256M 0 part /boot/efi ├─nvme0n1p2 259:2 0 1G 0 part /boot ├─nvme0n1p3 259:3 0 211.6G 0 part / └─nvme0n1p4 259:4 0 20G 0 part [SWAP] |
sdc 디스크에 대해서 파워를 끄도록 한 명령어다. 커널 파라메터 설정으로 파워를 끄게 된다. 그렇게되면 lsblk 명령어로 디스크가 안보이게 된다. 그리고 커널 메시지에 다음과 같이 표시 된다.
1 2 3 |
[ 1048.952001] sd 8:0:0:0: [sdc] Synchronizing SCSI cache [ 1048.952727] sd 8:0:0:0: [sdc] Stopping disk [ 1049.752955] ata9.00: disabled |
이제 하드디스크를 꺼내고 새로운 하드 디스크를 장착하면 된다. 새로운 하드 디스크를 장착하게 되면 최근의 리눅스 커널에서 자동으로 새로운 하드 디스크를 알아 차린다. 이 내용은 커널 메시지로 다음과 같이 나온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[ 1147.078762] ata9: SATA link down (SStatus 0 SControl 300) [ 1173.377021] ata9: softreset failed (device not ready) [ 1175.292989] ata9: SATA link up 6.0 Gbps (SStatus 133 SControl 300) [ 1175.307448] ata9.00: ATA-10: WDC WD80EAZZ-00BKLB0, 80.00A80, max UDMA/133 [ 1175.307943] ata9.00: 15628053168 sectors, multi 16: LBA48 NCQ (depth 32), AA [ 1175.308721] ata9.00: configured for UDMA/133 [ 1175.308862] scsi 8:0:0:0: Direct-Access ATA WDC WD80EAZZ-00B 0A80 PQ: 0 ANSI: 5 [ 1175.309078] sd 8:0:0:0: Attached scsi generic sg2 type 0 [ 1175.309176] sd 8:0:0:0: [sdc] 15628053168 512-byte logical blocks: (8.00 TB/7.28 TiB) [ 1175.309214] sd 8:0:0:0: [sdc] 4096-byte physical blocks [ 1175.309248] sd 8:0:0:0: [sdc] Write Protect is off [ 1175.309277] sd 8:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 1175.309298] sd 8:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1175.330483] sd 8:0:0:0: [sdc] Attached SCSI disk |
lsblk 로 보면 새로운 디스크가 인식된게 보이게 된다.
만약 이렇게 자동으로 디스크가 인식되지 않는다면 SCSI 디스크 ReScan 기능을 이용해야 한다. Hot Swap 은 SCSI 의 host 번호를 이용해 작동됨으로 SCSI host 번호를 알아야 한다. 하지만 리눅스에서는 /dev/sdc 형식인데 SCSI host 번호와는 다른데, 다음과 같이 알아내야 한다.
1 2 3 4 5 |
]# ls -l /sys/block/ | grep sd lrwxrwxrwx 1 root root 0 Sep 29 00:12 sda -> ../devices/pci0000:00/0000:00:01.3/0000:02:00.1/ata5/host4/target4:0:0/4:0:0:0/block/sda lrwxrwxrwx 1 root root 0 Sep 29 2023 sdb -> ../devices/pci0000:00/0000:00:01.3/0000:02:00.1/ata6/host5/target5:0:0/5:0:0:0/block/sdb lrwxrwxrwx 1 root root 0 Sep 29 00:16 sdc -> ../devices/pci0000:00/0000:00:01.3/0000:02:00.2/0000:03:06.0/0000:08:00.0/ata9/host8/target8:0:0/8:0:0:0/block/sdc lrwxrwxrwx 1 root root 0 Sep 29 00:12 sdd -> ../devices/pci0000:00/0000:00:01.3/0000:02:00.2/0000:03:06.0/0000:08:00.0/ata10/host9/target9:0:0/9:0:0:0/block/sdd |
위 결과에서 중간에 host4, host5 가 바로 SCSI host 번호 이다. 이렇게 확인된 SCSI host 번호를 이용해서 ReScan 하도록 다음과 같이 할 수 있다.
1 |
echo "- - -" > /sys/class/scsi_host/host8/scan |
이렇게 수동으로 ReScan 를 하게 되며 하드 디스크를 인식하게 된다.
- Camera: SM-F711N
- Focal length: 4.25mm
- ISO: 640
- Shutter speed: 1/30s