ubuntu 설치후 저장소 용량이 부족할대, VML 확장

df, du 정보가 설치된 저장소 용량보다 작게 나온다.
lsblk, fdisk -l 과 같은 명령어로 보면 설치된 저장소 용량이 모두 나온다.

  • LVM

우분투를 설치할때 LVM이라는 녀석을 설정하게 되는데 이걸 잘못설정하면 설치된 저장소 용량의 50% 가량밖에 사용을 못하는 상황이 발생한다.

LVM 설정하는 방법을 찾아보면 너무 자료가 어렵다.

# 최대 사이즈로 my_LV 확장
$ sudo lvextend -l +100%FREE /dev/my_LV

# 확장된 LV적용
$ sudo resize2fs /dev/my_LVCode language: PHP (php)

위의 코드면 다 해결된다.

보통의 경우는
PV( physical volume )을 새로 생성하고
VG( volume group )을 만들어서 PV를 넣고
LV( logical volume )을 그 안에 만들어서
컨트롤 하는 과정을 따르기 때문에

엄청나게 복잡해 보이는데

사실 설치당시 잘못 설치를 해서
LV만을 조금 할당받은 경우라면
PV와 VG는 모두 최대 크기로
잘 설정되어있을 확률이 크다.

확인하기 위해서
pvdisplay, vgdisplay를 입력해보면
내가 사서 꼽은
그 저장장치의 스펙이 보일 것이다.

그러면 위의 lvextend만 해주면
lv를 최대로 늘릴 수 있다.
PV, VG, LV 모두 설정을 해야하는 상황이라면
hiseon.me/linux/lvm-configuration/

위의 블로그를 참고하길 바란다.

리눅스 명령어 위치 확인

1. 방법 1: type

리눅스 type 문서를 참고,

[root@localhost ~]# type ifconfig
ifconfig is /sbin/ifconfigCode language: PHP (php)
[root@localhost ~]# type cd
cd is a shell builtinCode language: CSS (css)
[root@localhost ~]# type which
which is aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'Code language: PHP (php)

2. 방법 2: witch

리눅스 witch 문서 참고,

[root@localhost ~]# which ifconfig
/sbin/ifconfigCode language: PHP (php)
[root@localhost ~]# which httpd
/usr/sbin/httpdCode language: PHP (php)

ifconfig는 /sbin에, httpd는 /usr/sbin에 설치되어 있다.

3. 방법 3: whereis

[root@localhost ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gzCode language: PHP (php)
[root@localhost ~]# whereis httpd
httpd: /usr/sbin/httpd /usr/sbin/httpd.worker /usr/sbin/httpd.event /etc/httpd /usr/lib64/httpd /usr/include/httpd /usr/share/man/man1/httpd.1.gz /usr/share/man/man8/httpd.8.gzCode language: PHP (php)

4. 방법 4: find

  • 실제 명령어가 아닌 다른 파일을 찾게 될 수도 있다.
  • 모든 폴더를 다 찾아보기 때문에 위 방법들에 비해 오래 걸린다.
[root@localhost ~]# find / -name ifconfig
/sbin/ifconfigCode language: PHP (php)

참고

http://en.wikipedia.org/wiki/Which_(Unix)
http://en.wikipedia.org/wiki/Whereis

Lightsail 브라우저 SSH 연결 안되는 현상

언제부턴가 AWS의 Lightsail 관리콘솔의 WEB환경 SSH 접속이 안되었다.

Lightsail의 SSH는 콘솔이나 전용프로그램으로 접속하였기에 크게 신경쓰지는 않았지만 혹시 Web으로 접속할 일이 있을수도 있고 정상적으로 접속되던것이 갑자기 안되어서 찝찝한 느낌도 있었다.

우선 오류가 발생할때 접속로그를 살펴보았다.

$ cat /var/log/auth.log|tail
systemd: pam_unix(systemd-user:session): session opened for user ubuntu by (uid=0)
sshd[20690]: userauth_pubkey: certificate signature algorithm ssh-rsa: signature algorithm not supported [preauth]
sshd[20690]: Connection closed by authenticating user ubuntu 000.000.000.000 port 00000 [preauth]Code language: JavaScript (javascript)

이 문제는 Lightsail의 ubuntu를 18.04 LTS 에서 20.04 LTS로 업그레이드 후 부터 발생되었고 Ubuntu 20.04 LTS에 포함된 OpenSSH 8.2 부터는 보안 문제로 SHA-1기반 ssh-rsa가 기분 CA Signature항목에서 빠지면서 이러한 문제가 발생하게 된다고 한다.

https://ibug.io/blog/2020/04/ssh-8.2-rsa-ca/

참고

위 링크에서 제안대로 sshd의 설정파일에 CASignatureAlgorithms 항목을 추가하고 sshd를 재실항하면 문제가 해결된다.

$ cat /etc/ssh/sshd_config|tail
...
# Use RSA CA cert.
# https://ibug.io/blog/2020/04/ssh-8.2-rsa-ca/
CASignatureAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
Code language: PHP (php)

sshd 재실행은 아래 명령어중 하나를 사용하면 된다.

1. $ sudo systemctl restart ssh
2. $ /etc/init.d/ssh restart
3. $ service ssh restart

윈도우 cmd에서 path 환경변수 설정 방법법

윈도우에서 path 환경변수를 등록하는 방법은

1. 윈도우키 + Pause

2. Environment Variables…


하지만 bat파일같은것을 만들어서 command 창으로 설정하고 싶을때가 있다.

  1. CTRL + R (실행)
  2. cmd

path
현재 환경변수 출력

set path
path명령과 동일한 현재 환경변수 정보와 pathext라는 시스템 실행파일 확장자 변수가 같이 나온다.

set path = %path%;추가하고자하는경로;
ex) set path=%path%;c:\java\bin;
환경변수가 일시적으로 추된다.

setx path
ex) setx path %path%;c:\java\bin;
환경변수가 영구적으로 추가된다.

%path% 를 하는 이유는 현재 환경변수에 path정로를 가져와서 뒤에 새로운 환경변수를 추가하기 때문이다.


P.S

echo 명령어를 사용하면 %%를 이용하여 모든 환경변수 내용을 확인할 수 있다.

ex) echo %os%

CodeFirst에서 Column 순서 설정

0부터 시작하는 Order 속성을 사용하여 열 순서를 설정할 수 있습니다.

기본 규칙에 따라 PK 열이 먼저 온 다음 Entity Class에서 해당 속성의 순서에 따라 나머지 열이 표시됩니다.

using System.ComponentModel.DataAnnotations.Schema;

public class Student
{
    [Column(Order = 0)]
    public int StudentID { get; set; }
    
    [Column("Name", Order = 1)]
    public string StudentName { get; set; }
    
    [Column("DoB", Order = 5)]
    public DateTime DateOfBirth { get; set; }
    [Column(Order = 3)]
    public byte[] Photo { get; set; }
    [Column(Order = 2)]
    public decimal Height { get; set; }
    [Column(Order = 4)]
    public float Weight { get; set; }
}
Code language: C# (cs)